Appearance
Ollama+LanceDB本地向量记忆配置指南:4步配置+4个踩坑实录
用过AI的人都遇到过这个问题:聊了半小时交代了背景,下一次对话它就全忘了。云端向量数据库能解决,但隐私顾虑、额度限制、费用都是坎。这套方案:Ollama + LanceDB,本地运行,隐私安全,不花一分钱。
为什么是Ollama + LanceDB
| 组件 | 说明 |
|---|---|
| Ollama | macOS上跑本地大模型最简单的方式,一行命令启动,不需要配置CUDA、Python环境 |
| LanceDB | 专为本地设计的向量数据库,轻量、嵌入OpenClaw生态,开箱即用 |
两者结合,你的AI对话会被自动编码成向量存入本地。下次对话时,OpenClaw自动Recall相关记忆——这件事发生在你的硬盘上,不经过任何云服务。
第一步:安装Ollama和模型
bash
# 安装 Ollama
brew install ollama
# 启动服务(注意:这步经常被忽略)
ollama serve
# 安装对话模型
ollama pull gemma3:12b
# 安装向量embedding模型
ollama pull nomic-embed-text第二步:配置Ollama Provider
⚠️ 禁止手动编辑JSON配置文件——OpenClaw有配置校验,不合法的配置会被秒级回滚。
必须用CLI命令:
bash
openclaw config set models.providers.ollama.apiKey "ollama-local"
openclaw config set models.providers.ollama.api "ollama"
openclaw models set ollama/gemma3:12b不需要手动设置baseUrl,OpenClaw默认用http://localhost:11434。
第三步:启用LanceDB插件
bash
# 指定 memory 插槽用 lancedb
openclaw config set plugins.slots.memory "memory-lancedb"
openclaw config set plugins.entries.memory-lancedb.enabled true
# 配置 embedding(关键!baseUrl 必须加 /v1)
openclaw config set plugins.entries.memory-lancedb.config.embedding.baseUrl "http://localhost:11434/v1"
openclaw config set plugins.entries.memory-lancedb.config.embedding.model "nomic-embed-text"
openclaw config set plugins.entries.memory-lancedb.config.embedding.dimensions 768
# 关闭 memory-core,避免插件冲突
openclaw config set plugins.entries.memory-core.enabled false第四步:重启Gateway
bash
kill $(lsof -ti :18789)
launchctl load -w ~/Library/LaunchAgents/ai.openclaw.gateway.plist验证是否正常
bash
# 检查插件状态
openclaw plugins list | grep memory
# 验证 embedding API
curl -X POST http://localhost:11434/v1/embeddings \
-H "Content-Type: application/json" \
-d '{"model":"nomic-embed-text","input":"hello"}'
# 应返回 768 维向量
# 检查 LanceDB 目录
ls ~/.openclaw/memory/lancedb/4个踩坑实录
坑1:手动编辑JSON → 配置被秒级回滚
| 项目 | 内容 |
|---|---|
| 现象 | 直接修改openclaw.json,Gateway重启后配置消失 |
| 根因 | OpenClaw的配置校验会发现非法配置并自动撤销 |
| 教训 | 所有配置走openclaw config set,不碰JSON文件 |
坑2:embedding baseUrl没加/v1 → recall 404
| 项目 | 内容 |
|---|---|
| 现象 | LanceDB recall一直报404 |
| 根因 | 主模型API和embedding API是两回事 |
| 教训 | 主模型/api/chat不能用/v1,但embedding必须用/v1/embeddings |
主模型端点:http://localhost:11434/api/chat(不能用/v1)
Embedding端点:http://localhost:11434/v1/embeddings(必须用/v1)坑3:遇到问题自己试了2小时 → 没有先查文档
| 项目 | 内容 |
|---|---|
| 现象 | 越试越乱,方向完全跑偏 |
| 教训 | 遇到问题先搜官方文档/教程,"先搜再动手"能省下大量时间 |
坑4:memory-core没关 → 两个插件冲突
| 项目 | 内容 |
|---|---|
| 现象 | recall行为异常,一会儿有一会儿没有 |
| 根因 | plugins.slots.memory同时只能用一个插件 |
| 教训 | 启用lancedb后,立刻把memory-core设为disabled |
小结
这套方案跑通后,你的AI对话会形成自动积累的长期记忆。每次对话结束,相关内容自动存入本地向量库;新对话来临时,自动召回最相关的那几条。
三大优势:
- ✅ 全程本地运行,数据不出硬盘
- ✅ 不花钱,不限额度
- ✅ 不牺牲隐私
配置就四步:装模型、配provider、启插件、重启。坑已经替你踩完了,照着走就行。
作者配置环境:M1 Pro 32GB macOS,OpenClaw Gateway + Ollama gemma3:12b + nomic-embed-text
