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 回答。
| 维度 | 普通 RAG | GBrain |
|---|---|---|
| 知识载体 | 原文档 + 向量库 | 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 只是其检索层。
优点
- 知识可迁移、可审阅:Markdown + Git 降低数据库锁定风险,也便于人工修订和历史追踪。
- 精确与语义检索并存:名称、缩写走关键词,概念问题走混合检索,避免所有问题都付出 Embedding 成本。
- 关系查询能力更强:显式 WikiLinks 和类型边适合人、公司、项目、会议等实体密集场景。
- 回答之外呈现未知:引用、陈旧性、冲突与缺口提示有助于避免把“没有检索到”误判为“不存在”。
- 面向长期维护:增量同步、去重、矛盾检测和 Compiled Truth 解决知识随时间累积后的可读性问题。
- Agent 集成完整:MCP、CLI、HTTP、任务队列和技能包减少自行搭建 Agent 工具层的工作量。
- 本地到团队可扩展:PGLite 适合单机起步,Postgres/Supabase 适合更大规模和多人场景。
- 工程质量意识较强:仓库包含大量单元/集成测试、诊断命令、检索评测和安全检查。
缺点与风险
- 明显重于普通 RAG:数据库、Embedding、reranker、Schema Pack、MCP、后台任务和 Agent 运维形成较长学习曲线。
- 系统边界很大:仓库同时覆盖检索、图谱、Agent 队列、OAuth、管理端和大量技能,升级回归面与维护成本较高。
- 自动综合可能改错知识:Compiled Truth 会被重写,若证据不足或模型判断错误,错误可能比原始 chunk 更像“确定事实”。必须依赖引用和 Git 审阅兜底。
- 图质量依赖链接纪律:主要图边来自 WikiLinks/typed links 和规则抽取;资料没有稳定实体命名或链接时,图谱收益会降低。自动实体消歧仍有限。
- 质量提升数据需谨慎解读:README 报告 P@5 49.1%、R@5 97.9% 和相对无图版本 +31.4 P@5,但基于 240 页、由 Opus 生成的 rich-prose corpus;不能外推到中文、噪声文档或企业真实数据。
- 成本不可忽略:Embedding、reranker、综合回答、外部 enrichment 与夜间维护都会产生模型调用和计算成本。
- PGLite 有并发边界:官方定位约 5 万页以内的个人知识库,且是单写者;共享与大规模部署需要 Postgres 运维。
- 安全能力需要正确配置:本地 PGLite 与远程 Postgres/Supabase 的威胁模型不同;RLS、OAuth、scope、服务角色和外部模型数据边界不能只依赖默认值。
- 项目迭代快、成熟度仍需观察:版本和功能密度增长很快,TODO 中仍有真实数据评测、自动链接、薄客户端一致性等待完善项。
- 对中文和 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 是否逐条可追溯。