高级 RAG 技术
Posted: Mon Mar 17, 2025 5:52 am
检索增强生成 (RAG)将文档检索与自然语言生成相结合,创建更准确、更具情境感知的响应。
虽然基本 RAG 很有效,但它在处理复杂查询、幻觉以及在多轮对话中维持上下文方面存在困难。
在这篇博客中,我将探索通过提高检索准确性、生成质量和整体系统性能来应对这些挑战的先进技术。
如果您正在阅读本文以准备面试,请务必查看“RAG 面试前 30 个问题及答案”文章。
基本 RAG 系统的局限性
虽然基本的 RAG 实现很有用,但它们也有其局限性,尤其是在应用于更苛刻的环境中时。
幻觉
最突出的问题之一是幻觉,即模型生成的内容与事实不符或与检索到的文档不符。这可能会损害系统的可靠性,尤其是在医学或法律等对准确性要求较高的领域。
缺乏领域特异性
标准 RAG 模型在处理特定领域的查询时可能会遇到困难。如果不根据专业领域的细微差别定制检索和生成过程,系统可能会检索不相关或不准确的信息。
处理复杂或多轮对话
另一个挑战是管理复杂的多步骤查询或多轮对话。基本的 RAG 系统通常难以在交互过程中保持上下文,导致答案脱节或不完整。随着用户查询变得越来越复杂,RAG 系统需要不断发展以应对这种日益复杂的情况。
基本 RAG 系统:起起伏伏
使用 napkin.ai 生成的图表
高级检索技术
高级检索技术侧重于增强检索文档的相关性和范围。这些技术包括密集检 埃塞俄比亚赌博数据 索、混合搜索、重新排序和查询扩展,解决了基于关键字的检索的局限性。
密集检索和混合搜索
密集检索和混合搜索是提高检索准确率和相关性的关键技术。当查询的表述与文档不同时,TF-IDF 或 BM25 等方法通常难以理解语义。
密集检索,例如 DPR(密集段落检索),使用深度学习将查询和文档映射到密集向量表示中,捕捉精确关键字之外的文本含义。
混合搜索融合了稀疏和密集检索,通过结合基于关键字的匹配和语义相似性来平衡精度和召回率,使其能够有效地处理更复杂的查询。
重新排序
重新排序是另一种高级技术,用于在将检索到的文档列表传递到生成组件之前对其进行细化。在典型的 RAG 系统中,初始检索阶段可能会生成大量相关性各异的文档。
重新排序的作用是重新排列这些文档,以便语言模型优先使用最相关的文档。重新排序可以从基于查询文档相似度的简单评分实现,到经过训练以预测每个文档相关性的更复杂的机器学习模型。
您可以在有关使用 RankGPT进行重新排名的本教程中了解如何实现重新排名。
查询扩展
查询扩展涉及使用附加术语丰富用户的查询,以增加检索相关文档的机会。它可以通过以下方式实现:
同义词扩展:在原始查询中添加同义词或密切相关的术语,以捕获可能使用不同措辞但传达相似含义的文档。
概念扩展:扩展查询以包括更广泛或相关的概念,这可以帮助显示更加多样化但相关的文档。
例如,如果原始查询是“医疗保健中的人工智能”,则查询扩展可能包括“人工智能”、“机器学习”或“健康科技”等相关术语,从而确保更广泛的检索网络。
优化 RAG 系统中的相关性和质量
在 RAG 系统中,仅仅检索文档是不够的,确保这些文档的相关性和质量是改善最终输出的关键。为此,改进和过滤检索内容的高级技术至关重要。
这些方法可以减少噪音,提高相关性,并将语言模型集中在生成过程中最重要的信息上。
高级过滤技术
高级过滤技术使用元数据或基于内容的规则来排除不相关或低质量的文档,确保只传递最相关的结果。
基于元数据的过滤:可以根据元数据(如日期、作者、域或文档类型)过滤文档。在法律或医学应用中,这可以确保仅使用最新或权威的来源。
基于内容的过滤:评估文档本身的内容,应用规则排除那些不满足特定相关性阈值的文档。它还可能涉及过滤掉与查询语义相似度较低的文档或不包含与查询相关的关键短语或术语的文档。
上下文提炼
上下文提炼是总结或压缩检索到的文档的过程,以使语言模型专注于最重要的信息。当检索到的文档包含太多不相关的内容或查询涉及复杂的多步骤推理时,这种方法非常有用。
通过提炼上下文,系统从检索到的文档中提取关键见解和最相关的段落,确保语言模型具有最清晰、最相关的信息。
发电过程优化
检索并完善相关文档后,RAG 系统的下一步就是生成过程。优化语言模型生成响应的方式对于确保准确性、连贯性和相关性至关重要。
及时工程
提示工程是指设计和构建输入语言模型的提示的过程。提示的质量直接影响模型生成的输出的质量,因为提示为生成任务提供了初始指令或上下文。
为 RAG 提供快速工程设计
使用 napkin.ai 生成的图表
为了优化提示,开发人员可以尝试几种不同的方法。
提供更多背景信息
添加其他信息(例如明确说明或关键词)可以引导模型做出更准确、更符合语境的响应。例如,在医疗 RAG 系统中,提示可能会明确要求模型根据检索到的文档提供诊断摘要。
构建查询以提高清晰度
结构良好的提示,加上清晰简洁的说明,有助于减少歧义,并带来更有针对性的生成结果。将提示表述为直接的问题或请求通常可以产生更好的结果。
测试不同的提示格式
通过重复问题、调整具体程度或提供示例等提示格式,可以帮助确定为特定用例提供最佳结果的格式。
在此博客中了解更多信息:提示优化技术。
多步推理
许多查询,特别是在研究、法律或技术支持等领域,涉及多个步骤或需要复杂的推理。多步骤推理是系统将复杂查询分解为可管理的子任务并按顺序处理它们以得出综合答案的过程。
我们可以通过多种方式在 RAG 系统中实现多步骤推理:
链接检索和生成:在某些情况下,可以通过将检索和生成步骤链接在一起来实现多步骤推理。处理初始查询后,系统可能会生成后续查询或在生成最终答案之前请求其他信息。
合并中间步骤:对于需要跨多个文档或主题进行推理的查询,系统可能会为每个步骤检索不同的文档集,逐步建立更细致、更完整的答案。
多跳问答:这种方法允许系统在检索到的不同信息之间建立逻辑连接,使其能够处理涉及各种事实或数据点之间关系的更复杂的查询。
虽然基本 RAG 很有效,但它在处理复杂查询、幻觉以及在多轮对话中维持上下文方面存在困难。
在这篇博客中,我将探索通过提高检索准确性、生成质量和整体系统性能来应对这些挑战的先进技术。
如果您正在阅读本文以准备面试,请务必查看“RAG 面试前 30 个问题及答案”文章。
基本 RAG 系统的局限性
虽然基本的 RAG 实现很有用,但它们也有其局限性,尤其是在应用于更苛刻的环境中时。
幻觉
最突出的问题之一是幻觉,即模型生成的内容与事实不符或与检索到的文档不符。这可能会损害系统的可靠性,尤其是在医学或法律等对准确性要求较高的领域。
缺乏领域特异性
标准 RAG 模型在处理特定领域的查询时可能会遇到困难。如果不根据专业领域的细微差别定制检索和生成过程,系统可能会检索不相关或不准确的信息。
处理复杂或多轮对话
另一个挑战是管理复杂的多步骤查询或多轮对话。基本的 RAG 系统通常难以在交互过程中保持上下文,导致答案脱节或不完整。随着用户查询变得越来越复杂,RAG 系统需要不断发展以应对这种日益复杂的情况。
基本 RAG 系统:起起伏伏
使用 napkin.ai 生成的图表
高级检索技术
高级检索技术侧重于增强检索文档的相关性和范围。这些技术包括密集检 埃塞俄比亚赌博数据 索、混合搜索、重新排序和查询扩展,解决了基于关键字的检索的局限性。
密集检索和混合搜索
密集检索和混合搜索是提高检索准确率和相关性的关键技术。当查询的表述与文档不同时,TF-IDF 或 BM25 等方法通常难以理解语义。
密集检索,例如 DPR(密集段落检索),使用深度学习将查询和文档映射到密集向量表示中,捕捉精确关键字之外的文本含义。
混合搜索融合了稀疏和密集检索,通过结合基于关键字的匹配和语义相似性来平衡精度和召回率,使其能够有效地处理更复杂的查询。
重新排序
重新排序是另一种高级技术,用于在将检索到的文档列表传递到生成组件之前对其进行细化。在典型的 RAG 系统中,初始检索阶段可能会生成大量相关性各异的文档。
重新排序的作用是重新排列这些文档,以便语言模型优先使用最相关的文档。重新排序可以从基于查询文档相似度的简单评分实现,到经过训练以预测每个文档相关性的更复杂的机器学习模型。
您可以在有关使用 RankGPT进行重新排名的本教程中了解如何实现重新排名。
查询扩展
查询扩展涉及使用附加术语丰富用户的查询,以增加检索相关文档的机会。它可以通过以下方式实现:
同义词扩展:在原始查询中添加同义词或密切相关的术语,以捕获可能使用不同措辞但传达相似含义的文档。
概念扩展:扩展查询以包括更广泛或相关的概念,这可以帮助显示更加多样化但相关的文档。
例如,如果原始查询是“医疗保健中的人工智能”,则查询扩展可能包括“人工智能”、“机器学习”或“健康科技”等相关术语,从而确保更广泛的检索网络。
优化 RAG 系统中的相关性和质量
在 RAG 系统中,仅仅检索文档是不够的,确保这些文档的相关性和质量是改善最终输出的关键。为此,改进和过滤检索内容的高级技术至关重要。
这些方法可以减少噪音,提高相关性,并将语言模型集中在生成过程中最重要的信息上。
高级过滤技术
高级过滤技术使用元数据或基于内容的规则来排除不相关或低质量的文档,确保只传递最相关的结果。
基于元数据的过滤:可以根据元数据(如日期、作者、域或文档类型)过滤文档。在法律或医学应用中,这可以确保仅使用最新或权威的来源。
基于内容的过滤:评估文档本身的内容,应用规则排除那些不满足特定相关性阈值的文档。它还可能涉及过滤掉与查询语义相似度较低的文档或不包含与查询相关的关键短语或术语的文档。
上下文提炼
上下文提炼是总结或压缩检索到的文档的过程,以使语言模型专注于最重要的信息。当检索到的文档包含太多不相关的内容或查询涉及复杂的多步骤推理时,这种方法非常有用。
通过提炼上下文,系统从检索到的文档中提取关键见解和最相关的段落,确保语言模型具有最清晰、最相关的信息。
发电过程优化
检索并完善相关文档后,RAG 系统的下一步就是生成过程。优化语言模型生成响应的方式对于确保准确性、连贯性和相关性至关重要。
及时工程
提示工程是指设计和构建输入语言模型的提示的过程。提示的质量直接影响模型生成的输出的质量,因为提示为生成任务提供了初始指令或上下文。
为 RAG 提供快速工程设计
使用 napkin.ai 生成的图表
为了优化提示,开发人员可以尝试几种不同的方法。
提供更多背景信息
添加其他信息(例如明确说明或关键词)可以引导模型做出更准确、更符合语境的响应。例如,在医疗 RAG 系统中,提示可能会明确要求模型根据检索到的文档提供诊断摘要。
构建查询以提高清晰度
结构良好的提示,加上清晰简洁的说明,有助于减少歧义,并带来更有针对性的生成结果。将提示表述为直接的问题或请求通常可以产生更好的结果。
测试不同的提示格式
通过重复问题、调整具体程度或提供示例等提示格式,可以帮助确定为特定用例提供最佳结果的格式。
在此博客中了解更多信息:提示优化技术。
多步推理
许多查询,特别是在研究、法律或技术支持等领域,涉及多个步骤或需要复杂的推理。多步骤推理是系统将复杂查询分解为可管理的子任务并按顺序处理它们以得出综合答案的过程。
我们可以通过多种方式在 RAG 系统中实现多步骤推理:
链接检索和生成:在某些情况下,可以通过将检索和生成步骤链接在一起来实现多步骤推理。处理初始查询后,系统可能会生成后续查询或在生成最终答案之前请求其他信息。
合并中间步骤:对于需要跨多个文档或主题进行推理的查询,系统可能会为每个步骤检索不同的文档集,逐步建立更细致、更完整的答案。
多跳问答:这种方法允许系统在检索到的不同信息之间建立逻辑连接,使其能够处理涉及各种事实或数据点之间关系的更复杂的查询。