Note
有哪些技术可以提升 RAG 检索质量?
整理混合检索、重排序、查询改写及其他检索优化手段。
除了基础的向量检索,你还知道哪些可以提升 RAG 检索质量的技术?
基础的向量检索(Dense Retrieval)虽然有效,但在处理复杂查询和多样化文档时往往会遇到瓶颈。为了提升检索质量,学术界和工业界发展出了许多先进的技术,主要可以分为增强检索器和优化查询两大类。
一、 增强检索器(Improving the Retriever)
-
混合搜索(Hybrid Search):
- 技术: 将 稀疏检索(Sparse Retrieval) 和 密集检索(Dense Retrieval) 相结合。
- 稀疏检索(如BM25): 基于关键词匹配,对于包含特定术语、缩写、ID的查询非常有效。
- 密集检索(向量搜索): 基于语义相似度,擅长理解长尾、口语化的查询。
- 优势: 兼顾了关键词精确匹配和语义模糊匹配的能力,效果通常远超单一检索方法。
- 技术: 将 稀疏检索(Sparse Retrieval) 和 密集检索(Dense Retrieval) 相结合。
-
重排序(Re-ranking):
- 技术: 采用一个 两阶段(two-stage) 的检索流程。
- 召回(Recall): 先用一个快速但相对粗糙的方法(如向量搜索或混合搜索)从海量文档中召回一个较大的候选集(例如Top 50)。
- 重排(Re-rank): 再使用一个更强大、更复杂的模型(通常是Cross-Encoder)对这个小候选集进行精细化的重排序,选出最终的Top-N(例如Top 5)作为上下文。
- 优势: Cross-Encoder可以直接比较查询和文档的文本,捕捉更细粒度的相关性,精度远高于单纯的向量相似度,极大地提升了最终上下文的质量。
- 技术: 采用一个 两阶段(two-stage) 的检索流程。
二、 优化查询(Improving the Query)
- 查询扩展与转换(Query Expansion & Transformation):
- 技术: 不直接使用用户的原始查询进行检索,而是先用LLM对查询进行“加工”。
- 方法:
- 多查询检索(Multi-Query Retrieval): 让LLM针对原始问题,从不同角度生成多个不同的查询,然后对所有查询的检索结果进行合并。
- HyDE(Hypothetical Document Embeddings): 让LLM先针对问题生成一个“假设性”的答案,然后用这个假设性答案的嵌入去检索,因为答案的文本和目标文档的文本在形式上更相似。
- 子问题查询(Sub-Querying): 对于复杂问题,先将其分解成多个简单的子问题,分别检索,再汇总结果。
三、 优化索引结构(Improving the Index)
-
小块引用大块(Small-to-Large Chunking):
- 技术: 在索引时,将文档切成小的、用于检索的“摘要块”(Summary Chunks),但每个小块都保留对它所属的、更大的“父块”(Parent Chunk)的引用。
- 流程: 检索时,用查询匹配小块以获得高精度,但最终送给LLM的是包含更丰富上下文的父块。
- 优势: 兼顾了小块检索的精确性和大块上下文的完整性。
-
图索引(Graph Indexing):
- 技术: 除了向量索引,还用LLM提取文档中的实体和关系,构建一个知识图谱。
- 流程: 检索时,可以先在图谱中进行结构化查询,找到相关的实体和子图,再结合向量检索进行补充。
- 优势: 对于需要进行多跳推理、理解实体关系的查询非常有效。