AnythingLLM 教程, Ollama 本地知识库, DeepSeek RAG 搭建, 离线 AI 问答, 本地知识库部署

把几十份 PDF 扔给聊天机器人,不等于建成了知识库。

这话你可能听着刺耳,但它是对的。真正可用的本地知识库必须完成四件事:文档能稳定解析、内容能被正确检索、回答时引用原文、拔了网线还能跑。缺任何一环,你只是在一个好看的聊天界面上对自己撒谎。

本文用 DeepSeek + Ollama + AnythingLLM 这套方案,走完从零搭建到三轮验证再加断网测试的全流程。每一步我都会标注最容易配错的地方——因为我自己配错过。

RAG 是什么——三行字说清楚

别跳进安装命令之前,先理解这条链路。它不复杂:

PHP
你的 PDF/Word/Markdown
    ↓ 拆成小块(Chunks)
嵌进向量数据库(LanceDB,每条文本对应一组数字向量)
    ↓ 你提问时,问题也变成向量
从库中找出语义最相近的几段
    ↓ 把片段 + 问题一起丢给 DeepSeek
生成带上下文的回答

这就是 RAG(检索增强生成)。它解决的是「模型不认识你的私有资料」这个问题。但它不会自动保证正确——文档解析崩了、分段切歪了、检索漏了、小模型理解跑偏了,回答都会歪。

三个工具:谁管什么

这套方案用三个组件各司其职:

组件 管什么 本文选择
Ollama 下载、管理并运行本地模型,提供 API 服务地址 127.0.0.1:11434
DeepSeek-R1 理解问题、读检索片段、生成回答 deepseek-r1:8b(推荐起步)
BGE-M3 把文档和问题变成向量,做语义检索 bge-m3
AnythingLLM 管理工作区、文档、向量库、聊天界面 Desktop 单机版

最容易配错的地方在这: 聊天模型和嵌入模型是两个不同的东西,不能互换。DeepSeek-R1 负责回答,BGE-M3 负责向量检索。AnythingLLM 的下拉列表会同时显示两者——名字像,功能完全不同。等下配的时候我再说一遍。

硬件的真话:别一上来就上 14B

官方说基础配置是 16GB 内存、8 核 CPU。实际跑下来的体感:

  • 8GB 内存、无独显 → 用 deepseek-r1:1.5b 能跑通流程,但复杂问答能力有限,差不多是「证明链路能通」的水平
  • 16GB 内存、8GB 左右显存 → deepseek-r1:8b,模型文件约 5.2GB,本文推荐的起点
  • 32GB 内存或更高显存 → deepseek-r1:14b,回答质量更好,模型约 9GB
  • Apple Silicon Mac → 8B 起步,统一内存 16GB 以上从容

文档方面别贪多。第一轮就准备 3-10 份结构清楚、内容可验证的资料。扫描版 PDF 用之前先确认能不能选中文字——不能的话做 OCR。不然界面显示「上传成功」,实际上没有可检索的正文。

七步搭完整个链路

1. 装 Ollama

Ollama 官网

下载对应系统版本。Windows 需要 10 22H2+。装完后打开终端验证:

PHP
ollama --version
curl http://127.0.0.1:11434/api/version

能返回版本号就行。浏览器直接打开这个地址没界面是正常的——AnythingLLM 连的是 API。

2. 下载两个模型

PHP
ollama pull deepseek-r1:8b
ollama pull bge-m3

BGE-M3 约 1.2GB,支持 100+ 语言、最多 8192 Token 输入。先单独测一下 DeepSeek:

PHP
ollama run deepseek-r1:8b

输入一个中文问题,能正常回答就 /bye 退出。8B 跑不动就换 deepseek-r1:1.5b再说一遍:不要用 deepseek-r1 做文档向量化,那是 BGE-M3 的活。

3. 装 AnythingLLM Desktop

anythingllm.com/desktop 下载。Desktop 版对个人是最对的选择——单用户、一键装、资料全在本地。需要多人账号、权限管理和网页访问时再考虑 Docker。别一上来就 Docker,多一层部署多一层排查难度。

4. 连接三个配置项

打开 AnythingLLM 的设置面板:

  • LLM Provider:Ollama → http://127.0.0.1:11434 → 模型选 deepseek-r1:8b
  • Embedding Provider:Ollama → 同一地址 → 模型选 bge-m3
  • Vector Database直接用默认的 LanceDB。别为了「更专业」提前上 Milvus 或 Pinecone——LanceDB 处理常见本地知识库绰绰有余

如果模型下拉列表为空:先 ollama list 确认模型存在,再重启 Ollama 和 AnythingLLM。

5. 创建工作区并导入文档

一个工作区 = 一套独立的文档范围 + 聊天记录 + RAG 参数。不要把财务、产品、个人笔记全塞进同一个工作区,检索结果会互相串。

上传文件 → 检查是否完成解析(不是只出现在上传列表)→ 嵌入到工作区 → 等候向量化完成 → 再提问。

6 & 7 见下面的测试和提示词部分,单独展开讲。

用三类问题验真伪

别用「总结这些文件」当第一次测试。总结通顺也可能掩盖漏检。

精确事实题:

根据知识库,验收需要提交哪些材料?逐条列出,标明信息来源。不要补充文件中没有的要求。

答案必须能逐项和原文核对。

跨文档对照题:

比较 A 版和 B 版制度中关于审批时限的差异。分别引用。如果某份文件没说,写「文档未说明」。

这能检查检索是不是只扫到了其中一份。

反例题(最关键的一道):

知识库是否规定了海外差旅每天 500 元补贴?没有依据不要推测。

一个可靠的知识库必须允许模型回答「当前知识库中没有找到依据」。如果它永远能编出一个肯定答案,问题不在资料太少——是你的提示词和回答约束太松。

一段更可靠的工作区提示词

在工作区的系统提示框里加:

PHP
你是本工作区的资料检索助手。
回答优先依据检索到的文档片段。
涉及日期、金额、版本、数量和责任人,必须给出来源文件。
不同文档冲突时,分别列出,不自行选择。
没有找到直接依据时,回答「当前知识库中没有找到依据」。
不要把常识、猜测或模型记忆伪装成文档结论。

提示词能约束回答方式,但不能修复解析失败和漏检。原文就在库里但模型一直找不到——先查文档内容、Embedding 模型和 RAG 参数,再考虑换更大的 LLM。

检索不准?按这个顺序查

  1. 确认原文能被复制。 扫描 PDF 先 OCR,复杂表格转 Markdown
  2. 确认文件已经嵌入工作区。 上传列表里有 ≠ 已经写入向量库
  3. 确认 Embedding 模型选的是 BGE-M3。 不是 DeepSeek-R1、Llama 或其他聊天模型
  4. 用原文关键词测试。 关键词都找不到,说明解析或索引有问题
  5. 再调 RAG 参数。 适当增加 Max Context Snippets,或开 Accuracy Optimized 重排
  6. 最后才换更大的聊天模型。 检索片段都不对,换再大的 LLM 也只是更流畅地回答错误内容

这条顺序是你以后排查时的检查清单。收藏好。

怎么确认真的能断网跑

「用了 Ollama」不等于「整个链路自动离线」。只要 LLM、Embedding、重排服务或工具调用中有一项走云端,资料就离开了你的设备。

断网测试三步:

  1. 确认两个模型都已在 Ollama 中下载完成
  2. 确认 LLM 和 Embedder 都指向 127.0.0.1:11434,别启用联网搜索和外部 Agent
  3. 断网 → 重启 Ollama 和 AnythingLLM → 重新提问已验证过的问题

能跑通才算真正离线。

AnythingLLM 和 Obsidian 不是对手

这是我见过最多人搞混的一组工具。

  • AnythingLLM 本质是 RAG 问答层——你把现成的 PDF 扔进去,它帮你检索+回答。适合「问资料」
  • Obsidian 本质是笔记工具——你每天写、建链接、沉淀体系。适合「写知识」

不需要二选一。我一直推荐的做法:Obsidian 管 Markdown 原稿,AnythingLLM 负责问答。

日常笔记存在 Obsidian 的本地 Vault 里(Markdown 纯文本,天然可离线、可 Git 管理、可迁移);需要集中提问时,把选定目录导入 AnythingLLM,用 Ollama 完成本地检索。

注意:Obsidian 里的 Markdown 改了之后,AnythingLLM 的向量库不会自动同步。要么手动重新嵌入变动的文件,要么记一个「最后索引日期」。不然你问到的可能是旧版知识。

起步建议

第一次搭别想一口气把所有文档全灌进去。

先跑通最小闭环: 5 份文档 + 两个模型(DeepSeek-R1:8b + BGE-M3)+ 一个工作区。确认每一环都通:能解析、能检索、能说「没找到依据」、能断网运行。

闭环跑通之后,再决定要不要加文档、升模型。如果你主要是读现成的 PDF 和制度文档,从 AnythingLLM 开始;如果知识主要靠你自己每天写出来,从 Obsidian 开始;两种需求都有,就用 Obsidian 管原稿 + AnythingLLM 做问答层。

官方资料

本文最后更新于2026年7月14日,若涉及的内容可能已经失效,直接留言反馈补链即可,我们会处理,谢谢
声明:本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿用于任何商业目的与商业用途,如需商用请支持正版!如亲下载后改变其用途与使用方式,与本站无任何关系,本站已经进行告知义务!我们只做安全认证测试如果资源侵犯了您的版权利益,请联系站长邮箱:17606723350@163.com