文章详细介绍了检索增强生成(RAG)技术,包括初级RAG(简单检索与LLM结合)和高级RAG(增加检索前后优化步骤)。初级RAG实施简单无需微调,适合简单用例;高级RAG通过查询重写、动态嵌入、混合检索、重新排序和上下文压缩等技术提升性能,适用于复杂应用和大规模数据集。技术对比显示高级RAG在准确性、检索质量和查询优化方面显著优于初级RAG。
1 、初级 RAG 探究
初级 RAG 是 RAG 系统最基础的版本。它是一种将检索数据和 LLM 简单组合来为用户提供高效回复的方法。
1、 文档切分
在 RAG 系统中,文档切分(Text Chunking)是数据预处理的核心步骤,直接影响检索效果和生成质量。一般来说,将文档切分为短片段(如按句子、段落或固定长度),一方面适应嵌入模型和检索器的输入限制;另一方面合理分段帮助 LLM 减少处理长上下文的成本,提高生成效率。常用的切分方法包括:
- 根据固定长度切分
- 按语义切分
- 高级切分技术
2、嵌入模型
嵌入模型(Embedding Model)是 RAG 系统的关键部分。它将切分后的文档块和用户查询都转换为数值形式,即为嵌入。这种转换的必要性在于,计算机更容易理解数值数据,而嵌入模型使用先进的机器学习技术以数学方式表示文本的含义,也就让计算机“理解”了文本含义。例如,当用户提出问题时,模型将该问题转换为一组数字串,以捕捉查询的语义。
3、向量数据库
一旦文档块转换为嵌入,它们就会存储在类似于向量数据库(VecotorDB)的系统中。向量数据库是一种专门用于高效存储、检索高维向量(即嵌入向量/Embeddings)的数据库系统。向量数据库的核心能力包括:
- 近似最近邻搜索:快速在高维空间中找到相似向量。
- 大规模向量管理:支持百万到十亿级向量的存储和检索。
- 低延迟****查询:优化索引结构,实现毫秒级响应。
4、检索
当用户提交查询时,系统在向量数据库中将查询的嵌入与数据库中存储的嵌入进行比较,检索 Top-K 相似片段。这个检索过程非常重要,因为它缩小了将用于生成最终回复的信息范围。它实际上充当了一个过滤器,确保只有最相关的数据传递到下一个阶段。
5、大语言模型
接下来,LLM 接收检索到的上下文和用户查询,生成自然语言回答。在这个过程中,LLM 会对文档片段进行整合,并根据检索内容调整回答风格。当检索结果不完整时,LLM 可补充常识性知识(需要注意幻觉)。最终,以用户易于理解的自然语言形式构建回复,比如生成列表、表格或分步说明等。
通过理解从用户查询到最终回复的 RAG 工作流,我们可以了解到初级 RAG 系统的每个组件在确保用户获得准确和相关信息方面发挥的关键作用。
优点
- 实施简单: RAG 的设置非常简单,因为它直接将检索与生成相结合,无需复杂的修改或额外的组件,降低了增强语言模型的复杂性。
- 无需微调: RAG 的一个重要优势是它不需要对 LLM 进行微调。这不仅可以更快地部署 RAG 系统,还节省了时间和运营成本。
- 提高准确性: 通过利用外部的最新信息,初级 RAG 显著提高了生成回复的准确性。这确保输出不仅相关,而且体现了最新的可用数据,较大程度地减少了 LLM 幻觉。
- 可扩展性和灵活性: 初级 RAG 的简单性使其更容易在不同应用程序中进行扩展,因为它可以在不对现有检索或生成组件进行重大更改的情况下进行集成。这种灵活性使其可以在各个领域中进行部署,而只需进行最少的定制。
缺点
- 处理能力有限: 直接使用检索到的信息,没有进一步的处理或改进,可能导致生成回复的连贯性差。
- 依赖于检索质量: 最终输出的质量很大程度上取决于检索模块找到最相关信息的能力。检索质量差可能导致不准确或不相关的回复。
- 可扩展性问题: 随着数据集的增长,检索过程可能变得更慢,影响整体性能和响应时间。
- 上下文限制: 初级 RAG 可能难以理解查询的更广泛的上下文,导致回复准确但可能不完全符合用户意图。
2、 高级 RAG 探究
在初级 RAG 的基础上,高级 RAG 为整个过程引入了一层较为复杂的处理层,以优化回复的相关性和整体质量。
1、检索前优化
在高级RAG中,检索过程甚至在实际检索之前就进行了优化。
索引改进
在数据库中,索引方法在高效组织和检索数据方面起着重要作用。广泛采用的传统的索引方法有 B tree 和 Hash 索引等。然而,这些算法的搜索速度随着数据规模的增加而降低。因此,我们需要更高效的索引方法来处理更大规模的数据集,比如我们自研的 MSTG 多尺度树图向量索引算法。该算法在速度和性能方面优于其他索引方法。
与 HNSW 等流行算法仅依赖于分层图和倒排文件索引(IVF)的两级树结构不同,MSTG 在设计中结合了分层图和树结构的优点。通常,图算法对于未经过滤的搜索更快,但对于经过过滤的搜索可能不高效。另一方面,树算法在经过过滤的搜索方面表现出色,但对于未经过过滤的搜索速度较慢。通过结合这两种方法,MSTG 确保了未经过滤和经过过滤的搜索的高性能和准确性,使其成为各种搜索场景的强大选择。
查询重写
在检索过程开始之前,原始的用户查询经过多次增强以提高准确性和相关性,通常会采用查询重写、扩展和转换等技术。这一步确保检索系统获取最相关的信息。例如,如果用户的查询过于宽泛,查询重写可以通过添加更多的上下文或特定术语来改进查询,而查询扩展可能会添加同义词或相关术语以涵盖更广泛的相关文档范围。
2、动态嵌入
在初级 RAG 中,可能会对所有类型的数据使用单个嵌入模型生成固定向量,这可能导致效率低下。然而,高级 RAG 中使用动态嵌入根据上下文或任务需求动态调整向量表示。这意味着嵌入模型经过训练或调整,能更灵活地捕捉语义变化,适应多义性、时效性数据及个性化需求。同时,动态嵌入使大语言模型能够理解细微差别,消除歧义,进而产生更连贯、更相关的回答。
3、混合检索
高级 RAG 还会利用混合搜索,结合不同的搜索策略来提高检索性能,一般包括基于关键字的搜索、语义搜索和神经搜索的不同组合方式。例如,我们的 AI 数据库支持过滤向量搜索和全文搜索,且可以使用复杂的 SQL 查询。这种混合方法通过将不同检索技术结合,能弥补各自的不足,发挥各自优势,适应更广泛的复杂检索场景,提高检索的精准度和语义相关性,提升大模型在复杂检索任务中的表现。
4、检索后处理
在检索过程之后,高级 RAG 将进一步处理检索到的数据,以确保最终输出的质量和相关性最高。
重新排序
在检索过程之后,高级 RAG 采取额外的步骤来优化信息,这一步骤称为重新排序,来确保最相关和有用的数据优先。初始阶段,系统检索到可能与用户查询相关的多个信息,然而,并不是所有这些信息都同样有价值。重新排序有助于根据其他因素(如与查询的匹配程度和上下文的适应性)对这些数据进行排序。
通过重新评估检索到的内容,重新排序将最相关的部分放在前面。这确保生成的回复不仅准确,而且连贯,并直接回答了用户的需求。该过程使用各种标准,如语义相关性和上下文适应性,对信息进行重新排序。这种改进使得最终回复更加专注和精确,提高了输出的整体质量。
5、上下文压缩
在过滤掉相关文档后,即使使用了重新排序算法,仍然可能返回冗余或无关信息对生成阶段造成干扰。通过压缩和精炼检索到的上下文,可以显著提升 LLM 生成答案的准确性、效率和相关性,这个过程我们称为上下文压缩。这一环节应用于将相关文档传递给 LLM 之前,确保 LLM 只接收到最相关的信息,从而能够提供最佳结果。上下文压缩一方面对检索结果“提纯”,让 LLM 聚焦高价值内容;另外一方面突破上下文窗口限制,支持更复杂的任务(如长文档分析)。
3 、对比分析
通过比较初级 RAG 和高级 RAG,我们可以观察到高级 RAG 是如何在初级 RAG 的基础上进行扩展的。它引入了关键的改进,提高了准确性、效率和检索的整体质量。
| 标准 | 初级 RAG | 高级 RAG |
| 准确性和相关性 | 通过使用检索到的信息提供基本的准确性。 | 通过高级过滤、重新排序和更好的上下文使用提高准确性和相关性。 |
| 数据检索 | 使用基本的相似性检查,可能会错过一些相关数据。 | 通过混合搜索和动态嵌入等技术优化检索,确保高度相关和准确的数据。 |
| 查询优化 | 以直接的方式处理查询,没有太多增强。 | 通过查询重写和添加元数据等方法改进查询处理,使检索更精确。 |
| 可扩展性 | 随着数据规模的增长,可能变得不太高效,影响检索。 | 为高效处理大型数据集而设计,使用更好的索引和检索方法以保持高性能。 |
| 多阶段检索 | 进行一次检索,可能会错过重要数据。 | 使用多阶段过程,通过重新排序和上下文压缩等步骤改进初始结果,确保最终输出准确和相关。 |
结论
在选择初级 RAG 或高级 RAG 时,需要考虑应用程序的具体需求。初级 RAG 适用于简单的用例,其中速度和简单实施的优先级较高。它在不需要深入的上下文理解的场景中提高了 LLM 的性能。而高级 RAG 则适用于更复杂的应用程序,通过优化检索质量、增强生成控制、引入多模态和复杂推理能力,显著提升系统的准确性、灵活性和适用范围,使其成为处理更大规模数据集和复杂查询的首选。
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
👉大模型学习指南+路线汇总👈
我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!