如何搭建本地知识库:llm wiki+gbrain
问题
先说一个日常场景:你的信息散落在各处。PDF文件在下载文件夹里堆积如山,网页文章在浏览器收藏夹里落灰,微信聊天记录里的关键信息过几天就石沉大海,邮件里的决策结论深埋在收件箱底部。
这些零散的信息有个共同的麻烦:
- 。想找一个概念,得在文件夹、浏览器、微信、邮箱里分别搜一遍,耗时耗力。
搜索的碎片化
- 。PDF、Word、Excel、网页、聊天记录,每种格式有自己的打开方式,无法放在一起统一检索。
格式的孤岛化
- 。这是最关键的一点——这些知识对大模型来说是不可见的。模型再强,也搜不到你本地的PDF和微信记录。
AI的盲区
所以,需要一套系统,把所有知识统一存储、结构化管理,既能让你自己快速检索,也能让AI Agent直接调用。这套系统不能依赖云端,数据必须完全本地化。
方案
最终搭出来的系统,由四个组件协同工作,各司其职。
LLM Wiki
[[slug]]语法互相引用,形成一张知识网络。这套目录可以直接用Obsidian打开,也可以用任何文本编辑器操作。
GBrain
Obsidian
MarkItDown
数据怎么进来
知识进入系统有三种入口,最终都汇到同一条处理管线。
- :内网有一个上传页面,监听8199端口,局域网内的任何设备打开浏览器就能用。拖拽文件进去,文件自动进入投递箱目录。
浏览器上传
- :直接把文件复制到投递箱目录:
命令行
cp report.pdf ~/llmwiki/inbox/。 - :对Agent说“帮我导入这个PDF”或“保存这篇文章:{URL}”,Agent会自动处理。
告诉AI
无论哪种方式,文件最终都会落到同一个地方:~/llmwiki/inbox/。然后,一个叫watchdog的后台脚本接管后续处理:
- 检测到新文件
- 判断文件类型——文本文件直接处理,二进制文件先用MarkItDown转为Markdown
- 存档原始文件到
raw/sources/目录(按日期归档) - 保存转换后的.md文件到
wiki/sources/目录 - 导入GBrain数据库(存储 + 生成向量索引 + 提取实体关联)
- 原始文件移到
inbox/.processed/归档
整个过程全自动。你只需要把文件丢进去,剩下的交给系统。
查询的时候,三种方式都可以:命令行gbrain search "关键词"或gbrain query "如何构建投资组合"(语义搜索);Obsidian搜索框;或者直接问Agent。Agent通过MCP协议连接GBrain,搜索知识后基于结果生成回答。
实际使用场景
搭好之后的日常是这样的:
场景一:保存文章。
场景二:导入报告。
场景三:保存会议记录。
场景四:研究辅助。
所有知识都存在本地Mac Studio上,不上传到任何云端。搜索的时候,既能精确匹配关键词,也能理解语义——比如搜“如何控制回撤”,即使文章里没有“回撤”这两个字,只要内容是关于风险控制的,也能找到。
技术实现
整套系统运行在一台Mac Studio上,不依赖任何外部服务。
语言模型
数据库
服务部署
文件处理
Agent接口
局限
这套系统有几个明显的短板:
- 。图片、音频、视频没法直接入库,需要先转成文字。MarkItDown支持图片OCR和音频转文字,但效果取决于原始文件质量。
纯文本定位
- 。虽然有自动分类和实体提取,但知识的组织还是需要人为干预。概念之间的关联、实体的归类、重要程度的判断,Agent能辅助,但不能完全替代人的决策。
需要人工维护结构
- 。数据存在本地Mac Studio上。如果需要多设备访问,只能通过内网。没有自动备份机制,需要自己定期备份PostgreSQL数据库。
本地孤岛
- 。日常使用很简单——拖文件、问Agent。但如果要深入了解系统配置、故障排查、自定义工作流,需要一定的技术基础。至少得熟悉命令行和Markdown。
学习成本
- 。本地部署的27B模型在复杂推理上不如GPT-4或Claude,实体提取和语义搜索的准确率也有提升空间。但好处是完全离线、没有API费用、数据不离开本地。
模型能力上限
适合谁
这套系统适合这样的场景:个人知识管理,信息量大、来源分散;需要AI辅助整理和检索知识;注重数据隐私,不想把知识上传到第三方平台;有一定的技术能力,能处理基本的命令行操作。
不太适合的场景:团队多人协作(这是个人知识库设计,没有多用户权限管理)、需要严格版本管理的文档(用Git更合适)、纯图片/视频类素材管理。
总结
这套系统的核心思路是:
知识统一存为Markdown,用向量数据库做语义搜索,通过MCP让AI Agent能读能写。
技术栈并不复杂:PostgreSQL + pgvector做存储和搜索,Qwen做语言模型,Obsidian做编辑器,MarkItDown做格式转换,一个watchdog脚本做自动化处理。所有组件都是开源的,跑在本地,数据不离开Mac。
搭好之后最大的感受: