
Orkas 记忆系统揭秘SQLite 全文向量混合检索、RRF 融合与 95MB 端侧嵌入模型工作原理【免费下载链接】OrkasOrkas is an open-source, local-first AI desktop app: a commander LLM directs specialist sub-agents, and runs your installed coding CLIs — Claude Code, Codex, OpenCode, OpenClaw, Hermes — as local sessions. Agents self-evolve via reflection and skill crystallization. BYO keys. macOS / Windows / Linux.项目地址: https://gitcode.com/gh_mirrors/or/OrkasOrkas 是一款开源、本地优先local-first的 AI 桌面应用指挥官 LLM 调度专业子智能体并驱动 Claude Code、Codex 等本地编码 CLI 会话智能体还能通过反思与技能结晶自我进化。这篇文章将完整拆解 Orkas 的记忆系统——它如何用 SQLite FTS5 全文索引 向量相似度做混合检索用 RRF 倒数排名融合合并两路结果并依靠一个约 95MB 的端侧 ONNX 嵌入模型让知识库索引全程不出本机。为什么需要一个本地记忆系统普通 AI 助手的对话刷新即失忆。Orkas 的思路是让每个智能体都拥有私有记忆与技能并通过任务后的反思不断变强。这套能力在 README.md 中有一句概括每个 agent 拥有自己的私有 skills 和 memory并在每次任务后通过反思改进。实现上Orkas 把记忆分成两层轻量的跨会话 Markdown 记忆和面向海量文档的混合检索索引。第一层跨会话 Markdown 记忆源码位于 src/main/features/memory.ts核心设计非常轻量派文件即记忆MEMORY.md跨项目共享事实、USER.md用户画像、agents/id/MEMORY.md每个智能体的领域笔记条目之间用§分隔硬预算memory.ts 中的常量 规定共享记忆 2500 字符、用户画像 1500 字符、单智能体 2000 字符、每库最多 16 条写满自动淘汰最旧条目保证注入系统提示词时不撑爆上下文安全防护写入前做提示注入、密钥外泄、隐形 Unicode 的模式扫描src/main/features/memory.ts。会话开始时这些文件被冻结进系统提示词对话中智能体再通过工具修改它们——记忆因此跨会话持久化。第二层SQLite 全文 向量混合检索面向知识库和海量会话内容Orkas 建的是一个本机 SQLite 混合索引通道技术擅长全文通道SQLiteFTS5倒排索引 BM25 打分精确关键词、专有名词向量通道sqlite-vec虚拟表 余弦相似度语义相近、同义改写关键设计都写在 src/main/features/vec_store.ts 的头部注释里分块文档按 512 行一块、64 行重叠切块兼顾上下文完整与检索粒度三表结构kb_files源文件sha1状态、kb_chunks分块文本、kb_vec512 维向量虚拟表模型锁定vec_store.ts#L46-L47 固定使用bge-small-zh-v1.5512 维换模型需要整个库重建config.json在目录级别强制这一点并发模型better-sqlite3 单写者 每库一把 Mutex 互斥锁读走 SQLite 快照隔离天然无锁读。全局搜索的查询入口在 src/main/features/search/index.tsBM25 打分器见 src/main/features/search/bm25.ts还针对中日韩文本做了二字词bigram锚点增强——搜索苏格拉底时能稳定命中真正包含该词的文档。RRF 融合排序0.7 向量 0.3 关键词两路检索各自返回一份排序列表但BM25 分数 4.2和余弦相似度 0.81根本不是同一个量纲直接加权相加会互相污染。Orkas 采用教科书级的RRFReciprocal Rank Fusion倒数排名融合只取每条结果在两路列表中的名次rank不取原始分按1/(k rank)计算倒数排名分k 取经验值 60平滑头部名次两路分别加权——向量 0.7、关键词 0.3——再加总排序。这套机制的说明可以直接在 README.md#L200-L204 找到。0.7/0.3 的偏重体现了产品取向语义相关优先精确关键词作为强信号补充。此外 library_content_ranking.ts 还设了 0.45 / 0.65 双阈值弱命中必须再叠加词法锚点才展示防止向量检索答非所问。最终智能体通过memory_search与memory_read两个工具访问这套索引检索范围覆盖存储文档和历史会话。95MB 端侧嵌入模型隐私如何得到保证向量通道的核心是嵌入模型。Orkas 打包了一个 ONNX 版本的bge-small-zh-v1.5约 95MB、512 维安装时由 scripts/fetch-embedding-model.mjs 一次性拉取落到resources/embedding-model/目录带字节数校验和断点式超时控制推理走本地fastembed建索引、算 query 向量全程在本机完成——索引一个知识库不会向任何地方发送数据如果你偏好云端官方也提供 OpenAI、Gemini、Voyage、Mistral 等嵌入服务商作为可选项默认仍是端侧。这就是95MB的由来小到随应用分发大到足以胜任中英混合语义检索是典型的端侧模型取舍。小结本地优先的完整闭环环节方案轻量记忆Markdown 文件 字符/条数硬预算全文检索SQLite FTS5 BM25 CJK bigram 锚点语义检索sqlite-vec512 维本地向量结果融合RRF 倒数排名0.7 向量 / 0.3 关键词嵌入模型bge-small-zh-v1.5~95MB ONNX端侧推理对新手而言最实用的三步跑起来用仓库自带的run.sh/run.cmd启动首次启动会自动准备 Python、嵌入模型等资源配 Key打开Settings → AI Providers填入你自己的 API KeyBYO keys数据与密钥都在本地喂知识把文档加入知识库等待本机的分块向量化完成之后在对话里提问混合检索会自动把最相关的片段带给智能体。想深入阅读可以从 README.md 的 Memory 小节 出发再对照 vec_store.ts、memory.ts 与 search/index.ts 三份源码即可完整看懂这条本地混合检索链路。【免费下载链接】OrkasOrkas is an open-source, local-first AI desktop app: a commander LLM directs specialist sub-agents, and runs your installed coding CLIs — Claude Code, Codex, OpenCode, OpenClaw, Hermes — as local sessions. Agents self-evolve via reflection and skill crystallization. BYO keys. macOS / Windows / Linux.项目地址: https://gitcode.com/gh_mirrors/or/Orkas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考