开源仓库:https://github.com/musnows/siyuan-rag-llm
如题所示,AI 时代让我们的个人笔记能够知识库化是非常多人希望能有的效果。这样可以让我们自己的记录在查询的时候更加便捷方便。题主也是心血来潮,借助 AI 实现了一个 python 版本的 rag 化思源笔记的能力。整个过程完全本地处理(需要本地部署 AI,也可以用云端的 AI),效果不错!
目前在本地已经通过了命令行使用的测试,还是个 demo 状态,但是已经能用了!
后续将尝试兼容到思源笔记内部去,会持续更新本帖。
效果截图
如下是咨询了问题“SLAM 的概念”得到的回答,正确查询到了相关笔记并回答了内容:

此处使用的模型是本地部署的 openai/gpt-oss-20b MXFP4
使用教程
配置
需要本地有 python3.10+ 的环境,最好使用 uv 来管理依赖项:https://uv.doczh.com/getting-started/installation/
项目已经配置了 uv 镜像源为清华大学 pip 源,无需额外配置依赖项
git clone https://github.com/musnows/siyuan-rag-llm.git
cd siyuan-rag-llm
# 用uv自动下载依赖项
uv sync
随后,拷贝 .env.example 文件的内容,创建 .env 文件,修改配置项。
其中 SIYUAN_TOKEN 和 OpenAI 的相关配置项必须进行配置,其他配置项可以保留默认值。EMBEDDING_MODEL 建议在本地部署 text-embedding-qwen3-embedding-0.6b,默认的 embedding 模型效果很差
# 复制此文件为 .env 并填入实际配置
# 日志配置
LOG_LEVEL=INFO
############################## 思源笔记 API 配置 ###############################
# 思源笔记服务地址 (默认: 127.0.0.1)
SIYUAN_HOST=127.0.0.1
# 思源笔记服务端口 (默认: 6806)
SIYUAN_PORT=6806
# API 访问令牌 (在思源笔记设置 - 关于中查看)
SIYUAN_TOKEN=
# 可选: 请求超时时间 (秒)
SIYUAN_TIMEOUT=30
# 思源工作空间本地目录(遍历笔记本备用,可以不配置)
SIYUAN_WORKSPACE_PATH=~/data/notes/siyuan
############################## OpenAI Agent 配置 ##############################
# OpenAI API配置
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_BASE_URL=https://api.openai.com/v1
# OpenAI对话模型配置 (用于Agent)
OPENAI_MODEL=gpt-4
############################## RAG配置 ##############################
CHROMA_PERSIST_DIR=./chroma_db
# Embedding模型配置
# 本地模型选项 (无需API Key,效果很差)
EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2
# OpenAI嵌入模型选项 (需要OPENAI_API_KEY)
# EMBEDDING_MODEL=text-embedding-qwen3-embedding-0.6b
# Tokenizers配置(避免并行化警告)
TOKENIZERS_PARALLELISM=false
# RAG空白笔记过滤配置(是否跳过空白笔记)
# 设置为 1, true, yes, on 时跳过空白笔记
# 设置为 0, false, no, off 或未设置时保留空白笔记
RAG_SKIP_EMPTY=0
如果你使用了 LM Studio 配置模型,但是不知道如何配置 OpenAI 的几个配置项,可以参考如下配置。这里的 OPENAI_MODEL 和 EMBEDDING_MODEL 修改成你自己下载并在 LM Studio 中部署到本地的模型,LM Studio 的操作可以参考:https://blog.musnow.top/posts/1891619455/
# OpenAI API配置
OPENAI_API_KEY=lmstudio
OPENAI_BASE_URL=http://127.0.0.1:1234/v1
# OpenAI对话模型配置 (用于Agent)
OPENAI_MODEL=openai/gpt-oss-20b
# rag使用的模型
EMBEDDING_MODEL=text-embedding-qwen3-embedding-0.6b
性能参考
模型使用 LM Studio 本地部署:
设备:mbp14 m4pro 48GB 内存
本地 AI:LM Studio 部署 text-embedding-qwen3-embedding-0.6b q8_0 模型和 openai/gpt-oss-20b MXFP4 模型,分别负责 RAG 数据处理和 ReAct Agent 查询回答问题。
耗时:RAG 化 3 个笔记本,共 821,525 字,总计 99355 个数据块,耗时 1 小时。

不知道各位觉得这个速度咋样,如果是云端 embedding 模型应该是可以并发执行 RAG 来提高一下速度的。但是 LM Studio 本地部署的模型接口不支持并发调用,所以暂时保持现状了。
不过好在 RAG 只需要执行一次就 OK 了(笔记有更新需要重新 RAG)。
后续计划
- 想办法集成到思源笔记中
- 想办法处理笔记更新的增量 RAG(现在只能全量重建,速度太慢了)
- 这一项已经通过判断笔记本更新时间实现了!
- 对本地可读的文件附件同样进行 rag(比如 txt、json、xml 等)
- 调用 VL 模型,对图片进行识别总结后,rag(感觉没啥必要)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于