RAG检索增强技术关键概念

一、概念

RAG (Retrieval-Augmented Generation) 是一种结合信息检索与生成模型的技术。其主要目标是通过检索大量信息并使用生成模型进行处理,从而提供更加准确和丰富的回答。RAG技术在处理大规模文本数据时表现尤为出色,能够从海量信息中迅速找到相关内容并生成合适的响应。

二、RAG的关键步骤

RAG是一种将信息检索(Retrieval)与生成模型(Generation)结合的技术,通过先检索相关信息,再生成准确和上下文相关的回答或内容,来增强语言模型的性能。RAG技术通常包含以下三个关键步骤:

2.1 索引 (Indexing)

在索引阶段,系统会对大量的文档、数据或知识库进行预处理和索引,使用专门的文档加载器(例如PDF提取器)或多模态模型(如OCR技术),将这些丰富的知识源转换为大语言模型可理解的纯文本数据。以便于快速检索。索引的过程包括将文本数据转换为易于搜索的格式(768位),BEG系列的开源向量化模型,并构建高效的数据结构,使得在需要时可以快速找到相关信息。

2.2 检索 (Retrieval)

检索阶段是RAG技术的核心之一。当用户提出问题或请求时,系统会从预先索引的文档或知识库中快速检索出最相关的信息。检索模块通常使用高级搜索算法和相似度计算来找到与用户输入最匹配的内容。

2.3 生成 (Generation)

在生成阶段,系统会使用先进的生成模型(如GPT等)对检索到的信息进行处理和整合,生成连贯且上下文相关的回答或内容。生成模型利用检索到的信息作为背景知识,确保生成的结果更加准确和有针对性。

三、RAG的优势

RAG(Retrieval-Augmented Generation)技术结合了信息检索和生成模型的优势,解决了许多传统语言模型的局限性,具体优势如下:

1)减少模型幻觉

生成幻觉(Hallucination)是指语言模型在生成内容时,有时会产生不准确或虚假的信息。RAG通过首先检索相关的真实信息,然后生成基于这些信息的回答,从而显著减少生成幻觉的发生,提高回答的准确性和可信度。

2)知识及时更新(低成本)

由于RAG依赖于外部知识库或文档的检索,系统可以更容易地通过更新这些外部资源来保持最新的知识。这意味着即使模型本身没有重新训练,也能通过更新检索数据库来反映最新的信息和变化。

3)避免人工整理FAQ

传统的FAQ系统需要人工整理和维护,而RAG技术能够自动从大量的文档和知识库中检索和生成答案,减少了人工整理和更新FAQ的负担,提高了效率。

4)增加了答案推理

RAG技术不仅能够检索相关信息,还可以利用生成模型进行复杂的答案推理。这使得系统不仅能够提供直接的事实性回答,还能对复杂问题进行更深层次的分析和解答。

5)内容可追溯性(可解释性)

由于RAG在生成答案时依赖于检索到的真实文档和数据,生成的内容具有可追溯性。用户可以追溯到答案来源,验证信息的准确性和可靠性,增强了系统的透明度和用户信任。

四、RAG技术优化

4.1 数据优化

对于高性能RAG系统,数据需要干净、一致且上下文丰富。文本应该被标准化,以去除特殊字符和不相关的信息,从而提高检索器的效率。应消除实体和术语的歧义以保持一致性,同时应消除重复或冗余信息以简化检索器的焦点。真实性是关键;应尽可能验证每条数据的准确性。实现特定领域的注释可以添加另一层上下文,并结合用户反馈循环进行持续更新,确保系统适应现实世界的交互。时间敏感的主题需要一种机制来刷新过时的文档。总体而言,重点应放在清晰度、上下文和正确性上,以使系统高效可靠。以下是最佳实践列表:

  • 文本清理:规范文本格式,去除特殊字符和不相关信息。这提高了检索器的效率并避免垃圾进垃圾出。

  • 实体解析:消除实体和术语的歧义以实现一致的引用。例如,将“ML”、“机器学习”和“机器学习”标准化为通用术语。

  • 重复数据删除:删除重复文档或冗余信息,以增强检索者的注意力和效率。

  • 文档分割:将长文档分解为可管理的块,或者相反,将小片段组合成连贯的文档以优化检索器性能。

4.2 分块处理

在RAG系统中,文档需要分割成多个文本块再进行向量嵌入。在不考虑大模型输入长度限制和成本问题情况下,其目的是在保持语义上的连贯性的同时,尽可能减少嵌入内容中的噪声,从而更有效地找到与用户查询最相关的文档部分。如果分块太大,可能包含太多不相关的信息,从而降低了检索的准确性。相反,分块太小可能会丢失必要的上下文信息,导致生成的回应缺乏连贯性或深度。在RAG系统中实施合适的文档分块策略,旨在找到这种平衡,确保信息的完整性和相关性。比如Openai的text-embedding-ada-002的模型在256或512大小。

  • 重叠分块:通常会保持块之间的一些重叠,以确保语义上下文不会在块之间丢失。

4.3 嵌入模型选择

在这种情况下,对于具体应该如何选择嵌入模型,我们推荐参考Hugging Face推出的嵌入模型排行榜MTEB(https://huggingface.co/spaces/mteb/leaderboard)。这个排行榜提供了多种模型的性能比较,能帮助我们做出更明智的选择。同时,要注意并非所有嵌入模型都支持中文,因此在选择时应查阅模型说明。

4.4 查询转化

在RAG系统中,用户的查询问题被转化为向量,然后在向量数据库中进行匹配。不难想象,查询的措辞会直接影响搜索结果。如果搜索结果不理想,可以尝试以下几种方法对问题进行重写,以提升召回效果:

  • 重新表述,可以直接利用LLM重新表述问题来进行尝试。用户的提问中的某个词可能会指代上文中的部分信息,因此可以将历史信息和用户提问一并交给LLM重新表述。

4.5 高级检索策略

终于我们来到最为关键和复杂的步骤——在向量数据库检索之上如何具体开发或改进整个系统的策略。这部分的内容足够写成一篇独立文章。为了保持简洁,我们只讨论一些常用或者新提出的策略。

  • 上下文压缩:我们提到过当文档文块过大时,可能包含太多不相关的信息,传递这样的整个文档可能导致更昂贵的LLM调用和更差的响应。上下文压缩的思想就是通过LLM的帮助根据上下文对单个文档内容进行压缩,或者对返回结果进行一定程度的过滤仅返回相关信息。

  • 句子窗口搜索:文档文块太小会导致上下文的缺失。其中一种解决方案就是窗口搜索,该方法的核心思想是当提问匹配好分块后,将该分块周围的块作为上下文一并交给LLM进行输出,来增加LLM对文档上下文的理解。

  • 父文档搜索:无独有偶,父文档搜索也是一种很相似的解决方案,父文档搜索先将文档分为尺寸更大的主文档,再把主文档分割为更短的子文档两个层级,用户问题会与子文档匹配,然后将该子文档所属的主文档和用户提问发送给LLM。

  • 自动合并:自动合并是在父文档搜索上更进一步的复杂解决方案。同样地,我们先对文档进行结构切割,比如将文档按三层树状结构进行切割,顶层节点的块大小为1024,中间层的块大小为512,底层的叶子节点的块大小为128。而在检索时只拿叶子节点和问题进行匹配,当某个父节点下的多数叶子节点都与问题匹配上则将该父节点作为结果返回。

  • Self-RAG:自反思搜索增强是一个全新RAG框架,其与传统RAG最大的区别在于通过检索评分(令牌)和反思评分(令牌)来提高质量。它主要分为三个步骤:检索、生成和批评。Self-RAG首先用检索评分来评估用户提问是否需要检索,如果需要检索,LLM将调用外部检索模块查找相关文档。接着,LLM分别为每个检索到的知识块生成答案,然后为每个答案生成反思评分来评估检索到的文档是否相关,最后将评分高的文档当作最终结果一并交给LLM。

4.6 Rerank重排名检索

QAnything中的 Rerank 被称为为 2nd Retrieval, 主要作用是将向量检索的内容进行重新排序,将更精准的文章排序在前面。通过向大模型提供更精准的文档,从而提升 RAG 的效果。也就是说,召回其实是个穷举过程,那么必然不能使用复杂度特别高的算法来计算相似度,为了召回的性能牺牲了召回的精度。Rerank的概念在大模型之前就已经出现,比如推荐算法搜索算法的精排过程,可以理解为在粗排结果的基础之上进行rerank(精排)。

五、RAG效果评估

可采用自动化评估工具RAGAS,现有方法主要关注RAG模型的三个质量分数四个模型能力,并以此来对RAG模型进行验证,这些质量分数和模型能力事关RAG模型的检索和生成过程

其中,三个质量分数具体如下:

  • 上下文相关度(Context Relevance):主要评测检索上下文信息的准确程度专精程度,同时期望检索过程的消耗尽可能小冗余内容尽可能少

  • 回答可信度(Answer Faithfulness):主要评测生成的结果对于检索上下文是否正确,同时确保生成结果的一致性避免出现前后矛盾的现象

  • 回答相关度(Answer Relevance):主要评测生成的结果是否与提出的问题直接相关,同时有效解决问题中的核心需求

六、RAFT检索微调

RAFT的目的是让大语言模型对特定主题表现出来更高的智力水平,同时改进了领域相关的RAG表现。RAFT既让模型在领域相关知识上进行了很好的训练,又让模型可以对抗检索引入的错误或者不相关内容的干扰。就像开卷考试中,你要学会在笔记和教材中找到哪些是重点哪些不是一样。RAFT也要训练模型,让它可以理解题目、检索到的文档和正确答案这三者是如何匹配的。

为了更好地理解检索增强微调的概念,我们可以用考试类比,比较不同的技术框架。

  • 闭卷考试:大模型不依赖任何额外信息或资源来帮助回答问题。例如,在将大模型用作聊天机器人时,它完全依赖于其在预训练期间学到的知识和微调数据来提供答案。

  • 开卷考试:大模型可以查阅外部来源的信息,比如网站或文档内容。通常使用RAG技术,RAG系统可以根据问题找到相关文档内容来帮助大模型学习新知识。在这种情况下,大模型的表现很大程度上取决于RAG系统能否找到最相关的信息。

  • 开卷考试+划重点:开卷考试的进阶版本,就是考前老师会划重点,让考试范围变得更具体。考试过程中,大模型将事先学会处理哪个特定领域的知识,可能是公司文档或最近新闻。考试前,大模型会用RAFT技术进行微调,学会使用来自特定领域的信息回答问题,并能够有效处理不相关大因素带来的干扰。

七、RAG的应用场景

RAG最直接的优势就是能够让大模型利用自身的逻辑推导能力,去理解企业私有数据,实现问答能力的拓展。但是如果给大模型喂企业私有数据,做模型微调,也能实现同样的效果,为什么还要用RAG呢,我认为还要看场景:

  • 私有数据存在一定频率的动态更新的;

  • 需要给出引用原文的;

  • 硬件资源(GPU)不是太充足的

八、开源组件

8.1 向量数据库

  • FAISS:Meta开源的向量数据库

  • Chroma:Chroma团队开源的向量数据库

8.2 Embedding模型

  • BGE:由北京智源人工智能研究院提出的新的embedding模型

8.3 开源RAG项目

  • QAnything

  • Fastgpt

  • RAGflow

  AI科技智库👉️👉️👉️www.aigchouse.com,一站式AI工具、资料、课程资源学习平台,每日持续更新。通过分享最新AI工具、AI资源等,帮助更多人了解使用AI,提升工作和学习效率。这里有海量AI工具整合包、AI学习资料、AI免费课程和AI咨询服务,AI之路不迷路,2024我们一起变强。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值