AnythingLLM 教程:用 Ollama 在自己电脑上和文档聊天
如果你想对自己的 PDF、笔记和网页提问,又不想把它们发给云服务,AnythingLLM 是最容易上手的方式之一。它是一个把模型、嵌入模型和向量数据库包在同一个界面里的应用,你不用自己把这几部分接起来。这篇 AnythingLLM 教程讲安装、连接 Ollama、选择嵌入模型、建立工作区、理解几种聊天模式,以及解决最常见的抱怨:回答说没有找到相关信息。它建立在我们的本地 RAG 知识库指南之上,那篇文章讲了这条流程背后的原理。
核对说明:关于 AnythingLLM 的事实(桌面版和 Docker 安装、3001 端口、内置嵌入模型和 LanceDB 默认值、聊天模式、16GB 内存建议、存储文件夹、Ollama 地址)来自 AnythingLLM 官方文档,我们在 2026-10-30 查看时文档显示版本为 1.19.0。写这篇文章时我们没有安装或测试它,所以不提供速度或质量数字。截图位置已标注,由团队补充。
要点速览(更新于 2026-10-30)
- AnythingLLM 可以作为桌面应用或 Docker 容器运行;桌面版把数据保存在本地存储文件夹里,其中包含 LanceDB 向量库。
通过 http://127.0.0.1:11434 连接 Ollama,或者使用内置模型;请先选好嵌入模型,之后尽量不要更换,因为换了就要重新嵌入文档。
如果 Query 模式说没有找到相关信息,请在工作区设置里放宽相似度阈值,并用文档里的原话来提问。
AnythingLLM 是什么
AnythingLLM 是一个开源应用,用来和文档聊天,也能运行简单的 AI 智能体。你给它文件,它把文件切成小块,用嵌入模型把每一块变成向量,存入数据库;你提问时,它检索最接近的块,交给语言模型写出回答。这条流程叫检索增强生成,简称 RAG。AnythingLLM 的文档为每个环节列出了许多选择:Ollama、LM Studio 以及它自带选项等本地语言模型,需要时可用的云服务,几种嵌入提供者,还有本地或托管的向量数据库,其中 LanceDB 是本地默认值。
对本地部署来说,重点是每个环节都可以留在你自己的机器上。用 Ollama 做模型、内置嵌入模型、LanceDB 做存储,你的文档不会发送到任何地方。如果你混用了云服务,需要检查什么,请看我们的隐私指南。

AnythingLLM 教程:桌面版还是 Docker 版
桌面版是在 Windows、macOS 或 Linux 上最简单的起步方式。按文档所说它很轻量,推荐的基本配置是 16GB 内存和八核 CPU;在 Windows 上,有 8GB 到 12GB 以上显存的 GPU 对本地模型有帮助,在 Mac 上任何 M 系列芯片都能运行本地模型。AnythingLLM 本身很小,真正的要求来自你选的模型,请用我们的显存指南让模型与硬件相匹配。
Docker 版适合放在服务器上。快速入门会启动一个容器,然后在浏览器里打开 http://localhost:3001。只要挂载了存储目录,数据会在容器重建后保留。文档还提到容器里可以开启带 GPU 支持的内置 LLM 选项,以及使用 PostgreSQL 和 pgvector 扩展的另一个镜像。如果想让多人从其他机器使用,我们的家用 AI 服务器指南讲了网络与安全方面的做法;没有认证时请不要把这个端口发布到互联网上。
连接 Ollama
先像我们的安装指南那样装好并测试 Ollama,拉取你想用的模型。在 AnythingLLM 的设置里,选择 Ollama 作为 LLM 提供者。对于默认的本地安装,文档说应连接 http://127.0.0.1:11434。如果 AnythingLLM 运行在 Docker 里而 Ollama 在宿主机上,容器内的 127.0.0.1 指的是容器自己,所以要使用 Docker 提供的宿主机地址;文档专门有一页讲如何在 Docker 中连接 localhost,就是为了这个问题。选一个显存放得下并留有上下文余量的模型,因为检索到的片段会让提示变长。
如果你更喜欢图形化的模型管理器,LM Studio 也是受支持的提供者,可看我们的 LM Studio 教程。如果想换一个 Ollama 的浏览器界面,Open WebUI 是另一个选择,同样支持上传文档。
上传前先选好嵌入模型
嵌入模型把文字变成向量,它是在系统范围内设置的,而不是按工作区设置。默认是不需要配置的内置嵌入模型,Ollama 和 LM Studio 也可以提供嵌入。文档提醒,一旦你上传并嵌入了文档,就应避免更换提供者,因为不同模型产生的向量不兼容;如果更换,你必须删除文档并重新嵌入。所以要先决定。对中英文混合的文档,在嵌入大型资料库之前,请先用小样本测试几个问题,因为不同嵌入模型的语言覆盖不同,我们在这里没有做过基准测试。
工作区与上传文档
工作区是一个独立的项目,有自己的文档、聊天记录和设置。每个主题建一个工作区,比如一个放产品手册,另一个放个人笔记,这样不相关的文档在检索时就不会互相争抢。通过界面上传文件,再把它们移入工作区,保存并嵌入。文档区分了两种使用文件的方式:附加到聊天里做全文插入,适合想让模型完整阅读的短文档;嵌入后做检索,适合大型资料库,每个问题只需要其中几段内容。
在桌面版里,所有内容都存放在一个文件夹中,可以点击右上角的版本号打开它。里面有 LanceDB 向量库、解析后的文档、嵌入缓存、本地模型、SQLite 数据库和日志。请备份这个文件夹,并记住删除它就会删掉你嵌入好的资料库。
存储文件夹里有什么
| 文件夹或文件 | 里面是什么 | 要备份吗 |
|---|---|---|
| lancedb | 本地向量数据库及其表 | 要,或从文档重建 |
| documents | 已上传文件解析后的内容 | 要 |
| vector-cache | 嵌入缓存,文件名是哈希值 | 可选,能省去重新嵌入的时间 |
| models | 本地语言模型和嵌入模型,通常是 GGUF | 可选,可重新下载 |
| anythingllm.db | 含工作区和聊天记录的 SQLite 数据库 | 要 |
| plugins | 自定义智能体技能 | 若自己写过就要 |
| logs | 应用日志 | 调试时保留 |
向量库和缓存都是由文档生成的,所以最有价值的是你上传的原始文件,以及保存聊天记录和设置的 SQLite 数据库。如果桌面版更新后表现异常,在做任何激烈操作之前,先把整个文件夹复制一份。
让模型匹配你的机器
AnythingLLM 不会改变你的硬件能跑多大的模型,所以仍按平常的方法估算模型大小。检索会给每个提示增加额外文字:如果系统取回四个几百字的片段,在你的问题之前,提示就已经多出一千多个 token。4 位的 7B 或 8B 模型在许多 8GB 显卡上可以运行,但如果想要更长的上下文或更大的块,12GB 或 16GB 显卡会更从容。如果运行 AnythingLLM 的机器没有 GPU,文档建议把模型放在另一台有 GPU 的机器上,通过网络连接,因为 AnythingLLM 能使用任何提供 API 的 LLM。对于连接家庭服务器的笔记本客户端,这是很有用的模式。
第一个模型不妨选得保守些,并用你自己的文档来判断回答质量。更大的模型通常更能遵循指令、更可靠地引用来源,但检索问题,比如漏掉了片段,并不会因为模型更大就消失。如果答案错误是因为正确的段落根本没被检索到,应当先修切块、嵌入模型或提问方式,再考虑换更大的模型。
三种聊天模式

AnythingLLM 的文档介绍了 Chat、Query 和 Agent 三种模式。Chat 模式同时使用你的文档和模型的通用知识,灵活,但可能把文档里的事实和猜测混在一起。Query 模式只使用你文档里的信息,找不到答案时会明说,适合用在手册或合同上。Agent 模式让模型调用工具,如联网搜索或文档总结,它依赖模型对工具调用的支持,所以小模型可能无法稳定地使用工具。
| 任务 | 建议模式 | 原因 |
|---|---|---|
| 在制度文件里找出准确条款 | Query | 把回答限制在文档内 |
| 总结一份长报告 | Chat 或 Agent | 需要整体理解 |
| 根据笔记头脑风暴 | Chat | 允许使用通用知识 |
| 上网查资料再与文件结合 | Agent | 需要工具 |
解决“没有找到相关信息”
文档说,Query 模式出现这条消息通常有三种原因:信息在文档里但措辞不同,相似度阈值太严格,或者文档被切分的方式让它很难被找到。快速的解决办法是:打开工作区设置,进入向量数据库设置,把文档相似度阈值设为“不限制”;并且用文档里的词来提问,比如手册里使用的原句。如果回答仍然不对,检查文本切分与分块设置:块太小会丢失上下文,块太大会稀释信息;还要确认文件被解析成了可读文本,没有文字层的扫描版 PDF 需要先做 OCR。
合理的第一次测试
先从一份你很熟悉的文档开始,比如一份十页的指南。嵌入它,切换到 Query 模式,问五个你知道答案的问题。对照原文检查每个回答,记下哪些失败。然后每次只改一个设置:阈值、分块或模型。只有小规模测试跑通以后,才上传大型资料库,因为重新嵌入几百个文件很浪费时间。也要记得上下文长度:如果模型通过 Ollama 运行,我们关于上下文长度的说明解释了为什么检索到的长段落需要更多内存。
常见错误
- 上传后再更换嵌入模型:不同模型的向量不能混用,要么全部重新嵌入,要么保持原来的。
- 把所有文档放进一个工作区:不相关的文件会在检索时互相争抢,降低回答质量。
- 用很小的模型跑 Agent 模式:工具调用需要对其支持良好的模型。
- 让 Docker 连接 127.0.0.1:在容器里这个地址指的是容器本身,而不是你的宿主机。
- 不核对来源就相信回答:重要内容请打开引用的段落查看。
常见问题
AnythingLLM 是免费的吗?
应用是开源的,桌面版配合本地模型使用没有授权费用。文档里也列出了付费选项,比如桌面版的 Pro 方案和托管云服务,本地部署不需要它们。
AnythingLLM 需要联网吗?
如果使用本地模型、内置嵌入模型和本地向量数据库就不需要。下载应用和模型,以及使用联网搜索功能时需要互联网。
它使用哪种向量数据库?
LanceDB 是本地默认值。文档还列出了 Chroma、Milvus 和几种云数据库。
能在 Docker 里配合 Ollama 使用吗?
可以,但要使用能到达宿主机或 Ollama 容器的地址,不能用 AnythingLLM 容器内部的 127.0.0.1。
怎样让 Query 模式更常给出答案?
把文档相似度阈值设为“不限制”,用文档里的原话提问,并检查分块设置。
我的数据存放在哪里?
桌面版存放在你用户目录下的一个存储文件夹里,可以通过应用里的版本号打开。
和我们聊聊
在搭建文档助手,卡在检索质量上?欢迎加入社区,或发邮件到 admin@microaione.com。
参考资料:AnythingLLM 文档、系统要求、聊天模式、数据存放位置。
