DEV Community

Manoir Yantai
Manoir Yantai

Posted on

AI 时代的个人知识系统:三层召回 + 本地优先架构实践

知识管理工具最大的陷阱是"录而不取"——你收集了无数笔记、书签、片段,但真到用的时候,要么找不到,要么找出来也是孤立的碎片,无法和已有认知产生连接。

在 v0.0.2 中,我们引入了一个三层分层召回架构,目标是:让 AI Agent 在回答前,先翻自己的笔记,再查向量记忆,最后落知识图谱。本地搜不到,才回落网络。

三层召回:从快到深

用户提问 → FTS5 全文搜索(毫秒级)
         → Hindsight 向量语义搜索(百毫秒级)
         → gbrain 知识图谱遍历(秒级,带关联推理)
         → AnySearch 网络回落(兜底)
Enter fullscreen mode Exit fullscreen mode
  • FTS5(Hot):SQLite 内置全文索引,关键词精确匹配,适合搜索你明确知道怎么描述的东西。零延迟。
  • Hindsight(Warm):向量嵌入 + 语义检索。你忘了关键词,只记得"那篇讲自动注册的",语义匹配能捞回来。~10K 节点容量。
  • gbrain(Cold):知识图谱,11K+ 页面通过 wikilink 连接。不只是找到节点,还能遍历关联路径——"A 项目用了 B 框架,B 框架的 C 模块有已知坑",这才是知识管理的终局形态。

三层逐级 fallback,前一层命中就不再往下走,形成分级延迟曲线。

为什么本地优先?

大部分知识管理方案是"存本地,搜云端"——笔记在 Obsidian,搜索靠 Embedding API,查询体验完全绑定外部服务。

v0.0.2 的做法相反:FTS5 和 Hindsight 向量全部本地运行。gbrain 的 embedding 也在本地(PostgreSQL + pgvector)。所有召回链路都不出本机。只有当 lightweight_recall(query) 返回空结果时,才通过 AnySearch 走网络搜索。

from knowledge_discovery import lightweight_recall

# 三层自动召回,本地优先
results = lightweight_recall("A股量化因子选股框架")
if results:
    for r in results:
        print(f"[{r['tier']}] {r['title']}{r['summary'][:80]}")
else:
    # 自动回落网络搜索
    from knowledge_augmentation import augmented_search
    web_results = augmented_search("A股量化因子选股框架", domain="finance")
Enter fullscreen mode Exit fullscreen mode

这个模式在实测场景中命中率约 70%(FTS5 约 40%,Hindsight 补充约 20%,gbrain 关系链约 10%),大部分日常提问根本不需要联网。

采集精炼管线

三层召回的前提是知识要先入库。系统提供了 40+ 采集工具,覆盖网页(Scrapling 反检测)、视频(Whisper ASR + OCR)、文档(SenseNova 三件套 PDF/PPT/Word)、文章(公众号/微博/RSS)、书籍(自动精炼为 Skill)。

关键点是每个采集入口都经过同一管线:采集 → 分析 → 生成结构化笔记 → 入库三层记忆 → 可选云盘同步。不是简单存个 URL,而是提取实体、生成摘要、建立知识图谱链接。

适用场景

这套架构最适合的是运行在本地的 AI Agent——LLM 跑在本地或通过 API 调用,但知识层完全自己控制。三层召回 + 本地优先的设计,让知识查询延迟可控、隐私不暴露、不依赖外部服务可用性。

v0.0.2 是第一步:采集管线就绪,召回链路打通。下一步的方向是:跨 Agent 共享记忆图谱、基于反馈的自动遗忘、以及知识质量的闭环评估。

Top comments (0)