
1. 为什么小白也需要一个自己的 AI 知识库你可能已经遇到过这种场景手头攒了几十份 PDF 报告、一堆 Markdown 笔记、还有几个网页收藏想问 AI 一个具体问题它却只能凭训练时的记忆瞎编完全不知道你这些资料里写了什么。这就是通用大模型的天花板——它不认识你的私有数据。RAG检索增强生成就是来解决这个问题的。简单说它先把你的文档切成小块、转成向量存起来你提问时先检索出最相关的几段再连同问题一起喂给大模型让它基于你的资料回答。这样既不用重新训练模型又能让回答有据可查。AnythingLLM 把这一整套流程做成了一个桌面软件开源免费Windows、Mac、Linux 都能跑数据全在本地。DeepSeek 则负责推理那一步中文理解好、Token 成本低。两者配合你就能拥有一个只属于自己资料库的问答助手。这篇面向零基础用户从装软件、配 Key、传文档到验证检索一步步走完。模型接入部分我用 TaoToken 统一管理 Key 和 API 通道省得在多个平台之间来回切换。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 后面配置会用到。2. 前置准备装好 AnythingLLM 并拿到可用的 API Key2.1 安装 AnythingLLM Desktop去 anythingllm.com 下载对应系统的安装包双击一路下一步即可。它不需要注册账号装完直接打开就是一个完整的工作台。首次启动会让你选一个数据存储目录默认就行所有向量和文档都放在那里不会上传到任何云端。打开后左下角有个扳手图标那是设置入口。先别急着传文档我们先把「大脑」接上。2.2 为什么用 TaoToken 统一接入AnythingLLM 支持很多模型提供方你可以直接填 DeepSeek 官方 Key也可以填 OpenAI、Claude 等。但如果你同时用好几个模型每个平台都要注册、充值、管 Key切换起来很烦。TaoToken 的思路是提供一个统一的 API 通道一个 Key 就能调用多种模型Base URL 和 Key 格式保持 OpenAI 兼容AnythingLLM 里直接选 OpenAI 兼容模式填进去就行。对小白来说好处是只维护一个 Key换模型只改一个模型名不用重新注册。API 地址是 https://taotoken.net/api 注意这个不带任何参数直接填。2.3 获取 Key 的路径登录 TaoToken 控制台后进 API Keys 页面创建一个新 Key复制下来。这个 Key 只显示一次建议先粘到记事本里。如果你还没账号从官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 进去注册即可。注意Key 相当于密码不要截图发群里也不要写进会公开的代码仓库。AnythingLLM 本地存储是加密的但养成好习惯没坏处。3. 可复制配置在 AnythingLLM 里接上 DeepSeek3.1 LLM 提供方设置打开设置 → LLM Preference。Provider 选「Generic OpenAI」通用 OpenAI 兼容然后填三个关键字段字段填写内容Base URLhttps://taotoken.net/apiAPI Key你刚创建的 TaoToken KeyChat Model Namedeepseek-chatChat Model Name 这里填你要用的模型标识。DeepSeek 的对话模型一般用 deepseek-chat推理增强版可以用 deepseek-reasoner具体以 TaoToken 控制台模型列表里显示的为准。填完点 Save右上角会提示保存成功。3.2 一份 settings.json 骨架参考AnythingLLM 的配置最终会落到本地存储目录下的 settings.json。你不需要手动改它界面操作会自动写入。但了解结构有助于排障下面是一份脱敏后的骨架字段名和层级是真实的{ LLMProvider: generic-openai, GenericOpenAiLLM: { model: deepseek-chat, basePath: https://taotoken.net/api, apiKey: sk-你的Key, temperature: 0.7, maxTokens: 2048 }, EmbedderProvider: native, VectorDBProvider: lancedb, Workspace: { name: my-knowledge-base, similarityThreshold: 0.25, topN: 4 } }几个参数解释一下。temperature 控制回答随机性知识库问答建议 0.3 到 0.7太高容易自由发挥。topN 是每次检索返回的片段数4 到 6 比较平衡太小可能漏掉关键信息太大则塞给模型的上下文变长、成本上升。similarityThreshold 是相似度门槛低于这个值的片段会被丢弃0.25 是个保守起点。3.3 Embedding 与向量库Embedding 模型负责把文本转成向量。AnythingLLM 自带一个本地 embedding 引擎新手保持默认即可它会在你第一次上传文档时自动下载模型。向量库默认 LanceDB本地文件形式零配置。如果你后面想换 bge-m3 这类多语言更强的 embedding需要本地跑 Ollama 加载模型再在设置里把 Embedder 切成 Ollama。这一步对纯小白可以先跳过默认引擎处理中文文档已经够用。4. 上传文档、向量化与对话验证4.1 建立工作区并上传左侧点「New Workspace」起个名字比如「我的资料库」。进入工作区后点上传图标支持 PDF、TXT、CSV、Markdown也能直接抓网页 URL。选一个你的 PDF 拖进去。上传后文件会出现在列表里但此时还没进知识库。你需要点文件右侧的「Move to Workspace」然后务必点一下「Save and Embed」。这一步才是真正的向量化界面会显示进度。很多人卡在这里——只上传不 Embed提问时当然检索不到。4.2 验证向量化是否成功Embed 完成后工作区文档列表里每个文件会显示被切成的片段数chunks。如果显示 0说明解析失败可能是扫描版 PDF 没有文字层需要先做 OCR。正常一份 20 页的 PDF 大概会切成几十到上百个片段。4.3 发起对话并查看引用点「New Thread」开一个新对话直接问一个只有你文档里才有的问题比如「第三章提到的部署步骤有哪些」。如果配置正确模型会基于检索到的片段回答回答底部有一个「Show Citations」按钮点开能看到它引用了哪几个片段、来自哪个文件第几页。这一步是判断 RAG 是否真正跑通的关键。如果回答泛泛而谈、Citations 为空说明检索没命中回到第 5 节排查。4.4 用 curl 单独验证 API 通道有时候问题出在 Key 或网络层而不是 AnythingLLM。你可以用一条 curl 命令单独测一下 TaoToken 通道是否通curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的Key \ -H Content-Type: application/json \ -d { model: deepseek-chat, messages: [{role: user, content: 你好回复一个字}] }如果返回 JSON 里 choices 有内容说明 Key 和通道都没问题那 AnythingLLM 里的问题就是配置字段填错了。如果返回 401检查 Key 是否复制完整返回 404检查 Base URL 是不是多写了或少了 /v1。5. 本篇常见错误排查报错一保存 LLM 设置时提示连接失败。九成是 Base URL 填错。TaoToken 的地址是 https://taotoken.net/api 不要在后面加 /v1AnythingLLM 会自动补全路径。如果你填了带 /v1 的地址可能变成 /v1/v1/chat/completions 导致 404。报错二上传文档后提问回答「我没有相关信息」。先确认文件是否点了 Save and Embed再看片段数是否大于 0。如果片段数是 0换一个文本型 PDF 测试排除扫描件问题。还可以把 similarityThreshold 临时调到 0.1看是否能检索到能的话说明门槛设太高。报错三Embedding 阶段卡住不动。首次运行需要下载本地 embedding 模型体积几百 MB网络慢时会卡。看设置里的 Embedder 页面有没有下载进度。如果长时间无响应重启软件再试已下载的部分不会重来。报错四回答里引用了不相关的片段。这是切分策略问题。AnythingLLM 默认按固定长度切遇到表格或代码容易切断语义。可以在工作区设置里调整 chunk size或者把长文档先手动拆成主题更集中的几个文件再上传。报错五Key 明明对但一直 429。429 是频率限制说明短时间内请求太多。知识库问答一次会带多个检索片段Token 消耗比普通对话大。等几十秒重试或者把 topN 调小到 3减少单次上下文长度。6. 把通道固定下来后面换模型只改一个字段走到这里你的本地 RAG 已经能跑了文档在本地、向量在本地、只有推理请求发出去。这套结构最大的好处是可替换——哪天你想把 deepseek-chat 换成别的模型只需要在 LLM 设置里改 Chat Model Name 一个字段Base URL 和 Key 都不用动。这就是统一通道的价值。如果你打算长期用、或者想接进自己的脚本和 Agent 里建议把 Key 和通道单独管理别散落在各个工具里。API Keys 页面在 https://taotoken.net/console/api-keys 接入文档在 https://taotoken.net/doc 里面有各语言的调用示例。需要长期跑编码或 Agent 任务的可以看 Coding Planhttps://taotoken.net/coding-plan 。想先试试模型对话效果的直接进 https://taotoken.net/models 体验。我自己的习惯是知识库这类一次性配置好就不动的用普通 Key需要频繁调模型做实验的单独建一个 Key 方便随时吊销。这样即使某个 Key 泄露影响范围也可控。