本地 RAG 思源笔记知识库构建(持续更新)

开源仓库:https://github.com/musnows/siyuan-rag-llm

如题所示,AI 时代让我们的个人笔记能够知识库化是非常多人希望能有的效果。这样可以让我们自己的记录在查询的时候更加便捷方便。题主也是心血来潮,借助 AI 实现了一个 python 版本的 rag 化思源笔记的能力。整个过程完全本地处理(需要本地部署 AI,也可以用云端的 AI),效果不错!

目前在本地已经通过了命令行使用的测试,还是个 demo 状态,但是已经能用了!

后续将尝试兼容到思源笔记内部去,会持续更新本帖

效果截图

如下是咨询了问题“SLAM 的概念”得到的回答,正确查询到了相关笔记并回答了内容:

image.png

此处使用的模型是本地部署的 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_MODELEMBEDDING_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 小时。

image.png

不知道各位觉得这个速度咋样,如果是云端 embedding 模型应该是可以并发执行 RAG 来提高一下速度的。但是 LM Studio 本地部署的模型接口不支持并发调用,所以暂时保持现状了。

不过好在 RAG 只需要执行一次就 OK 了(笔记有更新需要重新 RAG)。

后续计划

  • 想办法集成到思源笔记中
  • 想办法处理笔记更新的增量 RAG(现在只能全量重建,速度太慢了)
    • 这一项已经通过判断笔记本更新时间实现了!
  • 对本地可读的文件附件同样进行 rag(比如 txt、json、xml 等)
  • 调用 VL 模型,对图片进行识别总结后,rag(感觉没啥必要)
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28446 引用 • 119768 回帖
1 操作
muxue 在 2025-10-18 22:48:58 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • bosctzyhb

    先马一个,后面测试下

    1 回复
  • muxue

    老哥有时间试用了吗,效果如何?我只在我本地进行了非常简单的测试,还不确定效果通不通用