← 项目索引agmem · 分层知识检索
知识增量处理 · 语义缓存 · 版本一致性
目标与范围
把文档与人工录入的知识转化为带来源的可检索条目,供研发 FAQ 和本地 Agent 复用。相同问题通过精确缓存减少模型调用,近义问题通过向量比较复用检索结果,知识变化通过版本校验阻止旧缓存继续返回。
本地如何比较缓存
用户侧 agmemd 先获取云端知识版本,再用本地模型生成问题向量;在同一目录范围内,扫描 SQLite 缓存中的历史问题向量,取余弦相似度最高的一条。只有相似度严格超过阈值且知识版本相同,才返回已有结果。云端服务则先比较精确缓存,未命中后才生成查询向量,比较近义缓存或进入共享索引。
命中分支直接返回。经本地守护与直接调用云端是两种入口;本地命中仍需一次云端版本校验,并不等同于离线回答。
云端如何新增与更新知识
Wiki 同步通过文档编辑时间判断变化,只读取新增或更新文档的正文并分段入队。手动写入按原文去重;Wiki 换版保留与旧版相同的段,避免删除旧版本后丢失未修改内容。异步 Worker 保存原文向量,清洗出独立知识条目,校验事实锚点,再写入向量与稀疏索引;完成记录后推进知识版本。
共享索引保存知识条目,本地缓存保存历史查询结果。版本增长使旧结果在后续查询时失效,增量同步发生在知识源与云端之间。
工程取舍
- 分层减少重复工作:精确缓存避免再次计算 embedding;语义缓存复用近义问句的检索结果;共享索引提供 dense 与 BM25 混合检索及结果折叠。
- 版本门控:相似度阈值默认 0.8、可配置;版本必须一致。agmemd 的版本接口失败或模型未就绪会明确报错;服务端版本读取失败时跳过缓存,继续索引检索。
- 上下文复用:清洗按规则、知识快照、目录背景、目标正文组织前缀,同目录轮次冻结背景,兼顾重复知识识别和模型前缀缓存。
- 有界本地存储:结果与问题向量写入 SQLite,按最近使用时间淘汰,容量上限可配置;无需将完整共享知识库复制到每个用户设备。
一致性与故障边界
架构依据实际查询、同步与清洗代码整理。文档换版采用先入队再删旧,索引写入与版本更新分步执行,属于异步可见的更新流程。语义相近不保证答案等价,需要结合知识域评估阈值;本页不把单次检索耗时或缓存命中率作为普遍性能承诺。