🏷️ 标签(3)

🗂️ 分类(2)

6.4 Obsidian + Ollama 实现 RAG

6.4 Obsidian + Ollama 实现 RAG

本节介绍如何用 Obsidian 管理知识库,结合 本地 Ollama 完成 RAG(检索增强生成)。目标是:让本地笔记成为可检索的知识来源,并把检索结果注入到大模型提示词中生成回答。

一、RAG 工作流程

  1. 数据源:Obsidian 笔记(Markdown)

  2. 切分:按标题/段落拆分成片段(chunk)

  3. 向量化:对片段生成 Embedding 向量

  4. 向量库:本地索引保存(如 sqlite/FAISS/Chroma)

  5. 检索:问题向量与索引匹配,取 TopK 片段

  6. 生成:把片段作为上下文拼接进 Prompt,调用 Ollama 生成回答

二、最省事方案(插件优先)

方案 A:Smart Connections + Ollama

  • Smart Connections 负责本地向量检索

  • Ollama 负责本地大模型生成

  • 适合“零代码”快速落地

步骤建议:

  1. 安装 Smart Connections 插件

  2. 配置本地向量模型(Embedding)

  3. 指定 Obsidian Vault 进行索引

  4. 在插件中配置 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 搜索技巧

返回目录 | 返回首页