6.4 Obsidian + Ollama 实现 RAG
6.4 Obsidian + Ollama 实现 RAG
本节介绍如何用 Obsidian 管理知识库,结合 本地 Ollama 完成 RAG(检索增强生成)。目标是:让本地笔记成为可检索的知识来源,并把检索结果注入到大模型提示词中生成回答。
一、RAG 工作流程
-
数据源:Obsidian 笔记(Markdown)
-
切分:按标题/段落拆分成片段(chunk)
-
向量化:对片段生成 Embedding 向量
-
向量库:本地索引保存(如 sqlite/FAISS/Chroma)
-
检索:问题向量与索引匹配,取 TopK 片段
-
生成:把片段作为上下文拼接进 Prompt,调用 Ollama 生成回答
二、最省事方案(插件优先)
方案 A:Smart Connections + Ollama
-
Smart Connections 负责本地向量检索
-
Ollama 负责本地大模型生成
-
适合“零代码”快速落地
步骤建议:
-
安装 Smart Connections 插件
-
配置本地向量模型(Embedding)
-
指定 Obsidian Vault 进行索引
-
在插件中配置 Ollama 作为 LLM
方案 B:Text Generator + 本地检索
-
Text Generator 可接入自定义模型接口
-
检索逻辑可用 Dataview/索引插件
-
适合可控性更高的场景
三、Ollama 本地模型准备
ollama pull llama3
ollama pull nomic-embed-text
默认 API 地址:
http://localhost:11434
Embedding 示例:
POST /api/embeddings
{
"model": "nomic-embed-text",
"prompt": "你的笔记片段"
}
生成示例:
POST /api/generate
{
"model": "llama3",
"prompt": "上下文...\n问题..."
}
四、检索与提示词拼接建议
-
TopK 取 3~8 条片段
-
每段 300~800 字较合适
-
明确指令:只依据提供片段回答
-
保留引用:可输出来源链接/标题
示例 Prompt:
你是我的知识库助手,只能使用以下上下文回答:
[片段1]
...
[片段2]
...
问题:...
五、常见问题排查
-
回答不准确:检查切分粒度与 TopK 数量
-
无法命中:检查向量模型与文本语言匹配
-
速度慢:减少索引规模或启用缓存
小结
Obsidian + 本地 Ollama 的 RAG 方案可以做到完全本地化、低成本、可控性高。建议先用插件快速落地,再逐步演进到自定义检索流程。
上一节:6.3 搜索技巧