一、基本RAG介绍
基本RAG需要从外部知识数据库中获取文档,然后,将这些文档与用户的查询一起被传输到LLM,用于生成响应。从本质上讲,RAG包括一个检索组件、一个外部知识数据库和一个生成组件。
在基本的RAG场景中,大致有如下步骤:首先将文本划分为多个块,使用Transformer Encoder模型将这些块嵌入到向量中,将这些向量存储到向量数据库并建立索引,查询会检索向量数据库中相关的上下文,这些上下文和查询一起生成最终的LLM提示,并引导LLM合成响应。
RAG系统包含三个关键模块:
Retriever:从上下文相关的知识源中检索文本段落;
Reranker(可选):对检索到的段落重新打分和重新排序;
Generator:将上下文与检索到的段落集成以生成输出文本
二、使用LangChain和Huggingface实现基本RAG
三、高级RAG
最基本、最简单的RAG系统有时候会检索不到相关的上下文,因此需要一些更高级的方法来增强RAG系统,比如:查询转换、重排序等。
3.1 高级RAG(检索增强生成)技术涵盖以下内容:
🔍 基本RAG:它涉及从外部知识数据库中检索文档,并将这些文档与用户的查询一起传递给LLM以生成响应。主要组件是检索组件、外部知识数据库和生成组件。
🌐 RAG的成功要求:一个成功的RAG系统应该有两个主要功能:检索必须找到与用户查询最相关的文档,生成必须有效地利用这些文档来回答用户查询。
💡 高级RAG:构建高级RAG需要应用更复杂的技术和策略来满足成功要求。这些技术既可以独立地满足其中一个高级成功需求,也可以同时满足这两个需求。
🎯 高级检索技术:这包括通过网格搜索执行超参数调整,以及为递归或路由检索构建外部知识。
🖥️ 高级生成技术:这包括充分利用检索到的文档,对结果进行重新排序,以及使用信息压缩来减少噪声。
🤝 同时定位检索和生成的高级技术:这包括生成器增强检索和迭代检索生成器RAG。
3.2 高级RAG常用的技术
a)基本索引
b)分层索引
c)语句窗口检索
d)父文档检索器
e)融合检索
f)查询转换
g)聊天引擎检索
h)多文档检索
3.3 高级RAG技术总结:
RAG通过集成外部知识检索来增强语言模型,从而提高生成的准确性、相关性和信息覆盖率。
检索器的进步提升了长文档和关键字查询的词汇、语义和上下文相关性匹配度。
重排序体系结构专门用于精确预测相关性,采用结合预训练、模型大小和网络体系结构的策略。
生成器通过截断、提取、加权和记忆无缝地整合外部证据。
混合RAG系统将两种LLM结合在一起,以最大限度地提高质量和高效SLM的可扩展性和吞吐量。
参考文献:
[1] https://regupathit.medium.com/advanced-rag-cooking-guide-techniques-3e505b4fb76f