19 10 月 2026
大模型最大的短板是"不知道你的事":公司制度、产品文档、技术笔记,它一概没学过。RAG(检索增强生成)就是标准解法——把你的文档变成可检索的知识,回答时先查再答。这篇从原理到部署完整讲透。模型层部署见Ollama 本地大模型部署。

一、RAG 是什么:一句话原理

不用微调,让大模型"开卷考试"。

普通问答:你问「报销流程是什么」→ 模型凭训练记忆瞎猜 → 一本正经地胡说(幻觉)。

RAG 问答:你问「报销流程是什么」→ 系统先在你的文档里检索相关段落 → 把段落 + 问题一起塞给模型 → 模型基于检索到的内容回答,并附出处。

用户问题 ──> 嵌入模型(向量化) ──> 向量库检索 Top-K 相关文档块
                                          │
                                          ▼
                              问题 + 文档块 ──> 大模型 ──> 有据可查的回答

关键认知:RAG 解决的是"知识注入",不是"模型变聪明"。模型该不会的数学题还是不会,但它不知道的你的私有知识,从此有据可查。

二、硬件与方案选型

硬件需求:比想象中低

组件需求说明
对话模型Ollama + 7B Q46G+ 内存,见AI 应用选型
嵌入模型bge-m3 或 nomic-embed-text约 1–2G 内存,CPU 也跑得动
向量库内置或 Chroma/Qdrant轻量场景不用单独部署
磁盘文档量 × 2原文 + 向量索引

一台 4核8G 的 NAT 型服务器就能跑完整 RAG 栈——文档嵌入是一次性计算,日常问答只吃内存,公网 IP 完全不参与。这也是 RAG 被称为"最适合普通云服务器的 AI 应用"的原因。

软件方案对比

方案定位适合谁
AnythingLLM开箱即用,文档上传即问答个人/小团队,首选
MaxKB中文友好,国产开源国内团队,中文文档为主
Dify完整 LLM 应用平台要把 RAG 做成产品/多应用
RAGFlow深度文档解析强PDF/扫描件为主的严肃场景
自建(LangChain+Chroma)完全可控开发者,要定制管线

这篇以 AnythingLLM + Ollama 为主线——这套组合零外部依赖、全私有、一小时能跑通,是自托管 RAG 的性价比之选。

三、实战:AnythingLLM + Ollama 全流程

第 1 步:确认 Ollama 就绪

# Ollama 装好并拉好模型(教程见前文)
ollama pull qwen2.5:7b-instruct-q4_K_M   # 对话模型
ollama pull bge-m3                        # 嵌入模型(中文效果好)
curl -sS http://127.0.0.1:11434/api/tags  # 确认服务活着

第 2 步:部署 AnythingLLM

docker run -d --name anything-llm \
  --restart unless-stopped \
  --add-host=host.docker.internal:host-gateway \
  -v /data/anythingllm/storage:/app/server/storage \
  -p 127.0.0.1:3001:3001 \
  mintplexlabs/anythingllm

--add-host 那行是让容器里的服务能通过 host.docker.internal:11434 访问宿主机的 Ollama——Docker 网络的基础操作,见Docker 数据卷与网络详解。

第 3 步:界面配置(三处设置)

浏览器开 http://127.0.0.1:3001,进设置:

  1. LLM 提供商:选 Ollama,URL 填 http://host.docker.internal:11434,模型选 qwen2.5:7b-instruct-q4_K_M
  2. 嵌入模型:选 Ollama,填 bge-m3——工作区建好后不能换嵌入模型,选了再建区
  3. 向量数据库:默认的 LanceDB 就行,小规模不用换

第 4 步:建工作区 + 传文档

工作区(Workspace)是知识的基本单位,按主题建:「公司制度」「产品文档」「我的笔记」……

传文档支持 PDF/Word/Markdown/网页链接等,上传后自动切片、向量化。传完问一句文档里明显有的内容,能答上来说明链路通了。

第 5 步:对外服务

和 Ollama/SD 一样的套路:反代 + HTTPS + 鉴权,参考Stable Diffusion 对外服务里的 Nginx 配置,把端口换成 3001,删掉 WebSocket 段即可。

四、效果调优:RAG 的生死线

「部署很简单,效果看调优」。按影响力排序:

1. 文档切片(Chunk)大小——影响最大

切片大小适合风险
256 字符短问答、事实型文档上下文被切断,答非所问
512–1024 字符通用甜点区平衡
1500+长上下文模型 + 叙述性文档检索噪声大,token 消耗高

切片之间要有重叠(overlap 10–20%),防止一句话正好被切在两段里、两边都检索不全。

2. 检索数量 Top-K

检索回来的文档块,取前 K 个喂给模型。K 太小漏知识,太大掺噪声还费 token。从 4 开始试,漏答案就加到 6–8。

3. 嵌入模型必须匹配语言

中文文档用英文嵌入模型(如老版 text-embedding-ada)是经典悲剧——语义空间对不上,检索全跑偏。中文场景用 bge-m3(中英俱佳)或 gte-large-zh,英文为主用 nomic-embed-text。

4. 提示词里要求"基于资料回答"

AnythingLLM 默认会带这句,自建管线务必自己加:

请严格基于以下资料回答。如果资料里没有答案,明确说"资料中未提及",不要编造。
资料:
{检索结果}

这一句能把幻觉率打下来一个数量级。

5. 表格和扫描件是重灾区

PDF 里的表格解析出来常常是一团乱码——先转 Markdown 再喂。扫描件要走 OCR。文档质量决定 RAG 上限,花半小时把文档格式整干净,胜过调半天参数。

五、常见问题排查

症状原因解决
答非所问、开始自由发挥检索没命中,模型在硬编换关键词问;检查嵌入模型语言匹配;调大 Top-K
「资料中未提及」但文档里明明有切片切断语义 / 表格乱码调大 chunk + overlap;文档转 Markdown
上传后一直"处理中"嵌入模型没配对、内存不够确认嵌入模型选的是 bge-m3;free -h 看内存
回答慢7B CPU 推理的固有速度正常 10–30 tokens/s;要快加配置或换小模型
换嵌入模型后检索全废向量库用旧模型编码,空间不兼容删工作区重建,重新向量化
磁盘一直涨每次传文档都留版本清理 storage 里旧文档版本

系统化的服务器排查方法论见服务器故障排查完全手册,内存吃紧的应急见Swap 分区与内存优化。

六、从能用到好用:进阶方向

跑通基础问答后,这几个方向值得投入:

  1. 接入对话界面:AnythingLLM 自带聊天界面,也可以把 Ollama 的 API 接给 LobeChat,知识库用 AnythingLLM 管
  2. 自动化更新知识库:文档放 Git/网盘,用 n8n 工作流定时同步 + 重新向量化,知识永不过期
  3. 多工作区隔离:不同部门/主题分开建,提问时指定工作区,避免知识串味
  4. 升级到 Dify/RAGFlow:当知识库要开放给全公司、要管权限、要做成产品时再迁,数据可以导出迁移
  5. 备份向量库:/data/anythingllm/storage 定期备份,重新向量化一次要几十分钟,见数据备份体系完全手册

结语

RAG 是当前最务实的大模型落地方式:不动模型权重,不买 GPU,一台 4核8G 的 CPU 服务器 + Ollama + AnythingLLM,就能把散落的文档变成一个随问随答的私有专家。效果上限取决于文档质量和切片调优,而不是机器配置——这是少数"用心比花钱更重要"的 AI 场景。

需要搭知识库的服务器,可以看看财富云计算:NAT 型云服务器内存档位全(4G 到 32G+)、支持热升级,SSD 系统盘 + 数据盘放文档和向量库,价格比独立 IP 机型省一半以上——RAG 这种"吃内存不吃公网 IP"的场景,NAT 型刚好对症。

延伸阅读
  1. Homepage 个人仪表盘:把散落各处的服务收进一个首页
  2. SSL 证书完全指南:免费证书、自动续期与不过期监控
  3. 数据备份体系完全手册:从随手拷到 3-2-1,让数据永远丢不了
  4. 压测与容量规划:上线前就知道你的服务器能扛多少人
  5. AdGuard Home 内网 DNS:全家去广告、防劫持、内网解析一站解决
  6. Hugo 静态博客搭建:秒开的博客,部署只要一个目录
  7. 安全应急响应完全手册:服务器被入侵后,按这个流程走
  8. 游戏服运营完全手册:从开服到停服,把一台服务器运营成百年老店
更多阅读
  1. 上一篇:ComfyUI 进阶部署:节点流工作流、API 自动化与显存优化
  2. 下一篇:AI 应用的安全与成本控制:无鉴权 API、白嫖攻击与费用熔断
发表评论 4

取消回复