如何利用ollama和Obsidian构建本地AI写作助手

ollama与Obsidian的结合可以有效读取Obsidian中的所有文档,实现本地知识库的问答以及与大型模型的对话。这种方式相较于我之前介绍的ollama+MaxKB,构建本地AI知识库而言,无需进行额外的部署和上传文档到其他平台。这种组合对于像我这样使用Obsidian作为写作工具的文字工作者尤为实用。在撰写Macbook Pro M2 Max 96G 8TB性能测试,成功运行Llama 70B和Mistral 8x7B(4位量化)时,我下载了ollama及其4位量化的Llama 70B模型,该模型仅占30G内存,并且运行速度极快。ollama的配置可以在官方页面找到下载教程。首先下载应用程序,然后在终端运行ollama run llama3:70b。不同模型的内容质量有所差异,作为示例,这里使用ollama。如果中文笔记数量较多,建议寻找一个开源的中文LLM,如最近表现较好的Qwen,详情见下图。

图片

ollama下载完成模型后,打开应用程序,在Obsidian中搜索插件“Smart Second Brain”,安装后在配置中选择聊天模型,根据已下载的模型进行选择,向量模型embedding model可随便选择,稍后会解释如何下载ollama base URL,默认的base URL可以不更改。exclude field用于设置不希望大型模型访问的文档。

图片

设置完成后,返回到写作页面,在左侧点击对话气泡框,出现Smart Second Brain的窗口后,按照步骤操作即可。

图片

在第8个步骤时,您需要设置向量模型。直接点击,系统会自动下载ollama的向量模型,默认是nomic-embed-text。据ollama官方表示,在长短文本的表现上,nomic-embed-text超过了OpenAI的text-embedding-ada-002和text-embedding-3-small的性能。

“nomic-embed-text is a large context length text encoder that surpasses OpenAI text-embedding-ada-002 and text-embedding-3-small performance on short and long context tasks.”

模型大小为300M,下载时间不会太长,下载完成后会自动开始对Obsidian中的Markdown文档进行向量嵌入,40篇2000字的文档大约需要30秒。您可以设置creativity,数值越大,回答内容越发散,适合初期文稿写作,让AI提供选题和主旨等需要创造性思维的用途。similarity则用来设置LLM检索的文档内容与用户问题的匹配度,数值越大,LLM检索的内容与用户问题的相关性越高。我用英文测试了RAG水平,使用Llama 3:70B之前测试了中文,发现容易出现英文偏向,因此这次用英文测试,正好最近阅读完《Bresson on Bresson Interviews 1943-1983》整理了一些要点,询问Llama 3:70B关于罗伯特·布列松对待50mm镜头的态度。然而,Llama并没有根据左侧的笔记文档知识库提供回答,反而是在终端直接询问的Llama 3:70B的回答质量更高。

图片

这也难怪Llama 3:70B在排名上表现优异,训练数据的内容比我写的更加丰富。对于不需要实时网络搜索和知识库问答的AI辅助写作,它能够提供灵感和素材,实际运用中非常方便。在笔记的右侧进行对话即可,无需切换到其他平台,并且不需要联网,所有运行和数据处理均在本地进行。若我需要写读书笔记,完全可以利用Obsidian中的ollama,下图展示了ollama使用Llama 3:70B生成的读书笔记。

图片

尽管向量解析所有文档以进行知识库问答时的回答质量相对较低,但可以就单篇文章进行提问,使用Obsidian自带的语法[[ ]]便可连接到文档,仍然可以基于文章内容进行回答。

图片

如果想要连接互联网的LLM以提供更多素材,可以考虑国内的kimi和秘塔API(需付费)。我曾经使用过LLM Red Team的免费API,但在几天后账号就被kimi封禁,无法再次登录。这两家模型本身具备实时网络搜索能力,能返回真实存在的链接。然而,目前Obsidian中许多与LLM相关的插件不支持国产商用模型,支持的大多是开源模型,或像ollama和LM studio这样的本地大型模型集合工具以及国外的商用模型如GPT、Gemini、Claude等。Obsidian中的LLM插件包括前面提到的Second Smart Brain、Copilot、BMO ChatBot等。其中,BMO ChatBot支持的模型更为广泛,包括商用模型和开源模型,并且可以直接在Obsidian中编写模型的prompt。

图片

总结

总的来说,将LLM接入Obsidian为写作的用户带来了至少三个好处:

  1. LLM能够提供写作思路、灵感、素材和标题参考。
  2. LLM有助于优化句子表达。
  3. LLM可以生成配图。

这些能力的有效性取决于所使用的大模型的内置能力。有些大模型自带了AI画图能力,而有些则没有,因此需要根据自身需求找到适合的大模型来提升写作效果。

  1. 尝试将Obsidian与具备联网功能的大模型API(如kimi、metaso)对接,或者让大模型能够进行工具调用,连接搜索插件。
  2. RAG技术应对现有文档进行知识库问答,因为问答的质量最好是基于问答对的形式,而非随意的文档,这样问答效果会更好。缺少一个高质量检索文档内容的模型将影响问答效果。