AnythingLLM RAG 知识库管理
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_6a9f8e36/anythingllm-rag-u。
技能介绍
它在解决什么问题
AnythingLLM Desktop 的 RAG 链路用起来有不少具体的坑:往工作区里逐个拖文件太慢且容易出错;内置 LLM 推理能力一般,碰到复杂问题就力不从心;升级或更换 embedding 模型后,知识库直接报 LanceError / Arrow dimension 错误;重启后 API 返回 403;改了 chunk_size 却毫无效果。这个技能就是围绕这些日常问题组织的。
核心能力与关键步骤
技能覆盖 AnythingLLM Desktop RAG 的完整生命周期,提供三个脚本化的构建块:
scripts/bulk_import.py— 并发上传 + 触发 embeddingscripts/lancedb_search.py— 绕过 LLM 直接查询 LanceDB 向量references/— 部署、调参与排障的详细文档
底层架构很清晰:SQLite(anythingllm.db)存放工作区元数据和系统设置;LanceDB 每个工作区对应一张 .lance 表,表名就是 workspace slug;embedding 模型走 Ollama 或云 API,同一工作区内输出维度必须保持不变。
三条工作流按需取用:
- 准备工作区 — 创建 workspace,把
chatMode设为chat走快速 RAG(设成automatic会触发慢速 agent 模式),并核对 embedding 维度。 - 批量导入 — 上传和触发 embedding 两步缺一不可。本地建议 10–15 并发、batch 20–50、延迟 2–3s(>1MB 文件用 5s)。导入后用 API 统计文档数、检查
backend-*.log中的 LanceError,再用lancedb_search.py抽样验证。 - 直查向量 + Agent 推理 — 内置 LLM 成为瓶颈时,用 Ollama 对查询做 embedding,直接搜
.lance表,把片段交给 Agent 平台做推理;复杂问题跑 2–3 个角度的查询再合并结果。
适用边界与注意点
几个容易踩的坑,排障时务必对照 references/ 里的条目:
- 维度不匹配:更换 embedding 模型后旧向量全部作废,需要备份、通过
/system/update-env设置EmbeddingOutputDimensions、重启、删除旧.lance表后重新导入。 - 403:通常是重启后 API key 变了,去 Settings 里取新的。
chunk_size不生效:要直接改 SQLite 的system_settings,而不是走 env API。- 找不到表:多半是 slug 记错了,用 SQLite 查询确认正确的表名。
检索打分规则为 score = 1 - distance/2,一般把 >0.7 视为高相关;且搜索用的 embedding 模型必须与入库时一致,否则召回结果没有意义。
使用场景
- 工作区里有几百份文档要入库,手动逐个上传既慢又容易出错,需要脚本并发上传并触发 embedding
- 更换 embedding 模型后重启报 LanceError/Arrow 维度错误,需要备份、删旧表、重新导入全部文档
- 内置 LLM 答不好复杂问题,想跳过它直接从 LanceDB 检索片段,再交给更强的 Agent 推理
- 重启后 API 报 403 或 chunk_size 改了不生效,需要排查 API key 与 SQLite 里的系统设置
适合人员
- 正在搭建私有知识库的 RAG 工程师,需要把大量文档稳定导入 AnythingLLM 并验证向量入库结果
- 用 AnythingLLM 做知识问答但对内置 LLM 不满意的开发者,想直查 LanceDB 再用更强模型回答
- 遭遇维度不匹配或 403 错误的 AnythingLLM 运维人员,需要按排障手册恢复知识库
- 希望做多角度检索并合并结果的技术用户,需要脚本批量查询和处理相似度打分