深度解析:SQLite混合檢索(FTS5+向量)如何讓AI永不失憶)
NullClaw記憶系統(tǒng)深度解析SQLite混合檢索FTS5向量如何讓AI永不失憶【免費下載鏈接】nullclawFastest, smallest, and fully autonomous AI assistant infrastructure written in Zig項目地址: https://gitcode.com/gh_mirrors/nu/nullclawNullClaw是用 Zig 編寫的超輕量 AI 助手基礎設施它的記憶系統(tǒng)通過SQLite 混合檢索FTS5 全文搜索 向量相似度讓 AI 助手跨會話記住你。本文帶你快速看懂這套記憶系統(tǒng)的設計原理、9 階段檢索流水線與配置方法無需編程基礎。 為什么 AI 助手需要記憶系統(tǒng)普通聊天工具的 AI 每開一輪對話就失憶——你昨天告訴它的項目背景、偏好、決定它一概不記得。NullClaw 把長期記憶做成了一個可插拔子系統(tǒng)AI 助手可以主動調(diào)用工具存下重要信息再在之后的對話中回憶起來。這就是永不失憶的技術基礎。 核心賣點678 KB 靜態(tài)二進制、約 1 MB 內(nèi)存占用、2 ms 啟動記憶能力卻一點不少。? 記憶系統(tǒng)全景10 種可插拔引擎NullClaw 的所有子系統(tǒng)都是換配置不換代碼的 vtable 接口。記憶引擎Memory 接口內(nèi)置 10 種后端源碼位于 src/memory/engines/引擎適用場景SQLite默認零依賴單機FTS5 向量混合檢索Markdown人類可讀的純文本記憶PostgreSQL / Redis / ClickHouse規(guī)?;⒍喾展蚕鞮anceDB / Lucid本地向量數(shù)據(jù)庫場景LRU / API / None緩存型、外置 API 或無記憶對新手來說默認 SQLite 引擎就是最好的選擇——單文件數(shù)據(jù)庫、無需服務、檢索能力完整。 混合檢索三件套FTS5 向量 融合SQLite 引擎是整個記憶系統(tǒng)的大腦實現(xiàn)在 src/memory/engines/sqlite.zig。它由三塊能力拼成1?? 關鍵詞檢索FTS5 全文搜索BM25 打分啟動時自動建表核心的memories記憶表key / content / category / session_id 等字段外加一張 FTS5 虛擬表memories_fts見 sqlite.zig#L302-L304三個同步觸發(fā)器保證增/改/刪記憶時全文索引自動更新索引永不失真搜索時用BM25 算法排序——關鍵詞越精準匹配、文檔越短得分越高查詢詞會自動加引號并用 OR 連接避免特殊字符導致查詢失敗見 sqlite.zig#L1146-L1177索引損壞或分詞規(guī)則變化后一條rebuild命令即可全量重建對應nullclaw memory reindex。? 擅長精確術語、專有名詞、代碼、錯誤碼這類字面匹配。2?? 語義檢索向量相似度搜索每條記憶會被 Embedding 模型轉成向量存進兩張表sqlite.zig#L347-L360memory_embeddings記憶 key → 向量 BLOB與記憶級聯(lián)刪除embedding_cache內(nèi)容哈希 → 向量相同內(nèi)容不重復算 embedding省錢又提速。查詢時計算余弦相似度純 Zig 實現(xiàn)見 src/memory/vector/math.zig 與 src/memory/vector/store.zig。? 擅長意思相近但用詞不同的語義匹配比如問上次部署踩了什么坑能召回發(fā)布失敗的原因。3?? 融合排序兩路結果如何合二為一檢索流水線定義在 src/memory/retrieval/engine.zig#L34-L66共9 個階段依次執(zhí)行階段作用一句話解釋① 查詢擴展去停用詞、優(yōu)化 FTS5 查詢清洗你的問法② 關鍵詞檢索FTS5 BM25找字面相關③ 向量檢索余弦相似度找意思相關④ RRF 融合倒數(shù)排名融合兩路排名加權合并⑤ 相關性閾值過濾低分噪聲寧缺毋濫⑥ 時間衰減舊記憶降權新近的記憶更可信⑦ MMR 多樣性去重降冗避免 5 條結果說同一件事⑧ LLM 重排可選大模型精排懂語境的最終裁判⑨ 截斷返回 Top N控制上下文長度這種關鍵詞 向量雙路召回再加 RRF 融合的設計是業(yè)內(nèi)公認的混合檢索黃金組合FTS5 兜住精確匹配向量兜住語義理解誰也不吃虧。?? 最快配置方法5 個字段搞定記憶在~/.nullclaw/config.json中只需一小段配置完整示例見 README.md#L496-L502{ memory: { backend: sqlite, auto_save: true, embedding_provider: openai, vector_weight: 0.7, keyword_weight: 0.3 } }auto_save對話中的重要信息自動落庫不用手動存embedding_provider指定向量模型來源OpenAI、自定義 URL 等vtable 可換見 src/memory/vector/vector_weight/keyword_weight向量與關鍵詞的融合權重偏語義調(diào)高前者偏精確調(diào)高后者。更多參數(shù)與原理可參考官方中文架構文檔docs/zh/architecture.md。 記憶新陳代謝自動衛(wèi)生與快照記憶多了會脹NullClaw 內(nèi)置了維護機制Hygiene 衛(wèi)生清理自動歸檔 清除過期記憶見 src/memory/lifecycle/hygiene.zigSnapshot 快照完整導出/導入記憶狀態(tài)方便遷移備份見 src/memory/lifecycle/snapshot.zig會話隔離session_id字段 索引讓不同會話的記憶互不串味同時支持按 agent 命名空間隔離。常用 CLI 命令nullclaw memory命令作用nullclaw memory stats/count查看記憶規(guī)模與健康度nullclaw memory search 關鍵詞手動體驗混合檢索效果nullclaw memory reindex重建 FTS5 全文索引nullclaw memory export-jsonl導出全部記憶nullclaw memory forget刪除指定記憶AI 助手側也有四個記憶工具memory_store存、memory_recall回憶、memory_forget忘、memory_list列源碼在 src/tools/AI 會在對話中自主決定何時調(diào)用。 總結為什么這套設計值得學習零依賴核心路徑只用 SQLite 一個文件FTS5、向量 BLOB、緩存全在同一個庫里混合檢索FTS5(BM25) 與向量余弦相似度雙路召回RRF 融合 時間衰減 MMR 去重9 階段流水線層層提純可插拔Memory 接口是 vtable從單機 SQLite 到 PostgreSQL/Redis 只需改一行配置有新陳代謝自動歸檔、快照遷移、索引重建記憶庫長期可用而不腐壞。用極小的體量做完整的事——這正是 NullClaw Null overhead零開銷哲學的縮影678 KB 的二進制里藏著一個讓 AI 永不失憶的大腦?!久赓M下載鏈接】nullclawFastest, smallest, and fully autonomous AI assistant infrastructure written in Zig項目地址: https://gitcode.com/gh_mirrors/nu/nullclaw創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考