AnythingLLM诀窍:开源全栈 LLM 客户端+RAG。
AnythingLLM 是我最近重度使用的开源全栈客户端,它把 RAG、Agent 和多模型支持揉进了一个干净界面里。但很多人装完就只会拖几个 PDF 进去问问题,浪费了它的真正潜力。下面这5个技巧,是我踩坑后总结的硬核用法。
AnythingLLM 的工作区不是摆设。每个工作区可以绑定完全独立的向量数据库和 LLM 配置。比如我建了三个工作区:技术文档 绑定了本地 Ollama 的 qwen2.5 和 ChromaDB,客户邮件 绑定了 OpenAI API 和 Pinecone,代码审查 则用 Anthropic Claude。
怎么用? 在设置里创建新工作区时,注意“向量数据库”选项默认是全局的。要点“高级设置”手动选择每个工作区用哪个数据库实例。这样你问技术问题时,AI 不会莫名其妙从客户邮件里抽信息。而且每个工作区可以单独设置“聊天模式”和“查询模式”——技术文档用查询模式更精准,创意写作用聊天模式更灵活。
默认的嵌入模型对中文支持很差,搜“苹果手机”可能只匹配到“苹果”这个词。去设置里把嵌入模型换成 BAAI/bge-large-zh-v1.5 或 shibing624/text2vec-base-chinese,这两个模型对中文语义理解好得多。
操作路径: 设置 → Embedding Provider → 选 Ollama 或 HuggingFace 模型。注意如果本地跑不动大模型,可以用 text-embedding-ada-002 通过 API 调用,但中文效果还是不如专门的中文模型。换完后,把之前导入的文档重新“重新嵌入”(工作区设置里有按钮),你会发现搜索“退货政策”时,AI 能准确找到相关段落,而不是只匹配字面关键词。
AnythingLLM 默认的提示词会让 AI 说很多“根据您提供的文档,我们可以看到...”这类废话。在“工作区设置 → 提示词”里,可以写自定义系统提示词。比如我做代码审查时用这个模板:
你是一个严格的代码审查员。只输出:
1. 问题行号:描述
2. 风险等级:高/中/低
3. 修复建议:具体代码
禁止输出任何无关解释。如果文档中没有相关信息,直接回复“无相关信息”。
关键点: 提示词里加上“如果文档中没有相关信息,直接回复无相关信息”这句话,能避免 AI 胡编乱造。另外,可以用 {{context}} 和 {{question}} 占位符来控制上下文注入逻辑,默认是全部注入,你可以改成只注入最相关的3段。
很多人不知道 AnythingLLM 内置了 Agent 功能。在设置里启用 Agent 后,你可以给它绑定工具:比如“网页抓取”、“计算器”、“代码执行”。最实用的是“网页抓取”工具——让 AI 读一个网页后,再结合本地知识库回答问题。
实战场景: 我让它读一个 GitHub Issue 页面,然后问“这个 bug 和我的项目代码仓库里哪个函数相关?”Agent 会先抓取网页内容,再检索本地代码库,最后给出关联分析。注意 Agent 模式下要选一个支持工具调用的模型(比如 GPT-4 或 Claude 3.5),本地小模型基本用不了。
如果你有自己部署的模型服务(比如 vLLM 或 Ollama),在设置里选“自定义 OpenAI 兼容 API”,填入你的端点地址。比如 Ollama 跑在 http://192.168.1.100:11434,就填这个地址,模型名写 qwen2.5:7b。
进阶用法: 可以同时配置多个模型提供者。比如主模型用 GPT-4 处理复杂推理,嵌入模型用本地免费的中文模型,Agent 模型用 Claude。在“工作区设置”里每个模型可以单独指定,这样你不需要为所有功能付 API 费用。注意如果模型返回乱码,检查一下“最大 token”和“温度”参数,本地模型通常需要把温度调到0.3以下才能稳定输出。