检索增强生成(RAG)包含两个主要阶段。首先,检索组件响应用户查询,从知识库中识别并获取相关信息。接着,生成阶段启动,大型语言模型(LLM)整合检索到的信息并形成最终答案。可以把RAG流程看作有两个主要引擎。第一个,检索器,负责找到原始材料(相关文本段落)。第二个,生成器,是处理这些材料、将其与原始请求结合并构建成品(即响应)的引擎。整合器:LLM在RAG中如何工作RAG系统中的生成器组件通常是一个预训练的大型语言模型。这可以是任何有能力的通用模型,例如GPT系列、Llama、Mistral或通过API访问或本地部署的其他模型。它在RAG架构中的主要作用是信息整合和连贯响应的生成。与标准LLM应用不同,标准应用中模型仅依赖其内部已有的知识(在其训练阶段学习到的),RAG系统中的LLM运行方式不同。它不仅接收用户的原始查询,还接收由第一阶段检索到的上下文片段。它的主要职责是:理解上下文: LLM必须首先理解检索器识别出的提供的上下文段落。将上下文与查询关联: 它需要理解这些段落如何与用户查询中的具体问题或指令相关联。整合信息: LLM不仅仅是复制粘贴检索到的文本。其优势在于能够整合可能来自多个片段的信息,将其与通用语言理解结合,并生成一段新的、连贯的文本,直接回应查询。生成自然语言: 最终输出必须是流畅、结构良好的自然语言响应,适合用户。请看这个流程图:digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fillcolor="#e9ecef", style="filled, rounded"]; edge [color="#495057"]; Query [label="用户查询"]; Context [label="检索到的上下文\n(来自检索器)"]; LLM [label="生成器 (LLM)", shape=cylinder, fillcolor="#a5d8ff", color="#1c7ed6"]; Response [label="生成的响应"]; Query -> LLM; Context -> LLM; LLM -> Response; }生成器LLM同时接收原始用户查询和检索到的上下文作为输入,并生成最终的响应。本质上,检索到的上下文充当有针对性的、即时可用的知识源,指导LLM的生成过程。这使得RAG系统能够生成以下特点的答案:更准确: 基于特定的、检索到的信息,而不是仅仅依赖于LLM可能过时或泛化的内部知识。更具体: 根据提供的上下文进行调整,从而减少通用性响应。更不容易产生幻觉: 通过提供相关的事实片段,RAG过程限制了LLM,减少了它编造信息的可能性。因此,LLM组件充当智能整合器。它利用其强大的语言能力,并利用检索器提供的特定、相关数据来引导它们。该阶段的有效性很大程度上取决于检索到的上下文如何很好地整合到呈现给LLM的提示中,本章后续部分将讨论这个话题。