深蓝黑背景的品牌封面:左侧大标题「RAG 检索增强生成」,副标题「让大模型回答私有知识」,右侧装饰为一叠文档卡片流入数据库圆柱体的图案,象征文档进入知识库,左上标注「AI 工程知识专栏」,右上标注「Day 03 · 2026-09-11」 图 1:本文封面,点明主题「RAG 检索增强生成」。

先想象一个场景。你想给团队做一个内部问答助手,新人问「差旅报销怎么填」「这个老接口的参数含义是什么」,助手张口就答。直接问大模型?它从没读过你公司的制度文档,上下文窗口也装不下几百份文件,只能道歉或瞎编。隔壁团队的助手却对答如流。用的可能是同一个模型,差别只在一件事:有没有上 RAG。

核心结论一句话

RAG(检索增强生成)的核心是把知识放在模型权重之外:提问时先从一个可检索的知识库里找出最相关的几段材料,把材料连同问题一起交给模型,让它照着资料回答。模型负责理解与表达,检索负责提供事实。这个分工,是理解一切 RAG 系统的钥匙。

原理拆解:两条流水线

第一条是离线索引,文档入库时才跑。把文档收集起来、切成小段,用 embedding 模型把每一段编码成一个向量,存进向量数据库。LangChain 官方 RAG 教程把这一步概括为加载、切分、存储三件事,并明确说明索引「通常在独立流程中完成」,与问答链路分离。

第二条是在线问答,每次提问都跑。用户的问题同样被转成向量,去向量库里找出语义最接近的 Top-K 个片段,拼进提示词,模型基于这些片段生成回答。向量数据库同时服务两条线:离线写入,在线读取。

流程图:RAG 分两条流水线。紫色为离线索引:文档经过切分、Embedding 向量化后写入向量数据库;青色为在线问答:用户提问后检索 Top-K 相关片段,拼接进 Prompt 上下文,再由 LLM 生成有据可查的回答。向量数据库同时服务两条线,是在线检索的数据来源 图 2:RAG 的两条流水线——离线索引一次建好,在线问答每问必走。

为什么恰好解决两个老大难问题

一是知识过时。模型训练完,世界还在变。改权重要重新训练,改数据库只要更新几段文档。二是私有知识。内部资料从未出现在训练语料里,模型只能编;检索出的真实片段给了它作答的依据。

这正是原始论文的出发点:2020 年 Lewis 等人提出的 RAG 模型,把记忆分成「参数记忆」(预训练 seq2seq 模型)与「非参数记忆」(由神经检索器访问的维基百科密集向量索引),并在三个开放域问答任务上达到当时最优。Lilian Weng 在 Agent 综述中也把「长期记忆」直接定义为外部向量存储加快速检索——可以把 RAG 理解为给模型外接了一座图书馆。

把这两层放在一起看,RAG 的本质是一种「开卷考试」设计:不再要求模型把所有知识背进权重里闭卷作答,而是允许它答题时翻阅资料。开卷的价值不只是答得更准,还在于答案可追溯——每一段引用都能找到出处,答错了知道错在哪一篇资料;更新一篇资料,比重训一次模型便宜得多。

实际案例与工具现状

本地资料里有一条朴素的实践线索:把几百篇文章做成知识库时,直接丢大文件检索效果差,把内容切成较小的文件后检索明显改善——对应的正是离线索引里的切分环节。LangChain 官方教程的示范参数是每块 1000 字符、相邻块重叠 200 字符,重叠是为了不切断语义。工具层面,LangChain 提供文档加载器、切分器和数十种向量库集成;向量库一侧,开源的 Milvus 支持从笔记本原型到分布式集群的多种部署,内置 IVF、HNSW 等近似最近邻索引。

三个常见误区

误区一:把全文塞进提示词就行。上下文装不下,模型在长文本里找信息也容易出错;检索的意义就是只给它「用得上的那几段」。

误区二:以为向量检索等于关键词搜索。它匹配的是语义——「怎么请假」能命中「休假申请流程」。但语义相近不等于真的相关,检索质量决定回答上限。

误区三:检索到就万事大吉。片段可能过时、片面甚至自相矛盾,模型会照着错误材料一本正经地回答,来源标注和人工抽查不能省。

给你的行动建议

动手做一次最小闭环:选几十篇文档,按「加载—切分—向量化—入库—提问—拼接—生成」跑通一遍。然后故意问一个库里没有的问题,看模型是承认不知道,还是开始编。这个测试会告诉你,检索和提示词还有多少功课要补。顺手养成一个低成本习惯:把每轮检索命中的片段记录下来,回答错了先查检索环节——很多时候锅不在模型,而在压根没检索到对的资料。

你在搭知识库问答时最卡壳的环节是什么——文档切分、检索命中率,还是模型不看材料乱回答?欢迎分享你的经历。

参考资料

  • Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks(Lewis et al. 2020,arXiv:2005.11401,参数记忆+非参数记忆、维基百科密集向量索引、三个开放域问答任务最优) — https://arxiv.org/abs/2005.11401
  • LLM Powered Autonomous Agents(Lilian Weng,Lil'Log,2023 年 6 月,长期记忆=外部向量存储+快速检索) — https://lilianweng.github.io/posts/2023-06-23-agent/
  • Build a RAG App(LangChain 官方教程:索引=加载/切分/存储且在独立流程完成、切分示范 1000 字符重叠 200、数十种向量库集成) — https://python.langchain.com/docs/tutorials/rag/
  • What is Milvus(Milvus 官方文档:开源向量数据库,Lite/Standalone/Distributed 部署形态,IVF/HNSW/DiskANN 索引) — https://milvus.io/docs/overview.md