最简单的语义检索方案,不用装 QMD,不用懂技术
你是不是有过这种经历——
想找一条"上次聊过的那个关于 XX 的想法",但 AI 说:"抱歉,我不知道你在说什么。"
不是 AI 记性差,是你没给它配语义检索。
今天教你怎么给 OpenClaw 的 memorysearch 配一个 embedding 模型,让它真正"理解"你在搜什么。
一、先搞清楚:memorysearch 是什么?
OpenClaw 的记忆系统分两层:
- 记忆文件:
MEMORY.md、memory/YYYY-MM-DD.md这些,是真正的记忆内容 - 检索引擎:当 AI 要找"你上周提到的那件事"时,靠的就是检索引擎
memorysearch 就是这个检索引擎的名字。
| 方式 | 原理 | 效果 |
|---|---|---|
| 关键词搜索(BM25) | 找包含完全相同文字的内容 | "缓存"能找到"缓存",找不到"Cache" |
| 语义搜索(Embedding) | 理解文字含义 | "缓存"能找到"Cache"、"临时存储器" |
| 混合搜索(Hybrid) | 关键词+语义各取所长 | 两者叠加,效果最好 |
语义搜索需要 embedding 模型。没有配,memorysearch 就只剩关键词一条腿走路。
二、两种方案,选一种
配 embedding 模型有两种方式:
方案一:在线 API(⭐ 最简单,推荐小白)
在配置里填 provider 和 model,OpenClaw 自动调用远程服务器。
支持的在线服务:
- OpenAI
text-embedding-3-small/text-embedding-3-large - Zhipu(智谱)
embedding-3 - SiliconFlow(硅基流动)
BAAI/bge-m3(免费额度很大)
优点: 一步配置完成,零安装,不需要跑任何本地服务 缺点: 需要 API Key,有少量调用费用(OpenAI 约 $0.02/百万token,SiliconFlow 免费)
方案二:本地 Ollama 模型
在本地跑一个 embedding 模型,完全免费,隐私好。
优点: 完全免费,数据不离开本机 缺点: 需要安装 Ollama 并下载模型(约几百 MB)
想最快用上 → 选方案一(在线 API) 想完全免费 → 选方案二(Ollama)
三、方案一配置:在线 API(三步搞定)
这是最简单的方式,不需要安装任何东西。
第一步:准备好 API Key
任选一个你有的在线 embedding 服务:
| 服务 | 模型 | 价格 | 获取地址 |
|---|---|---|---|
| SiliconFlow | BAAI/bge-m3 | 免费额度很大 | siliconflow.cn |
| OpenAI | text-embedding-3-small | $0.02/百万token | platform.openai.com |
| Zhipu | embedding-3 | 付费 | open.bigmodel.cn |
第二步:配置 openclaw.json
在 agents.defaults 下面添加 memorySearch 配置:
SiliconFlow 配置示例:
"agents": {
"defaults": {
"memorySearch": {
"provider": "openai",
"model": "BAAI/bge-m3",
"openaiBaseUrl": "https://api.siliconflow.cn/v1"
}
}
}
OpenAI 配置示例:
"agents": {
"defaults": {
"memorySearch": {
"provider": "openai",
"model": "text-embedding-3-small"
}
}
}
智谱配置示例:
"agents": {
"defaults": {
"memorySearch": {
"provider": "openai",
"model": "embedding-3",
"openaiBaseUrl": "https://open.bigmodel.cn/api/paas/v4"
}
}
}
提示:
provider填"openai"是因为这些服务都兼容 OpenAI 的 API 格式。
第三步:配置 API Key
确保你的 OPENAI_API_KEY 环境变量里有对应服务的 key:
# SiliconFlow
export OPENAI_API_KEY=sk-xxxxxxxxxxxx
# OpenAI
export OPENAI_API_KEY=sk-proj-xxxxxxxxxxxx
# 智谱
export OPENAI_API_KEY=xxxxxxxxxxxx
然后重启 OpenClaw:
openclaw gateway restart
验证
openclaw memory status --deep
看到 Provider: openai 和模型名就说明成功了。
四、方案二配置:本地 Ollama(五步搞定)
第一步:安装 Ollama
去 ollama.com,macOS 直接装客户端,Linux 一行命令:
curl -fsSL https://ollama.com/install.sh | sh
第二步:下载 embedding 模型
ollama pull gte-qwen2
gte-qwen2是目前最推荐给普通用户的——体积小(几百 MB)、速度快、中文支持好。
验证下载成功:
ollama list
能看到 gte-qwen2 就说明好了。
第三步:确保 Ollama 插件启用
打开 openclaw.json,确认插件开启:
"plugins": {
"entries": {
"ollama": {
"enabled": true
}
}
}
第四步:配置 memorySearch
"agents": {
"defaults": {
"memorySearch": {
"provider": "ollama",
"model": "gte-qwen2"
}
}
}
完整配置(含混合搜索优化):
"agents": {
"defaults": {
"memorySearch": {
"provider": "ollama",
"model": "gte-qwen2",
"query": {
"hybrid": {
"vectorWeight": 0.7,
"textWeight": 0.3,
"mmr": {
"enabled": true,
"lambda": 0.7
},
"temporalDecay": {
"enabled": true,
"halfLifeDays": 30
}
}
}
}
}
}
参数说明:
vectorWeight: 0.7— 语义搜索权重 70%textWeight: 0.3— 关键词搜索权重 30%mmr.enabled— 开启 MMR,防止返回重复结果temporalDecay— 时间衰减,新记忆排名更靠前
第五步:重启并验证
openclaw gateway restart
openclaw memory status --deep
看到类似输出就成功了:
Memory Search: ✅ enabled
Provider: ollama
Model: gte-qwen2
Hybrid: vector (0.7) + text (0.3)
五、配完之后的效果
语义联想
- 问:"上次说的那个关于缓存的问题"
- 配前:只能找包含"缓存"的内容
- 配后:能找到"Cache"、"临时缓冲区"、"临时存储器"
意图匹配
- 问:"帮我找找投资那只基金的事"
- 配前:只找"基金",你写的"买了点理财产品"找不到
- 配后:理解两者关联,都能找出来
知识发现
- 问:"我之前提到过哪些关于 AI 的想法?"
- 配后:AI 从零散的日记笔记里,把所有相关内容关联起来
六、常见问题
Q: 内存不够怎么办? A: gte-qwen2 非常轻量,4GB 内存就能跑。方案一(在线 API)完全不吃本地内存。
Q: 配了但没效果? A: 运行 openclaw memory status --deep,确认模型加载成功。检查 plugins.entries.ollama.enabled 是 true。
Q: SiliconFlow 免费额度够用吗? A: BAAI/bge-m3 每天有大量免费调用,普通用户聊天检索完全够用。
Q: 和 QMD 比,选哪个? A: embedding 模型做语义检索够用了。QMD 是给需要重排序、查询扩展、索引外部文件夹的高级用户准备的。
总结
两种方式,三件事搞定:
方案一(在线 API):
- 准备好 API Key
- 在
openclaw.json加几行配置 - 重启
方案二(本地 Ollama):
- 安装 Ollama,下载
gte-qwen2模型 - 在
openclaw.json加几行配置 - 重启
配完那一刻,你的 AI 就真正"读得懂"你说的话了 🦞
*配好了吗?试着问 AI 一句模糊的话,比如"上次聊的那个学习方法",感受一下什么叫语义检索。