检索增强生成(RAG)让大语言模型的答案立足于检索到的数据。了解其架构、分块、嵌入向量和检索流程。

摘要
检索增强生成(RAG)是一种AI架构,它在生成之前插入一个检索步骤,从外部知识库取出相关文档,作为上下文注入提示词,让语言模型的答案立足于真实数据,而不只是记忆。
想深入了解?请询问
检索增强生成(RAG)是一套把大语言模型连接到外部知识库的框架,好让它的答案立足于检索到的最新信息,而不只是它的训练数据。RAG系统不是要模型从权重里回忆事实,而是先搜索一个文档库,找出与问题最相关的段落,再把它们作为上下文送进提示词。模型随后依据这些证据撰写答案,通常还附上人可以核实的引用。
本文深入讲解RAG究竟是如何搭建起来的。如果您想要一份更简短、用大白话解释这个概念的概览,请看配套的RAG词条。这里聚焦的是架构:索引流程、分块、嵌入向量、向量库、检索与重排序,以及每一个设计选择对准确度和AI搜索可见度意味着什么。
RAG是一种系统设计,在大语言模型的生成步骤之前,先有一个检索步骤,从外部知识库取出相关文档并注入提示词。据Weka,Meta的研究人员在2020年的一篇论文中提出了RAG,用以应对模型仅依赖静态训练数据的局限,把检索的精确性与生成的流畅性结合起来。由此得到的是一套混合系统,它对自己刚刚查到的证据进行推理。
动机很简单。模型的参数化知识在训练时就被冻结了,覆盖不到某家机构的私有数据或昨天的新闻。RAG无需重新训练就弥合了这道缺口。Databricks报告称,超过60%的机构正在构建RAG工具,正是因为它们需要立足于专有信息或最新信息的可靠答案,而不是编造出来的猜测。
从宏观看,RAG系统分两个阶段运行。第一是检索:用户的问题被编码,系统在外部知识库中搜索语义相近的内容,并返回最相关的段落。第二是生成:这些段落与原始查询合并后送给语言模型,由模型综合出一个有事实依据的答案。正是这一模式,把RAG与那种仅凭记忆预测的裸模型区分开来。
在生产环境中,这会分成两条不同的流程。离线索引流程提前把文档摄入向量数据库,在线查询流程则在问题到达的那一刻完成检索并组装上下文。把繁重的工作放在离线,正是用户真正提问时检索能在数毫秒内完成的原因。
离线流程把您的知识准备成可快速搜索的形态。据BigData Boutique,它分为三个阶段。文档被切分成一个个片段,通常是256到1024个词元。每一个分块再用嵌入模型转换成一个稠密向量,比如现代的OpenAI或Cohere嵌入模型。这些向量随后与来源页面之类的元数据一起,存入Pinecone、Weaviate、Qdrant、OpenSearch或Elasticsearch这样的数据库。
提前一次性做完这件事,是效率的关键所在。系统不必在查询时扫描整篇文档,因为一切都已经被拆成建好索引的小块,于是用户提问时它只在数毫秒内搜索最相关的那部分。这条流程的质量,在很大程度上决定了之后每一个答案的质量。
分块是生产级RAG流程中最被低估的杠杆。如果分块的边界把意思拦腰截断,再好的嵌入模型也难以检索到正确的上下文。最常见的做法是预分块,即在嵌入之前把文档切成固定的小块,这要求事先确定分块大小和重叠幅度,但由于一切都已预先算好,检索会很快。
固定大小的分块只是起点。BigData Boutique指出,语义分块、父子块策略以及带重叠的滑动窗口,正越来越多地取代朴素的固定切分,以保留文档上下文并减少检索错误。合适的策略取决于您的内容:长篇技术文档、简短的支持文章和表格数据,各自适合不同的切分边界。出色的内容分块,正是检索质量的胜负手。
嵌入向量是语言与搜索之间的桥梁。嵌入模型把文本转换成一种能捕捉语义的高维数值表示,于是讲同一个意思的段落即便用词不同,也会在向量空间中彼此靠近。Weka指出,这些向量常常由BERT或SBERT这类基于Transformer的模型生成,它们与语义搜索背后属于同一族技术。
这些嵌入向量存放在一个为大规模相似度查找而建的向量数据库中。FAISS、Pinecone和Elasticsearch这类系统能为数百万个向量建立索引,并用近似最近邻搜索快速返回最接近的匹配。这就是支撑向量搜索的基础设施,也正是它让RAG无需依赖精确的关键词匹配就能找到相关上下文。
查询时的流程与摄入过程互为镜像。用户的文本先被规范化,并用建索引时同一个模型做嵌入,然后由近似最近邻搜索返回最相似的前k个分块,通常是五到十个。更成熟的系统还会加入重排序步骤,用交叉编码器给这些候选打分,在任何内容送到模型之前,把真正相关的段落顶到前面。
这些改进会层层叠加。BigData Boutique报告称,把基于关键词的BM25与稠密向量结合的混合搜索,能带来15%到30%的召回率提升,把召回率从大约0.72拉高到0.91,而交叉编码器重排序又能再增加5%到15%的准确度。选定的分块随后被注入提示词,模型生成一个有事实依据的回应,最理想的情况是标注出它用到的来源。
人们常拿RAG与微调作比较,但两者解决的是不同的问题。微调改变模型的权重,用来教授风格、格式或狭窄的技能,而每当事实发生变化就重做一遍,代价高昂。RAG则完全不动模型,在查询时把知识换进去,Weka强调这种方式适应性更强、成本效益更高,也更适合新闻、科学和技术这类不断演进的领域。
长上下文窗口是另一种替代方案,因为如今有些模型可以直接读取非常大的文档。但把一切都塞进提示词既昂贵又会稀释注意力,而RAG只检索相关的部分。在实践中,许多系统会把几种方法糅合起来,现代设计甚至把检索当成智能体可以调用的一件工具,这一演进把RAG与智能体搜索联系了起来。
RAG是大多数AI背后的架构,这使它成为生成式AI优化的核心。当助手回答一个问题时,它通常是在从某处检索分块,并以此为回应提供事实依据。被检索和被引用的内容,才是您的受众真正看到的内容,因此可被检索就是新的可被排名。
这让内容设计围绕分块重新展开。要成为RAG系统抓取的那个段落,您的页面需要清晰、自成一体的陈述,准确的事实,以及能扛过分块和嵌入的结构。强有力的AI事实锚定青睐那些易于提取和核实的来源,因此把整洁的原子化内容与有章法的关键词研究与内容规划结合起来,会直接提高您成为被引用来源的概率。
RAG最突出的优势是事实锚定。通过把答案与检索到的最新内容绑定,它降低了AI幻觉发生的可能性,这在医疗、法律和企业支持这类对准确度要求极高的领域尤为重要。由于输出可以带上引用,人可以去核实其中的论断,而不必盲目相信模型。
应用场景也就水到渠成。Databricks列举了用公司专属知识作答的客服聊天机器人、面向人事与合规问题的内部引擎,以及把AI答案与搜索结果配对的搜索增强。在每一种场景里,RAG都让机构无需承担重新训练模型的成本和延迟,就能让自己私有的、最新的数据发挥作用。
RAG很强大,但并非没有代价。检索会增加延迟,因此必须对流程调优,避免拖慢响应,而答案质量在很大程度上取决于知识库是否够新、够完整。垃圾进依然等于垃圾出:如果检索呈上来的是劣质或不相关的分块,模型照样会给出一个自信却错误的答案。
还有一些更隐蔽的失效模式。含糊的查询会检索到错误的上下文,敏感数据需要加密和访问控制,而把意思切断的分块边界会悄悄拉低结果。RAG缓解幻觉,但并不能消除幻觉,因此检索质量、评估和人工监督,仍是任何严肃部署中不可或缺的组成部分。
检索增强生成通过把离线索引流程与在线检索生成流程配对,让语言模型的输出立足于检索到的证据。它的质量取决于扎实的工程实践:合理的分块、优质的嵌入向量、快速的向量库,以及聪明的检索与重排序。做得好,它能产出裸模型给不出的那种准确、及时、可供引用的答案。
如果想要一份更轻量的概览,请阅读配套的RAG词条,并把它与嵌入向量和向量搜索联系起来,补全整幅图景。请使用Sorank的研究与内容规划工具,去撰写这些系统会检索的可提取内容。参考来源:BigData Boutique、Databricks和WEKA。
来源
微调通过额外的训练把新知识固化进模型的权重,代价高昂,而且会随着事实变化而过时。RAG则不去动模型,而是在查询时把新鲜的、检索到的文档喂给它,因此您无需重新训练就能更新知识库。微调最适合教授风格或格式,RAG则最适合处理最新的、事实性的和专有的知识。
不能,它只是减少幻觉。通过让答案立足于检索到的原文并支持标注引用,RAG给了模型真实的证据,而不是逼它依赖记忆。但模型仍可能误读某个段落、错误地糅合来源,或在检索返回劣质、不相关的分块时产生幻觉。检索质量、分块和人工核实都依然重要。
RAG是大多数AI答案引擎背后的架构,因此它们检索并引用的内容,就是您的受众看到的内容。要成为RAG系统抓取的那一块,您的页面需要清晰、自成一体的段落,准确的事实,以及能扛过分块和嵌入的整洁结构。撰写易于提取、组织良好的内容,会直接提高您被检索和引用的概率。
他们已先于您体验了 SORANK

