介绍
# ChromaDB Memory
基于 ChromaDB 和本地 Ollama 嵌入的长期语义记忆。零云依赖。
## 功能
- **自动召回**:在每次代理轮次之前,使用用户消息查询 ChromaDB 并自动注入相关上下文 - **`chromadb_search` 工具**:在您的 ChromaDB 集合上进行手动语义搜索 - **100% 本地化**:使用 Ollama (nomic-embed-text) 进行嵌入,使用 ChromaDB 进行向量存储
## 前置条件
1. **ChromaDB** 正在运行(推荐使用 Docker): ```bash docker run -d --name chromadb -p 8100:8000 chromadb/chroma:latest ```
2. **Ollama** 并配置嵌入模型: ```bash ollama pull nomic-embed-text ```
3. ChromaDB 中的**索引文档**。使用任何兼容 ChromaDB 的索引器来填充您的集合。
## 安装
```bash # 1. Copy the plugin extension mkdir -p ~/.openclaw/extensions/chromadb-memory cp {baseDir}/scripts/index.ts ~/.openclaw/extensions/chromadb-memory/ cp {baseDir}/scripts/openclaw.plugin.json ~/.openclaw/extensions/chromadb-memory/
# 2. Add to your OpenClaw config (~/.openclaw/openclaw.json): ```
```json { "plugins": { "entries": { "chromadb-memory": { "enabled": true, "config": { "chromaUrl": "http://localhost:8100", "collectionName": "longterm_memory", "ollamaUrl": "http://localhost:11434", "embeddingModel": "nomic-embed-text", "autoRecall": true, "autoRecallResults": 3, "minScore": 0.5 } } } } } ```
```bash # 4. Restart the gateway openclaw gateway restart ```
## 配置选项
| 选项 | 默认值 | 描述 | |--------|---------|-------------| | `chromaUrl` | `http://localhost:8100` | ChromaDB 服务器 URL | | `collectionName` | `longterm_memory` | 集合名称(自动解析 UUID,支持重建索引) | | `collectionId` | — | 集合 UUID(可选回退) | | `ollamaUrl` | `http://localhost:11434` | Ollama API URL | | `embeddingModel` | `nomic-embed-text` | Ollama 嵌入模型 | | `autoRecall` | `true` | 每轮自动注入相关记忆 | | `autoRecallResults` | `3` | 每轮最大自动召回结果数 | | `minScore` | `0.5` | 最小相似度分数 (0-1) |
## 工作原理
1. 您发送一条消息 2. 插件通过 Ollama 嵌入您的消息(nomic-embed-text,768 维) 3. 查询 ChromaDB 以获取最近邻 4. 高于 `minScore` 的结果作为 `<chromadb-memories>` 注入到代理的上下文中 5. 代理根据相关的长期上下文进行回复
## Token 成本
自动召回在最坏情况下每轮大约增加 275 个 token(3 个结果 × ~300 字符 + 包装)。对于 200K+ 的上下文窗口,这可以忽略不计。
## 调优
- **噪音太大?** 将 `minScore` 提高到 0.6 或 0.7 - **缺少上下文?** 将 `minScore` 降低到 0.4,将 `autoRecallResults` 增加到 5 - **只想手动操作?** 设置 `autoRecall: false`,使用 `chromadb_search` 工具
## 架构
``` User Message → Ollama (embed) → ChromaDB (query) → Context Injection ↓ Agent Response ```
无需 OpenAI。无需云服务。您的记忆保留在您的硬件上。