RAG 全栈技术最新进展全面解析
检索增强生成(Retrieval-Augmented Generation, RAG)的出现,利用外部知识数据库来增强大型语言模型(LLMs),有效弥补了 LLMs 存在的幻觉问题、知识更新滞后等关键缺陷。本文系统地介绍了 RAG 的每个组成部分,特别是检索器和检索融合的重要技术,并展示了不同的 RAG 训练策略及其在下游 NLP 任务和实际场景中的应用。
自然语言处理中检索增强生成的概述
RAG 架构主要由三个核心部分组成:
- 检索器(Retriever):负责从外部知识库中查找相关信息。
- 检索融合(Retrieval Fusions):决定如何将检索到的信息整合到生成过程中。
- 生成器(Generator):基于输入和检索内容生成最终响应。

1. 检索器(Retriever)
检索器是 RAG 中的关键组件,其主要作用是从一个外部知识库中检索与输入相关的信息。使用检索器通常包含两个阶段:构建阶段和查询阶段。
构建阶段
构建阶段涉及将文档分割成小块,对这些块进行编码,并建立索引以支持高效的检索。
1. 分块语料库(Chunking Corpus)
- 固定长度分块:通过设定长度参数顺序地分割文档,简单但可能破坏语义完整性。
- 基于语义的分块:根据语义标志(如句号或新行字符)切割文档,保持句子完整。
- 基于内容的分块:根据文档的结构特征(如电子病历的章节或编程代码的功能块)进行分割,更适合结构化数据。
2. 编码块(Encoding Chunks)
- BERT 及其变体:如 RoBERTa、DistilBERT、ELECTRA,生成密集的语义嵌入。
- Siamese Encoders:设计用于学习输入之间相似性的神经网络,如 DPR、SimCSE。
- LLM-based Encoders:利用大型语言模型的表示能力,如 text-embedding-ada-002、bge-embedding。
- 稀疏编码:如词袋模型(BoW)、TF-IDF,通过高维向量表示文本,其中大部分元素为零。
- 密集编码:使用深度神经网络模型生成向量,每个维度都可以捕捉语义特征。
3. 索引构建(Building the Index) 索引的目的是加速多维查询嵌入的搜索过程,主要关注支持高效的近似最近邻搜索(ANN)。
- 选择相似性度量:余弦相似度、欧几里得相似度、曼哈顿距离、雅卡尔相似度等,用于衡量查询嵌入和块嵌入之间的相关性。
- 降维(Dimension Reduction on Embeddings):
- 主成分分析(PCA):一种统计技术,用于将原始数据转换为新坐标系,同时保留最重要的特征。
- 局部敏感哈希(LSH):通过将数据映射到桶中来显著降低维度,同时保留原始输入数据的相似性。
- 乘积量化(PQ):将高维空间划分为更小的、独立量化的子空间。
- 高级 ANN 索引:
- IVFPQ:结合倒排文件系统和乘积量化,用于高效和可扩展的 ANN 搜索。
- HNSW:使用分层图结构在高维空间中高效执行 ANN 搜索。
- 基于树的索引:如 KD-Trees、Ball Trees 和 VP-Trees,用于组织高维向量。


