RAG 技术全解析
RAG(Retrieval-Augmented Generation,检索增强生成),是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强大的功能基础上,RAG 将其扩展为能访问特定领域或组织的内部知识库,所有这些都无需重新训练模型。这是一种经济高效地改进 LLM 输出的方法,让它在各种情境下都能保持相关性、准确性和实用性。

RAG主要由三个步骤组成:Indexing、Retrieval、Generation。
- 索引:文档被分割成块,编码成向量,存储在向量数据库中;
- 检索:基于语义相似度检索与问题最相关的 k 个块(top-k chunks);
- 生成:将原始问题和检索到的数据块一起输入 LLM,生成最终答案。
RAG 发展经历了三个阶段:Naive RAG、 Advanced RAG 和 Modular RAG。
Naive RAG
Naive RAG 遵循传统过程Indexing-Retrieval-Generation,也被称为“ Retrieve-Read”框架。
索引(Indexing)
索引首先清理和提取各种格式的原始数据,如 PDF、 HTML、 Word 和 Markdown,然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成更小的、可消化的块(chunk)。然后使用嵌入模型将块编码成向量表示,并存储在向量数据库中。这一步对于在随后的检索阶段实现高效的相似性搜索至关重要。
知识库分割成chunks,并将chunks向量化至向量库中。
检索(Retrieval)
在收到用户查询(Query)后,RAG 系统采用与索引阶段相同的编码模型将查询转换为向量表示,然后计算索引语料库中查询向量与块向量的相似性得分。该系统优先级和检索最高 k (Top-K)块,显示最大的相似性查询。这些块随后被用作 prompt 中的扩展上下文。
Query向量化,匹配向量空间中相近的chunks。
生成(Generation)
提出的查询(Query)和选定的文档(Chunks)被合成为一个连贯的提示,大语言模型负责生成回复。该模型的答复方法可能因具体任务的标准而异,允许它或者利用其固有的参数知识,或者限制其对所提供文件中所包含的信息的答复。在正在进行的对话中,任何现有的对话历史都可以整合到提示中,使模型能够有效地进行多轮对话交互。
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content