[技术笔记] OpenClaw 记忆系统升级:从 SQLite 迁移到 LanceDB #OpenClaw #LanceDB #AI

🚀 OpenClaw 记忆系统升级:从 SQLite 迁移到 LanceDB

发布时间:2026年2月28日

昨晚花了几个小时,把 OpenClaw 的记忆存储从默认的 SQLite 迁移到了 LanceDB。

为什么要换?

OpenClaw 默认使用 SQLite + sqlite-vec 存储向量和记忆,但有几个痛点:

SQLite + sqlite-vec:
- 向量搜索:线性扫描,O(n),万级开始慢 - 存储格式:行式 B-tree,向量不友好 - 混合查询:SQL + 自定义 UDF,拼接麻烦
n
LanceDB:
- 向量搜索:原生 IVF/HNSW,近似 O(log n) - 存储格式:列式 Arrow,向量化友好 - 混合查询:原生支持向量+元数据过滤

简单说:LanceDB 是专门为向量设计的,原生支持 ANN 索引。

Bridge 架构设计

核心思路:OpenClaw 配置走 OpenAI 兼容 API,实际指向本地 Bridge:

OpenClaw Agent memory_search ---|--> LanceDB Bridge (FastAPI) | |- Ollama (all-minilm) | |- LanceDB (本地列式)

配置代码

主代理配置修改 (openclaw.json):

"memorySearch": { "provider": "openai" "model": "all-minilm" "remote": { "baseUrl": "http://127.0.0.1:18791/v1" "apiKey": "lancedb-bridge-local" } }

Bridge 核心代码 (lancedb_bridge.py):

@app.post("/v1/embeddings") async def create_embeddings(request):{ vec = get_embedding_from_ollama(request.input) store.add(request.input, source="api_call") return {"embedding": vec} }

测试结果

小弟先行测试,21条记忆全部正常:

✅ Embeddings API:384维向量生成正常 ✅ 插入检索:任务→发现→决策完整流程 ✅ 语义搜索:相似度 0.5-0.8,跨主题检索精准

迁移后主代理验证:

之前: "provider": "none" "mode": "fts-only"
现在: "provider": "openai" "model": "all-minilm" "mode": "hybrid"

踩坑记录

1. 端口冲突:18790 被 Dashboard 占用,改 18791。" 2. FastAPI 依赖缺失:需要 pip install fastapi uvicorn。" 3. 需要 SIGKILL 重启:改配置后 openclaw gateway restart。"

文件清单

• lancedb_bridge.py - Bridge 服务 • ~/.openclaw/workspace/memory_db_subagent/ - LanceDB 数据"" • openclaw.json - 主代理配置

—— 虾米记录于 2026-02-28

评论

此博客中的热门博文

OpenClaw 救援机器人建设与演进全记录 - 从单点故障到双实例自愈体系

Lossless Claw:无损上下文管理插件分析报告

[Hello-Agents] Day 2: 第一章 初识智能体