掘金 人工智能 前天 14:24
RAG 实战指南(五):RAG 信息检索:如何让模型找到‘对的知识’
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了RAG(Retrieval-Augmented Generation)系统中信息检索的重要性。文章首先强调了检索在RAG系统中的核心作用,即决定生成质量的关键。接着,详细介绍了文档段落嵌入、用户查询嵌入、相似度检索等关键步骤。特别地,文章还阐述了Reranker技术和Query Expansion策略,这些技术能够提高检索的准确性和多样性,从而改善最终的生成结果。总而言之,本文旨在帮助读者理解RAG系统中信息检索的原理和实践。

📝 RAG系统依赖于信息检索来获取外部知识,其生成效果很大程度上取决于检索的质量和准确性。

💡 文档段落嵌入是将原始文档切分成段落后,使用嵌入模型将其转化为向量的过程,这些向量代表了段落的语义特征,为后续检索做准备。

🔍 用户查询嵌入是将用户提问转化为查询向量的过程,系统通过在向量数据库中查找与查询向量最接近的文档段落向量来进行检索,找到与问题相关的关键信息。

🔄 相似度检索是查找与查询向量最接近的文档段落的过程,常用的方法包括Top-K检索和MMR,前者选取最相关的K个段落,后者兼顾相关性和多样性。

🚀 Reranker是一种二次排序技术,它使用更强大的模型对初始检索结果进行重新排序,从而提高检索的准确性,避免了“答非所问”的情况。

❓ Query Expansion通过同义词扩展或问题改写等方式,生成多个查询,从而扩大检索范围,提高找到相关信息的可能性。

本文是RAG 实战指南的第五篇文章,这篇主要带大家搞懂 RAG 信息检索,废话不多说,开造!

1.前言

在RAG系统中,生成效果的好坏,往往不取决于模型本身有多“聪明”,而是它是否能“查对资料”。通俗地说,RAG 的本质是一种“开卷考试”:模型并不靠死记硬背,而是通过查找外部知识库来作答。如果查的资料靠谱、精确、上下文合理,回答自然逻辑清晰、信息详实;反之,如果检索不到关键内容,生成再强的模型也只能“睁眼说瞎话”。

2.embedding生成

2.1文档段落嵌入

在 RAG 系统中,原始文档(无论是论文、网页、PDF 还是 Markdown)首先会被切分成若干逻辑段落。这些段落随后会被送入嵌入模型中转化为向量,也就是一串浮点数,代表了这段话的语义特征。这个过程就叫做文档段落嵌入

例如:

"气候变暖的主要原因是温室气体排放。" → [0.12, -0.38, ..., 0.77]"新能源汽车有助于减少碳排放。" → [0.14, -0.42, ..., 0.81]

这两个段落的向量非常相近,因为它们都和“环境”与“碳排放”有关。

嵌入后的段落会被存储进向量数据库,为后续检索做准备。注意:切分策略越合理,嵌入效果越稳定。否则,一个乱七八糟的句子,即使变成向量,也不会“靠近”它真正应该靠近的知识点。

2.2 用户查询嵌入

用户在提问时,并不是直接丢问题给语言模型,而是先把问题送进同一个嵌入模型中,转换成查询向量。这一步称为用户查询嵌入

举个例子:

用户提问:“如何减少碳排放?”嵌入后 → [0.15, -0.41, ..., 0.79]

此时,系统就会在向量数据库中查找和这个查询向量最接近的文档段落向量,通常是 Top-K 个。比如:

然后,把这些相关段落拼成上下文,送给大模型生成最终回答。

3、相似度检索

文档向量和查询向量都有了,接下来就是“看谁更像谁”的时刻了。这一步叫做相似度检索。简单来说,就是:把用户提问转成向量,然后在海量文档向量查找目标向量。

3.1常见检索方式

但是上述基础的检索方式有时候还不能满足高精度要求,于是又出现了rerank等检索方法。

3.2 Reranker 二次排序

在 RAG(Retrieval-Augmented Generation)中,初始的向量检索阶段可能会返回 Top-K 个“相关性还不错”的段落,但这些段落:

于是,我们需要 Reranker(重排序器)  —— 就像在初筛简历后,HR 还要对候选人深入面试,挑出真正合适的人。

Reranker 通常使用一个更强大的双塔模型(bi-encoder)或交叉编码器(cross-encoder) ,对用户查询与候选文档段落进行语义匹配打分,并按照分数排序。

流程如下:

    用户输入问题,进行 embedding;在向量数据库中查出 Top-K 相关片段;将查询和每个候选片段组成 <query, passage> 对;使用 Reranker 模型对每对文本打分;按照分数排序,取前 N 个作为最终的上下文输入给 LLM。

举个例子:

用户提问:「如何快速训练一个文本分类模型?」
初步向量检索返回:
文本分类的数据预处理技巧。
文本生成与摘要的方法。
深度学习在图像分类中的应用。
sklearn 的 SVM 使用教程。
此时 reranker 会“再面试一次”,给出排序如下:
文本分类的数据预处理技巧。(高相关)
sklearn 的 SVM 使用教程。(中相关)
深度学习在图像分类中的应用。(不相关)
文本生成与摘要的方法。(不相关)
最终仅保留 Top-2 给大模型参考,大大减少“答非所问”的概率。

除了Reranker,还有Query Expansion(多查询扩展),也就是一个问题通过同义词扩展、问题改写(prompt-based query rewrite)或者利用 LLM 自动生成多个子问题换着法儿问,有时能搜到不同角度的答案。

4、小结

信息检索阶段对于RAG无疑是很重要的一环,你可以训练最先进的 LLM,但如果它检索不到关键内容,最终生成的结果也只能“编个差不多”。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

RAG 信息检索 嵌入 相似度检索 Reranker
相关文章