首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

[14章完结版]RAG全栈技术从基础到精通 ,打造高精准AI应用

获课:weiranit.fun/14280/

获取ZY方打开链接

RAG 全栈技术从基础到精通 ,打造高精准 AI 应用

第一章:RAG 技术基础

1.1 RAG 的定义与核心价值

在当今的 AI 领域,生成式 AI 展现出了强大的能力,但也面临着诸多挑战,如幻觉问题、对新知识的缺乏以及在特定领域的局限性。检索增强生成(Retrieval-Augmented Generation,RAG)技术应运而生,它为解决这些问题提供了有效的途径。RAG 是一种将信息检索技术与生成式 AI 相结合的创新技术架构,其核心在于让大语言模型(LLM)在生成内容时,能够从外部信息源检索相关数据,并将这些数据融入到生成过程中,从而提升生成内容的准确性、可靠性和相关性。

传统的生成式 AI 模型,如 GPT 系列,虽然在大规模语料库上进行了训练,但它们的知识范围受限于训练数据。这意味着对于一些特定领域、最新信息或私人数据,这些模型可能无法提供准确的回答。例如,在企业内部知识库的应用中,若使用未经 RAG 增强的 LLM 来回答员工关于公司内部流程、最新业务数据等问题,模型往往会因为缺乏针对性的训练数据而给出错误或模糊的答案。而 RAG 技术通过引入外部数据检索机制,使模型能够突破自身训练数据的限制,精准地从企业知识库中获取相关信息,并结合 LLM 的生成能力,为员工提供准确、详细的解答。

1.2 RAG 与传统生成模型的区别

与传统生成模型相比,RAG 具有多个显著的优势。首先,RAG 有效解决了幻觉问题。幻觉是指生成式 AI 模型在生成内容时,产生与事实不符或无根据的信息。由于 RAG 模型基于真实的检索结果生成内容,其输出有可靠的信息源支撑,大大降低了幻觉产生的概率。例如,在医疗领域的问答系统中,传统生成模型可能会给出一些没有医学依据的治疗建议,但 RAG 模型可以通过检索权威的医学文献和知识库,生成基于事实的准确回答,为患者提供可靠的医疗咨询。

其次,RAG 具有知识可更新性。在快速发展的信息时代,知识不断更新迭代。传统生成模型若要获取新知识,通常需要重新进行大规模的训练,这不仅成本高昂,而且耗时费力。而 RAG 模型通过实时或定期更新外部信息源,如数据库、文档库等,无需重新训练模型,就能让 LLM 在生成时利用最新的知识,确保回答的时效性和准确性。以金融领域为例,市场行情瞬息万变,新的政策法规不断出台。RAG 模型可以随时从金融数据提供商、官方政策发布平台等信息源获取最新信息,为投资者提供及时、准确的市场分析和投资建议。

此外,RAG 能够快速适配专业领域。不同的专业领域具有独特的术语、知识体系和应用场景。传统生成模型在应用于专业领域时,往往需要大量的领域数据进行微调,才能达到较好的效果。而 RAG 模型通过构建领域特定的信息检索库,将领域知识与 LLM 相结合,能够快速实现领域适配。在法律领域,通过将法律法规、案例库等构建成检索源,RAG 模型可以为律师、法官等法律从业者提供准确的法律条文引用和案例参考,辅助法律决策。同时,RAG 模型生成的内容可以明确标注信息来源,这使得生成结果具有可解释性,用户能够追溯答案的依据,增强了对模型输出的信任度。

第二章:RAG 核心组件与工作原理

2.1 检索组件

2.1.1 检索器类型

在 RAG 系统中,检索组件负责从海量的信息源中快速、准确地找到与用户输入相关的文档或数据片段。检索器是实现这一功能的关键部件,目前主要有密集检索、稀疏检索和混合检索三种类型。

密集检索利用深度学习模型,将文本转化为低维的密集向量表示,通过计算向量之间的相似度来衡量文本的相关性。其中,双编码器架构是密集检索的常用方式,如 DPR(Dense Passage Retrieval)、ANCE(Approximate Nearest Neighbor Search with Clustered Embeddings)、ColBERT 等模型。以 DPR 为例,它包含两个独立的编码器,一个用于编码查询语句,另一个用于编码文档段落。在训练过程中,通过最大化相关查询与文档对的向量相似度,最小化不相关对的相似度,使得模型能够学习到有效的文本表示。在实际检索时,将用户的查询和文档库中的所有文档分别编码为向量,然后使用余弦相似度或点积等方法计算查询向量与文档向量之间的相似度,根据相似度得分对文档进行排序,返回得分最高的若干文档作为检索结果。

稀疏检索则基于传统的信息检索技术,如 BM25(Best Match 25)算法及其变种。BM25 算法在关键词匹配的基础上,通过对文档中关键词的频率、文档长度等因素进行统计分析,计算文档与查询的相关性得分。它不需要对文本进行复杂的向量表示学习,而是直接在文本的词项层面进行操作。例如,当用户输入一个查询时,BM25 算法会对查询中的每个关键词在文档库中的出现频率、所在文档的长度等进行计算,综合考虑这些因素得出每个文档与查询的相关性得分,从而筛选出相关文档。稀疏检索在处理大规模文本数据时,具有计算效率高、对硬件要求较低的优点,适用于一些对检索速度要求较高且文本数据较为稀疏的场景。

混合检索结合了密集检索和稀疏检索的优势,旨在进一步提高检索的准确性和效率。一种常见的混合检索方法是先使用稀疏检索对文档库进行粗筛,快速过滤掉大量不相关的文档,然后对筛选出的文档再使用密集检索进行精排,通过更精确的向量相似度计算来确定最终的检索结果。例如,在一个包含数十亿文档的大型搜索引擎中,首先利用 BM25 算法进行快速筛选,将检索范围缩小到数千个可能相关的文档,然后使用 DPR 等密集检索模型对这些文档进行精细排序,这样既能充分利用稀疏检索的高效性,又能发挥密集检索的高精度优势,为用户提供更优质的检索服务。

2.1.2 检索优化技术

为了进一步提升检索组件的性能,在实际应用中还会采用多种检索优化技术。查询扩展是一种常用的优化手段,它利用 LLM 的强大语言理解和生成能力,对用户输入的查询进行扩展和补充,使其更能准确表达用户的意图,从而提高检索的召回率和准确率。例如,当用户输入 “苹果” 这一简单查询时,LLM 可以根据上下文和语义理解,生成 “苹果公司产品”“苹果营养价值”“苹果种植技术” 等多个相关的扩展查询。然后,将这些扩展查询与原始查询一起用于检索,能够获取更全面、更符合用户需求的文档。

嵌入适配也是重要的优化技术之一。不同的领域和任务具有不同的语言风格和语义特点,通过在领域特定的数据上对嵌入模型进行微调,可以使模型更好地捕捉领域内的语义信息,提高文本表示的准确性和检索效果。例如,在生物医学领域,使用生物医学文献对嵌入模型进行微调,模型能够更好地理解和表示生物医学术语、概念之间的关系,从而在检索生物医学相关文档时,能够更准确地匹配用户查询与文档内容,提升检索的精准度。

多向量检索是另一种有效的优化策略。传统的单向量检索方法将整个文档编码为一个向量,可能会丢失文档中的一些重要细节信息。多向量检索则采用不同的策略对文档进行分块,为每个文档块生成独立的向量表示。在检索时,不仅考虑文档与查询的整体相关性,还考虑文档内部各个块与查询的相关性,从而更全面地评估文档与查询的匹配程度。例如,对于一篇较长的学术论文,可以按照段落、章节等结构将其分成多个块,分别对每个块进行向量编码。当用户查询与论文中的某个具体观点或实验相关时,多向量检索能够更准确地定位到包含相关信息的文档块,避免因整体向量表示的局限性而导致相关信息的遗漏。

层次化检索是一种分阶段的检索策略,它将检索过程分为粗排和精排两个阶段。在粗排阶段,使用较为简单、快速的检索方法,如基于关键词的检索或低维度向量的快速匹配,从大规模文档库中筛选出一批可能相关的文档,大大缩小检索范围。然后在精排阶段,对这些初步筛选出的文档使用更复杂、更精确的检索方法,如密集向量检索或基于语义理解的排序算法,进行精细排序,最终确定最符合用户需求的文档。这种层次化的检索方式能够在保证检索准确性的前提下,显著提高检索效率,尤其适用于处理大规模文档数据的场景。

2.2 生成组件

2.2.1 上下文构造策略

生成组件在 RAG 系统中负责根据检索组件提供的相关信息和用户的原始输入,生成最终的回答。上下文构造策略对于生成高质量的回答至关重要,它决定了如何将检索到的信息有效地整合到生成过程中。常见的上下文构造策略有串联式提示、摘要式提示和指令式提示。

串联式提示是一种简单直接的上下文构造方法,它将检索到的相关文档片段按照一定的顺序直接拼接在用户的原始查询之后,形成一个完整的提示输入给 LLM。例如,当用户查询 “苹果公司最新的产品有哪些” 时,检索组件从苹果公司官网、科技资讯网站等信息源获取到关于苹果最新产品的介绍文档片段,然后将这些文档片段依次串联在查询语句后面,如 “苹果公司最新的产品有哪些 [文档片段 1][文档片段 2][文档片段 3]”,最后将这个完整的提示传递给 LLM 进行回答生成。这种策略的优点是简单直观,能够最大程度地保留检索到的原始信息,但如果检索到的文档片段过多或过长,可能会超出 LLM 的输入长度限制,影响生成效果。

摘要式提示则先对检索到的文档内容进行摘要提取,将关键信息提炼出来,然后将摘要与用户的原始查询相结合,作为生成提示输入给 LLM。例如,可以使用文本摘要算法,如基于 Transformer 的摘要模型,对关于苹果最新产品的文档片段进行处理,提取出核心信息,如 “苹果公司近期推出了 iPhone 15 系列手机,具有全新的外观设计和更强大的性能;同时发布了新款 iPad,采用了先进的显示技术”,然后将这个摘要与用户查询组合成提示 “苹果公司最新的产品有哪些 [摘要内容]”。摘要式提示能够在不超出 LLM 输入长度限制的前提下,为模型提供更精炼、更关键的信息,有助于提高生成回答的质量和效率,但摘要提取过程可能会损失一些细节信息。

指令式提示是通过明确的指令来指导 LLM 如何使用检索到的信息进行回答生成。例如,在提示中可以指定 “根据以下文档片段,总结苹果公司最新产品的特点和优势,回答用户关于苹果公司最新产品有哪些的问题 [文档片段 1][文档片段 2][文档片段 3]”。这种策略能够更精确地控制 LLM 的生成行为,使生成的回答更符合用户的需求和期望,但需要精心设计指令内容,以确保 LLM 能够准确理解和执行。

2.2.2 生成控制技术

为了确保生成的回答符合预期,在生成组件中还需要运用生成控制技术。约束生成是一种常用的生成控制方法,它通过设定一些约束条件,使 LLM 在生成回答时必须包含特定的信息或满足特定的格式要求。例如,在生成产品介绍文案时,可以约束 LLM 必须提及产品的关键特点、使用场景和用户评价等信息;在生成数学问题的解答时,要求 LLM 按照特定的解题步骤进行回答。通过这种方式,可以使生成的内容更具针对性和实用性。

引用标注是为了提高生成内容的可信度和可追溯性,在生成回答时,自动对引用的检索信息进行标注。例如,当 LLM 根据某篇科技新闻报道生成关于苹果新产品的回答时,可以在回答中明确标注 “根据 [具体新闻网站名称] 的报道,苹果公司最新推出的 iPhone 15 系列手机采用了 [具体技术细节]”。这样,用户可以清楚地了解回答中信息的来源,增强对回答的信任度。同时,引用标注也有助于后续对生成内容的审核和验证。

置信度校准是对 LLM 生成的回答进行置信度评估,对于置信度较低、不确定性较大的内容进行特殊处理,如进行标注或重新生成。例如,可以使用一些基于概率模型的方法,对 LLM 生成的每个词或句子的置信度进行计算。如果某个部分的置信度低于设定的阈值,系统可以在回答中添加提示信息,如 “以下内容的准确性可能较低,请谨慎参考”,或者重新调整检索策略和生成参数,再次生成回答,以提高回答的可靠性。

第三章:RAG 进阶技术与优化策略

3.1 检索阶段优化

3.1.1 分块策略

在检索阶段,为了更好地处理和检索文档,分块策略起着关键作用。合理的分块能够提高检索的准确性和效率,确保检索组件能够精准地定位到与用户查询相关的信息。常见的分块策略有固定大小分块、动态分块、重叠分块和层次分块。

固定大小分块是将文档按照预先设定的固定长度进行划分,例如将文档划分为每块 512 或 1024 个 token 的片段。这种分块方式简单直观,易于实现,在许多场景下都能取得较好的效果。例如,在处理一般性的文本资料时,固定大小分块能够均匀地将文档分割成适合检索的单元,使得检索组件可以对每个分块进行独立的向量编码和检索匹配。然而,固定大小分块也存在一定的局限性,它可能会在文档的语义边界处进行分割,导致一个完整的语义单元被拆分到不同的分块中,影响检索的准确性。比如,一个完整的句子或段落可能因为固定大小的限制而被截断,使得在检索时无法准确匹配到与该语义单元相关的查询。

动态分块则根据文档的语义结构进行分块,它能够更好地保留文档的语义完整性。常见的动态分块方法是基于段落或标题等语义边界进行划分。例如,在处理一篇学术论文时,动态分块可以将每个段落作为一个独立的分块,因为段落通常围绕一个主题展开,具有相对完整的语义。这样,在检索时,能够更准确地匹配到与用户查询相关的语义单元,提高检索的精度。与固定大小分块相比,动态分块更能适应不同类型文档的结构特点,但它的实现相对复杂,需要对文档的语义结构进行分析和识别。

重叠分块是在分块过程中,为相邻的分块添加一定的重叠区域。例如,在将文档划分为每块 512 个 token 的分块时,可以设置相邻分块之间有 128 个 token 的重叠部分。这样做的目的是为了防止在分块边界处丢失重要信息。当用户的查询涉及到分块边界附近的内容时,重叠分块能够确保相关信息不会因为分块而被遗漏,从而提高检索的召回率。例如,一个查询关键词恰好位于两个分块的边界附近,若采用非重叠分块,可能会导致该关键词所在的语义单元被拆分,检索时无法准确匹配;而重叠分块则可以使包含该关键词的完整语义单元至少在一个分块中得以完整保留,增加了检索到相关信息的可能性。

层次分块是一种更高级的分块策略,它采用多粒度的分块方式,将文档先进行较大粒度的分块,然后对每个大分块再进行更细粒度的分块。例如,对于一本包含多个章节的书籍,首先可以将每个章节作为一个大分块,然后再将每个章节内的内容按照段落或固定大小进行更细粒度的分块。在检索时,可以先在大分块层面进行初步检索,快速筛选出可能相关的章节,然后再对这些章节内的细粒度分块进行深入检索,确定具体的相关内容。层次分块结合了不同粒度分块的优势,既能在宏观层面快速定位相关区域,又能在微观层面精确匹配具体信息,提高了检索的效率和准确性,尤其适用于处理大型文档集合。

3.1.2 嵌入模型选择

嵌入模型在 RAG 系统的检索阶段起着至关重要的作用,它负责将文本转换为低维的向量表示,以便进行相似度计算和检索匹配。选择合适的嵌入模型对于提高检索性能至关重要,目前在实际应用中有多种嵌入模型可供选择,并且可以根据不同的需求进行领域适配和多语言支持。

通用模型如 OpenAI 的 text - embedding - ada - 002 具有广泛的适用性和较高的性能。这些模型在大规模的多领域语料库上进行训练,能够捕捉到丰富的语义信息,对于一般性的文本检索任务能够提供较好的效果。例如,在一个综合性的知识问答系统中,使用 text - embedding - ada - 002 模型对问题和文档进行向量编码,可以有效地计算它们之间的语义相似度,从而准确地检索到相关的知识文档。然而,在一些特定领域,通用模型可能无法充分捕捉领域内独特的术语、概念和语义关系。

为了更好地适应特定领域的需求,可以在领域数据上对嵌入模型进行微调。例如,在医疗领域,可以使用大量的医学文献、病历数据等对预训练的嵌入模型进行进一步训练,使模型能够更好地理解和表示医学领域的专业术语和语义信息。经过领域适配后的嵌入模型,在处理医疗相关的检索任务时,能够更准确地匹配用户的查询与医学文档,显著提高检索的精准度。例如,当用户查询关于某种罕见病的治疗方法时,经过医疗领域微调的嵌入模型能够更精准地识别出与该疾病相关的医学文献

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OmiZJps6wDw3AgIvfFcXJnqw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券