Skip to content

04 · RAG 与记忆

架构剖析第四篇:对话树、RAG 检索、记忆分层与写入。这是 Familiars 的"长期记忆"核心。 对应「技术架构长视频」章节 4。来源 ARCHITECTURE.md §5。


§5.1 为什么不用向量数据库(Pinecone / Weaviate / Qdrant)

  • 数据量级(单用户、几千~上万 embedding)内存 + SQLite 就够
  • 免去一套服务和运维;向量存在 workspace/familiars.db 里,隐私不出本机
  • 后续要换外部向量库也很直接(抽象在 memory_store 层)。

§5.2 RAG 架构

  • 每次构建上下文:稠密召回(bge-m3) + 时间衰减 + 树距离的组合分: score = α·cos + e^{-β·Δt} + γ·tree_distance
  • embedding 由 BAAI/bge-m3 提供,所有组件共用这套向量:DialogTree、AssistantRouter、RAG 稠密召回、rewriter 数据管线 → 全仓可比向量。
  • rewriter 负责对话改写(query 重写),提升召回。

§5.3 记忆系统

作用域轴持久化到
dialogueworkspace/agents/agent_<id>/dialogue_<n>/
agentworkspace/agents/agent_<id>/
user / identityworkspace/(USER.md、IDENTITY.md、memory layers)
ephemeral每轮临时,回合结束即清除

类别轴:event / state / profile / procedure / directive,每类有各自的衰减常数。

  • 写入链MemoryWriter 决定什么值得记(memorizer-writer 小模型)→ 分类 → 散布到对应 scope/category 存储; memorizer 分 reader/consolidator 子模块(src/models/memorizer/),decider 可被 DeciderService 驱逐,DialogueManager.release_memory 提供 JIT 按需装载。
  • 读取链:每次 NL 质问任务 → DialogueManager 组装历史 → RAG 检索 → 上下文注入。
  • 可观测性memory writer-status(CLI)/ GET /api/memory_status(记忆规模/命中)、POST /api/agents/{id}/release-memory(手动释放常驻)。

视频时间点映射

视频时间点内容
(待录制)记忆全景:作用域×类别矩阵
(待录制)RAG 打分:死记 + 时间衰减 + 树距离怎么协作
(待录制)rewriter 对话改写 demo

下一篇:05-持久化层

✨ Familiars · 多 Agent AI 桌面应用 —— 对话树记忆 · 长期记忆 · 工具系统 · 数字人 · Broker 生态