GBrain

一句话结论

GBrain 是 LLMWiki 思路的一种完整工程实现:以 Git 管理的 Markdown 为知识事实源,以 PGLite/Postgres + pgvector 为运行索引,将混合检索、WikiLinks/类型边图谱、带引用综合回答、知识缺口分析和后台维护周期组合成面向 AI Agent 的“知识运行时”。

它比普通 RAG 更擅长长期积累、实体关系查询和可维护知识,但部署、数据建模、自动整理与质量治理的复杂度也明显更高。若需求只是“上传文档后问答”,GBrain 通常过重;若目标是让 Agent 长期使用并维护个人或团队知识,它的设计更有价值。

调研基线

本文基于 garrytan/gbrain 官方仓库 0.42.58.0、README、设计文档与关键代码整理,时间为 2026-07-11。仓库采用 MIT License。

系统定位

GBrain 不是单一检索组件,而是包含知识采集、组织、检索、综合、维护和 Agent 接入的完整系统。

Markdown/Git(知识事实源)
        ↓ 同步、解析、分块、实体链接
PGLite 或 Postgres + pgvector(运行索引)
        ↓
关键词 + 向量 + RRF + 来源权重 + reranker + 图信号
        ↓
search/query:返回证据块
think:综合回答 + 引用 + 陈旧/冲突/缺口提示
        ↓
MCP/CLI/HTTP → Codex、Claude Code、OpenClaw、Hermes 等 Agent
        ↑
dream/autopilot:去重、补引用、矛盾检测、摘要更新和知识维护

核心设计

Markdown 是事实源,数据库是派生索引

  • 知识保存在普通 Markdown 文件中,可通过 Git 版本管理、审阅、备份和迁移。
  • 删除的 Git 内容在数据库中转为软删除,数据库用于检索和运行,不是唯一知识载体。
  • 支持导入与导出 Markdown,对 Obsidian WikiLinks 提供可选的跨目录 basename 解析。
  • 页面采用“Compiled Truth + Timeline”结构:上半部分保存当前综合结论,下半部分保存只追加的证据时间线。

多层检索

  • get:已知 slug 时直接读取完整页面。
  • search:关键词检索,不依赖 Embedding,适合人名、术语和精确匹配。
  • query:向量 + 关键词,通过 RRF 融合,并叠加来源层级、别名、图邻接、跨来源印证等信号。
  • 可使用 reranker 进一步排序;查询结果能解释各阶段分数和加权来源。
  • 向量侧基于 pgvector HNSW;本地默认 PGLite,大规模或多人场景使用 Postgres/Supabase。

自连接知识图谱

  • 写入页面时解析 Markdown/WikiLinks/typed links,生成 works_at、founded、attended、invested_in 等类型边。
  • 基础链接抽取采用确定性规则,不需要额外 LLM 调用。
  • 支持多跳图查询,并将图邻接信号用于检索排序。
  • 它更接近“显式链接图 + 检索增强”,不等同于依赖 LLM 从全文自动构建完整本体的 GraphRAG。

综合回答与缺口分析

  • search/query 提供检索结果,think 在检索后生成带来源的综合回答。
  • 综合层会提示资料陈旧、缺少引用、信息冲突或数据源覆盖不足。
  • 这比仅返回若干 chunk 的基础 RAG 更接近研究助理,但最终准确性仍受召回、来源质量和生成模型影响。

Agent 与持续维护

  • 通过 CLI、stdio/HTTP MCP 提供 30+ 工具,可作为 Agent 的长期知识层。
  • Schema Packs 定义知识类型、目录映射、可抽取实体和专家路由,可适配现有知识库结构。
  • 后台 dream/autopilot 周期执行去重、引用修复、显著性评分、矛盾发现和内容综合。
  • Postgres 模式支持任务队列、多用户来源隔离、OAuth/scopes 与 RLS 相关安全检查。

与普通 RAG 对比

这里的“普通 RAG”指:文档解析 → 固定分块 → Embedding → 向量 Top-K → 将 chunk 交给 LLM 回答。

维度普通 RAGGBrain
知识载体原文档 + 向量库Git/Markdown 事实源 + 数据库派生索引
检索通常以向量 Top-K 为主关键词、向量、RRF、reranker、来源和图信号
结构chunk 与 metadata页面类型、WikiLinks、typed edges、时间线
输出检索块或一次性回答原始检索、综合回答、引用和缺口分析
更新重新解析/重建索引文件同步、增量索引、软删除、后台维护
知识演进原文变化才更新Compiled Truth 重写 + Timeline 追加
关系问题多跳问题较弱可利用显式图边和图遍历
Agent 接入需要自行封装原生 CLI、MCP、HTTP 和技能包
可迁移性取决于平台和向量库Markdown/Git 可读性较好
系统复杂度低到中高
适合场景文档问答、FAQ、客服长期个人/团队知识、关系网络、Agent 记忆

本质差异

普通 RAG 把知识库视为“可检索的文档集合”;GBrain 把它视为“需要持续维护、形成关系并能被 Agent 操作的知识系统”。GBrain 内部仍包含 RAG,但 RAG 只是其检索层。

优点

  1. 知识可迁移、可审阅:Markdown + Git 降低数据库锁定风险,也便于人工修订和历史追踪。
  2. 精确与语义检索并存:名称、缩写走关键词,概念问题走混合检索,避免所有问题都付出 Embedding 成本。
  3. 关系查询能力更强:显式 WikiLinks 和类型边适合人、公司、项目、会议等实体密集场景。
  4. 回答之外呈现未知:引用、陈旧性、冲突与缺口提示有助于避免把“没有检索到”误判为“不存在”。
  5. 面向长期维护:增量同步、去重、矛盾检测和 Compiled Truth 解决知识随时间累积后的可读性问题。
  6. Agent 集成完整:MCP、CLI、HTTP、任务队列和技能包减少自行搭建 Agent 工具层的工作量。
  7. 本地到团队可扩展:PGLite 适合单机起步,Postgres/Supabase 适合更大规模和多人场景。
  8. 工程质量意识较强:仓库包含大量单元/集成测试、诊断命令、检索评测和安全检查。

缺点与风险

  1. 明显重于普通 RAG:数据库、Embedding、reranker、Schema Pack、MCP、后台任务和 Agent 运维形成较长学习曲线。
  2. 系统边界很大:仓库同时覆盖检索、图谱、Agent 队列、OAuth、管理端和大量技能,升级回归面与维护成本较高。
  3. 自动综合可能改错知识:Compiled Truth 会被重写,若证据不足或模型判断错误,错误可能比原始 chunk 更像“确定事实”。必须依赖引用和 Git 审阅兜底。
  4. 图质量依赖链接纪律:主要图边来自 WikiLinks/typed links 和规则抽取;资料没有稳定实体命名或链接时,图谱收益会降低。自动实体消歧仍有限。
  5. 质量提升数据需谨慎解读:README 报告 P@5 49.1%、R@5 97.9% 和相对无图版本 +31.4 P@5,但基于 240 页、由 Opus 生成的 rich-prose corpus;不能外推到中文、噪声文档或企业真实数据。
  6. 成本不可忽略:Embedding、reranker、综合回答、外部 enrichment 与夜间维护都会产生模型调用和计算成本。
  7. PGLite 有并发边界:官方定位约 5 万页以内的个人知识库,且是单写者;共享与大规模部署需要 Postgres 运维。
  8. 安全能力需要正确配置:本地 PGLite 与远程 Postgres/Supabase 的威胁模型不同;RLS、OAuth、scope、服务角色和外部模型数据边界不能只依赖默认值。
  9. 项目迭代快、成熟度仍需观察:版本和功能密度增长很快,TODO 中仍有真实数据评测、自动链接、薄客户端一致性等待完善项。
  10. 对中文和 Obsidian 兼容性需实测:仓库包含 CJK 修复和 basename 链接支持,但中文分词、别名、同名实体、附件及复杂 Obsidian 语法仍应单独验收。

适用与不适用

优先考虑 GBrain

  • 需要让 Agent 长期积累并主动维护知识,而非只问答。
  • 知识以人物、组织、项目、会议和事件为中心,关系查询重要。
  • 重视 Markdown/Git 可迁移性,希望与 Obsidian 共存。
  • 接受维护 Postgres、模型供应商和自动化任务。

优先考虑普通 RAG

  • 目标是快速上线文档问答、客服或产品手册助手。
  • 文档是权威来源,不希望系统自动重写或派生长期知识。
  • 多跳关系问题少,向量 + BM25 + reranker 已能满足效果。
  • 团队缺少持续维护知识模型和数据治理的资源。

针对本 Obsidian Vault 的建议

建议路线

先把 GBrain 当作 Obsidian 的只读派生检索层试运行,不立即允许 dream/autopilot 回写原库。以复制库导入,开启关键词与混合检索,评估中文召回、WikiLinks 图边和引用准确率;确认 Git diff 可控后,再按目录逐步开放写入或综合更新。

最小验证集:

  • 从 技术笔记/、大模型/、专项项目/ 各抽取 30~50 篇非敏感笔记。
  • 准备 20 个精确问题、20 个语义问题、20 个跨笔记关系问题。
  • 与 BM25、向量 RAG、混合 RAG 分别比较 Recall@5、引用正确率和答案忠实度。
  • 检查中文文件名、标题别名、WikiLinks、Callout、代码块和附件链接是否保留。
  • 禁止导入 个人信息/,明确外部 Embedding/reranker/LLM 的数据边界。
  • 审阅自动生成的 Compiled Truth 与原始 Timeline 是否逐条可追溯。

参考资料

关联笔记