obsidian ollama 本地知识库

模型与算力

给 Obsidian 用户一套把笔记库接上 Ollama 的落地思路:先理清笔记怎么切块,再走通问答链路,最后知道什么情况下这套做法不划算。

你可能已经在本地用 Ollama 跑起了模型,笔记也堆在 Obsidian 里,但两边是断开的:笔记是笔记,模型只会闲聊。想把它们接成「能对着自己笔记提问」的本地知识库,卡点通常不在装模型,而在笔记格式太杂、切块太碎、检索召回不准,问出来的答案要么胡编,要么只复述半句话。这篇不讲原理,只给一条从整理笔记到验证效果的动作顺序,以及在哪种笔记结构下这套做法会失效。

你可能已经在本地用 Ollama 跑起了模型,笔记也堆在 Obsidian 里,但两边是断开的:笔记是笔记,模型只会闲聊。想把它们接成「能对着自己笔记提问」的本地知识库,卡点通常不在装模型,而在笔记格式太杂、切块太碎、检索召回不准,问出来的答案要么胡编,要么只复述半句话。

这篇不讲原理,只给一条从整理笔记到验证效果的动作顺序,以及在哪种笔记结构下这套做法会失效。整条链路拆下来就三段:笔记能不能被机器读懂、切块检索召回得准不准、模型有没有守住「只依据给定内容」的底线。哪一段塌了,最后那句回答都会飘。

先改笔记结构,再谈接模型

很多人一上来就装插件、拉模型,结果效果差,回头发现是笔记本身太碎。检索类工具吃的是「一块内容说清一件事」,你的笔记如果全是没主语的短句和缩进符号,切出来模型读不懂,向量也匹配不上。所以动手顺序应该是先改笔记,再动模型。

  • 把长笔记尽量拆成「一主题一文件」,标题写成人能读懂的问句或名词短语,切块和召回都靠它;
  • 避免纯大纲式、无主语的碎片笔记,这类内容切出来模型读不懂,检索也匹配不上;
  • 给每篇笔记加统一的前置属性(标签、来源、时间),后面过滤检索范围时用得上;
  • 同一主题的笔记合并成一篇,比散在五个文件里更容易被完整召回;
  • 在动手前先想清楚:这套只在笔记本身有可读的完整句时成立,纯脑图式笔记先别做。

切块与向量化:决定召回质量的两步

切块和嵌入是这条链路里最影响结果、又最容易被草草带过的两步。切块决定「模型看到什么」,嵌入决定「系统能不能把对的块找出来」。两步都不需要你懂模型内部,但都需要你拿自己的笔记反复试。

环节常见做法什么时候说明做错了
切块长度按段落走,一块只说一件事一块里塞了整章,回答开始复述标题
块边界在标题或换行处断开一句话被从中间劈成两块
嵌入模型中文笔记优先选中文语义表现更好的明显语义相近的笔记搜不出来
增量更新笔记改了重新生成向量问到的还是上一版的内容

嵌入模型和对话模型要分开看,别默认用同一个。中文笔记对嵌入的中文语义表现更敏感,选型思路可以到 /embeddings 对照当时的模型清单和说明。判断标准很朴素:随机挑几个你自己真提过的问题,看能不能召回对应笔记;召回不到就先调切块,别急着换模型。

把模型和笔记接起来,然后做三组验证

链路本身不复杂:提问 → 检索相关笔记块 → 拼进提示词 → 本地模型基于这些块回答。中间任何一环弱,答案都会飘。接起来之后别急着用,先按下面三组问题验一遍,比装十个插件都管用。

  1. 验证一:问笔记里明确写过的事实答案对不上或答不上来,基本是检索问题,回去调块粒度和召回数量,不是模型笨。
  2. 验证二:问笔记里没写的东西看它是否硬编。会硬编就在提示词里明确要求「只依据给定内容回答,找不到就说找不到」。
  3. 验证三:换个问法重复问同一件事答案不稳定说明检索阈值或块粒度需要调,别急着下结论说这套不可用。

如果你只是想尽快用上,而不是从头搭这套链路,可以先到 /ai-nav/category/ai-note 看看同类笔记型工具的常见做法,再决定自己搭还是用现成的。自搭的好处是数据不出本地、可控,代价是切块和检索参数要自己调。

什么情况下别硬上这套

这套做法有明确的失效边界。不算清楚边界就动手,最后多半是折腾半天、效果还不如直接翻笔记。下面几种情况尤其要提前判断。

  • 笔记量很少(几十篇以内)时,直接把相关笔记贴进对话框比整套检索更快,搭 RAG 是过度工程;
  • 笔记里大量是图片、手写扫描、表格截图时,纯文本检索基本失效,得先做 OCR 或换多模态路线;
  • 需要严格引用来源、要求答案可追溯到具体段落的场景,得自己把出处一并返回,不能只信模型转述;
  • 对回答准确率要求极高的法律、财务类笔记,把它当检索入口而不是结论来源,最终判断仍要回原文核对。
本地知识库的价值是帮你更快找到那页笔记,而不是替你下结论。
下一步想先确认自己适合自搭还是用现成方案,可以去工具目录按笔记类目筛一遍,再回来决定要不要自己接 Ollama。

常见问题

必须联网才能用吗?笔记会不会传出去?

Ollama 跑在本地、检索也在本地时,整条链路不依赖外网。前提是你用的嵌入模型和对话模型都是本地拉取的,没有把请求转发到远端接口。想确认这一点,可以去 /models/deploy 看部署形态的对照,再检查自己的调用地址是不是只指向本机。

本地模型答得不如在线模型好,是模型太弱吗?

多数时候不是。笔记检索类问答里,召回质量对结果的影响往往大于模型本身。先按「问笔记里写过的事」去测,如果连原文都召不回,换更大的模型也没用。排查顺序是切块方式、嵌入模型、检索条数,最后才轮到换对话模型。

笔记更新很频繁,每次都要重新处理一遍吗?

只有改动过的笔记需要重新生成向量,没必要全量重来。关键是给每篇笔记留一个稳定的标识和更新时间,增量处理时按它比对。如果笔记天天大改,先想清楚这套问答是不是真能省下时间,别为了维护索引反被牵着走。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。