掘金 人工智能 前天 11:13
RAG信息检索-如何让模型找到‘对的知识’
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文将深入探讨RAG(Retrieval-Augmented Generation)系统的底层设计与工程实现。RAG系统通过检索外部知识库增强大模型的生成能力,使得AI助手、客服机器人等应用能够更好地回答问题、处理文档。文章详细介绍了RAG系统的全流程,包括文档解析、切分策略、embedding生成、相似度检索以及Reranker等关键步骤,并提供了源码示例和模型配置,帮助读者全面理解RAG技术。

🧐 **RAG系统概述**:RAG系统是连接生成能力与外部知识的桥梁,通过检索外部知识库来增强大模型的回答能力。其核心在于让模型能够“查阅资料”作答,从而提高回答的准确性和信息量。

💡 **文档处理流程**:原始文档首先被切分成逻辑段落,然后送入嵌入模型转化为向量。这一过程称为文档段落嵌入,为后续检索做准备。用户提问时,问题也会被转化为查询向量,系统在向量数据库中查找与查询向量最接近的文档段落。

🔍 **相似度检索技术**:相似度检索是RAG系统中的关键环节,通过Top-K检索、MMR等方式找到与查询向量最接近的文档段落。为了提高检索精度,Reranker等技术被用于对初始检索结果进行二次排序,筛选出更相关的段落。

🚀 **Reranker的作用**:Reranker的作用就像HR对简历进行二次筛选一样,通过更强大的模型对用户查询与候选文档段落进行语义匹配打分,从而提高检索结果的准确性和相关性,减少“答非所问”的概率。

大家好,我准备开启一个全新的系列,来聊聊——RAG(Retrieval-Augmented Generation)系统的底层设计与工程实现。

你可能已经用过各种“大模型加检索”的应用:AI 助手能秒答公司文档问题、客服机器人能一口气分析十几页合同、技术问答系统好像“查阅过全网资料”……但你有没有想过:这些模型到底是怎么“知道”你提的问题答案的?模型为什么能记住一整本文档?我们把知识库接入大模型,到底做了什么?

这一切的背后,离不开三个字母:RAG

这个系列将拆解构建一个 RAG 系统的全流程,深入剖析每个关键步骤的逻辑、技术选型与工程落地难点:

此外,所有相关源码示例、流程图、模型配置与知识库构建技巧,我也将持续更新在 Github:LLMHub,欢迎关注收藏!

1.前言

RAG飞速发展,成为连接“生成能力”与“外部知识”的桥梁,关于RAG的介绍可以参考什么是RAG?一文搞懂检索增强生成技术

前面我们介绍了RAG系统中的文档解析,RAG 的文档解析:PDF 篇,在解析文档得到数据后,由于数据规模很可能非常庞大,整体存储具有难度,并且在查询的时候可能仅仅和其中的一个或几个段落有关系,所以需要分块技术将解析后的文档内容切分为适当的片段一分钟读懂RAG的切分策略

切分完成后,需要将内容存储到向量数据库以供后续检索RAG-embedding篇

在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,但如果它检索不到关键内容,最终生成的结果也只能“编个差不多”。

关于深度学习和大模型相关的知识和前沿技术更新,请关注公众号coting!

Fish AI Reader

Fish AI Reader

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

FishAI

FishAI

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

联系邮箱 441953276@qq.com

相关标签

RAG 检索增强生成 Embedding 相似度检索
相关文章