From 68787a573b7a1be9772748688a384330cf234626 Mon Sep 17 00:00:00 2001 From: mini Date: Tue, 17 Feb 2026 17:33:58 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20v1.4=20-=20=E6=96=B0=E5=A2=9E=E8=AF=AD?= =?UTF-8?q?=E4=B9=89=E6=90=9C=E7=B4=A2=E5=8D=87=E7=BA=A7=E6=96=B9=E6=A1=88?= =?UTF-8?q?=EF=BC=88=E6=96=B9=E6=A1=88A=EF=BC=8C=E5=BE=85=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 状态:待执行,需要 OpenAI API Key - 内容:OpenAI text-embedding-3-large 配置步骤、费用估算、注意事项 - 标注与 QMD reranker 崩溃问题的关联风险 --- OpenClaw对话和记忆优化初步方案.md | 73 ++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/OpenClaw对话和记忆优化初步方案.md b/OpenClaw对话和记忆优化初步方案.md index 555d4a8..0a8cc3b 100644 --- a/OpenClaw对话和记忆优化初步方案.md +++ b/OpenClaw对话和记忆优化初步方案.md @@ -298,7 +298,7 @@ Before doing anything else: --- -*本文档由 Ami + 阿米狗共同研究整理,2026-02-17,v1.1 更新于同日,v1.2 QMD 修复记录追加于同日,v1.3 BM25 迁移记录追加于同日* +*本文档由 Ami + 阿米狗共同研究整理,2026-02-17,v1.1 更新于同日,v1.2 QMD 修复记录追加于同日,v1.3 BM25 迁移记录追加于同日,v1.4 语义搜索升级方案追加于同日* --- @@ -604,3 +604,74 @@ FROM documents_fts WHERE documents_fts MATCH '暗语' LIMIT 5; - 接入 OpenAI `text-embedding-3-large` API - 或使用 1B+ 参数的本地 GGUF embedding 模型 - 届时恢复混合搜索(BM25 + 向量),调整 `vectorWeight` / `textWeight` + +--- + +## 附录:语义搜索升级方案(方案 A)(v1.4) + +> 状态:**待执行**(需要 OpenAI API Key) +> 记录于 2026-02-17 + +### 背景 + +当前系统使用纯 BM25(`qmd search`)做记忆召回,精确关键词效果好,但无法处理语义模糊查询(如:记不住原话、换了说法搜不到)。 + +本地 300M embedding 模型(embeddinggemma-300M)质量不足以支撑语义搜索(已验证),`qmd query`(混合搜索)因 reranker 崩溃问题无法使用。 + +### 方案内容 + +将 OpenClaw 的 memory embedding provider 切换为 OpenAI,启用高质量向量索引。 + +#### 所需条件 + +- OpenAI API Key(`sk-...`) +- 有效配额(`text-embedding-3-large` 费率:$0.13 / 百万 tokens) + +#### 预计费用 + +个人使用场景下,MEMORY.md + memory/*.md + session 历史总量约几十万字符,每次全量重建索引消耗 < $0.01,日常增量更新接近免费。 + +#### 执行步骤 + +1. **修改 OpenClaw 配置** + +```json +{ + "agents": { + "defaults": { + "memorySearch": { + "enabled": true, + "provider": "openai", + "model": "text-embedding-3-large", + "remote": { + "apiKey": "sk-YOUR_KEY_HERE" + }, + "fallback": "none" + } + } + } +} +``` + +2. **切换 QMD wrapper 回混合搜索** + +修改 `/Users/mini/clawd/scripts/qmd-wrapper.sh`,将 `search` 改回 `vsearch` 或 `query`(待测试哪种与 OpenAI embedding 配合更好)。 + +3. **触发索引重建** + +```bash +# 手动触发 QMD 重新 embed 所有文档 +XDG_CACHE_HOME=~/.openclaw/agents/main/qmd/xdg-cache \ +XDG_CONFIG_HOME=~/.openclaw/agents/main/qmd/xdg-config \ +/Users/mini/.bun/bin/qmd embed +``` + +4. **验证** + +在新会话中搜索一段换了说法的内容(如用"账号合租"搜索"iShare"相关内容),确认语义命中。 + +#### 注意事项 + +- OpenClaw 的 `memorySearch` 与 `memory.backend: "qmd"` 是两套独立机制;配置后需验证 `provider` 显示为 `"openai"` 而非 `"qmd"` 才说明 embedding 生效 +- QMD 的 reranker 崩溃问题(chunk > 2062 tokens)是否依然存在需重新测试;如仍崩溃,`qmd-wrapper.sh` 应保持用 `vsearch` 替代 `query` +- API Key 请勿直接写入 `openclaw.json`(会明文存储在 `~/.openclaw/`),建议使用环境变量或 gateway `env.vars` 配置