一个obsidian笔记用户的困境

作为一个obsidian笔记用户,日常最大的需求就是:本地obsidian笔记文档太多,想让AI帮我快速找到想要的内容。但试过几种方案都不太理想:

方案一:关键词检索(BM25)

这也是目前hermes等AI Agent框架采用的方式。原理很简单——把你的问题拆成关键词,去文档里匹配包含这些关键词的句子。

用了一段时间,我发现两个问题:

  1. 查询效率低:一个简单的问题,经常需要拆成多个关键词、做多次Query Rewriting(查询重写) 或 Iterative Retrieval(迭代检索),才能找到相关内容
  2. 成本偏高:根据实际观察结果,每轮问答至少需要调用7-8次(甚至更多!)API,而每次调用都要消耗大量token和时间

当然,关键词检索有其适用场景,这里不展开讨论。只是对于我的使用需求来说,体验不太理想。

方案二:云服务RAG

市面上的RAG云服务不少,效果也不错。但有两个问题:

  • 要收费,而且不便宜
  • 数据要上传到第三方,对于一些敏感内容不太方便

方案三:自建RAG

开源的RAG方案很多,但大部分方案部署门槛较高,要么需要Docker Compose启动一整套 infra,要么配置项太多,对于只是想"简简单单问个问题"的我来说,有点"杀鸡用牛刀"。

找了一圈,没找到特别符合需求的:

  • 轻量级:不想部署一整套系统
  • 本地化:数据不想上传
  • 简单:配置不要太多,能用就行

没有现成的轮子,怎么办?

自己造轮子

既然找不到合适的,那就自己做一个。

趁五一长假有空,就用 LlamaIndex + FastAPI 写了一个轻量级的本地RAG MCP工具。说是"造轮子",其实就是在现有开源组件的基础上做了个封装,让它更适合个人使用场景,有需要的朋友可以到下面仓库下载使用。

项目地址:https://gitcode.com/zhanggxlinux/filerag-mcp

设计思路

  1. 轻量级:不依赖复杂的中间件,一个Python脚本跑起来就能用
  2. MCP协议:做成MCP工具,通用性强,Hermes、Cherry Studio都能调用,方便异机部署,“知识”与“大脑”分离
  3. 增量更新:文档修改后自动检测变化,只更新改动的部分,不用全量重建
  4. 灵活嵌入:支持任意OpenAI格式的Embedding模型

技术方案

组件 选择 理由
向量数据库 ChromaDB 轻量、易用、Python原生支持
RAG框架 LlamaIndex 业界标准,文档丰富
服务端 FastAPI 简单高效,支持流式输出
协议 MCP 通用性好,各AI框架都能对接,方便异机部署

快速上手

1. 安装依赖

cd ~/filerag-mcp
pip install -r requirements.txt

2. 配置环境

cp .env.example .env

编辑.env,主要配置这几项:

CHROMA_HOST=localhost
CHROMA_PORT=8018
CHROMA_COLLECTION=my-docs

# Embedding模型服务地址
# 推荐用LM Studio本地部署bge-m3,中文效果好
EMBED_BASE=http://localhost:1234/v1
EMBED_MODEL=text-embedding-bge-m3
EMBED_API_KEY=not-needed

💡 如果没有LM studio,用本地Ollama也可以,URL改成http://localhost:11434/v1,但没试过

3. 启动服务

python server.py

服务默认在http://localhost:8009运行。

4. 在AI agent框架里使用

示例一:Hermes配置
端点:http://你的服务器IP:8009/mcp

再创建一个obr技能,让hermes学会使用这些tools

在这里插入图片描述

示例二:Cherry Studio配置

同上,添加MCP服务器地址即可。配置后可直接列出有哪些mcp tools
在这里插入图片描述

效果验证

hermes打开/obr 技能,然后提问,hermes调用RAG(检索增强生成)系统,在知识库中进行语义检索。找到最相关的5个文档(其实就是1个文档的5个不同片段)后,它再将这些信息整合、提炼,最终以清晰、连贯的文字形式将答案呈现出来。整个过程,从提问到检索,再到生成的无缝协作,达到预期目的。
在这里插入图片描述

至于文档入库,其实除了调 API,完全可以写个脚本批量遍历本地文件夹,自动同步到知识库。考虑到这属于另一个独立的项目场景,这里就不占用篇幅了。大家如果对这感兴趣,我后面专门开一篇来细聊!

目前的局限

这个工具还有不少改进空间:

  • 没有Web界面:目前只能通过API或命令行操作(AI agent应该不care)
  • 没有PDF/Word解析:文档需要先转成文本(AI agent都有现成工具)
  • Embedding模型、ChromaDB需要自行部署:虽然免费,但需要自己动手

如果你需要更完善的功能,市面上有更成熟的方案。我这个更适合:想快速上手、对数据隐私有要求、愿意自己动手折腾的朋友。

写在最后

做这个工具的初衷很简单:我想用上本地RAG,不想看云服务的脸色。

如果有疑问,欢迎在评论区交流。

项目地址https://gitcode.com/zhanggxlinux/filerag-mcp

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐