为什么RAG,如何RAG和怎么做RAG?

*大家好,我是AI拉呱,一个专注于人工智领域与网络安全方面的博主,现任资深算法研究员一职,热爱机器学习和深度学习算法应用,拥有丰富的AI项目经验,希望和你一起成长交流。关注AI拉呱一起学习更多AI知识。

文章目录

  • 什么是 RAG?
  • RAG 应用
  • RAG 是如何工作的?
      • 索引
      • 检索
      • 增强
      • 生成
  • RAG 的优势与挑战
    • RAG 的优势
    • RAG 的挑战
  • RAG 必知术语
  • RAG 学习路线图
  • RAG 开发者栈

什么是 RAG?

检索增强生成(RAG)是一种流行的技术,通过在生成答案之前从知识库中检索相关的外部知识来增强 LLM 的响应。RAG 提高了准确性,减少了幻觉,并使模型能够提供更符合上下文和更新的信息。

RAG 包括三个步骤:检索、增强和生成。

检索 - 在此步骤中,系统会在外部知识源(例如向量数据库)中搜索相关信息,以基于用户查询找到相关的信息。

增强 - 检索到的信息随后与原始用户查询结合,形成 LLM 的提示。

生成 - LLM 处理提示并生成响应,整合其预训练知识和检索到的信息。这使得响应更加准确且符合上下文。

让我们通过一个简单的例子来理解 RAG。

1 - 用户提出查询

示例:2025年ICC冠军奖杯的获胜者是谁?

2 - 检索器在知识源(例如维基百科或互联网)中搜索,并返回相关上下文。

示例检索上下文:"2025年ICC冠军奖杯于2月19日至3月9日在巴基斯坦和阿拉伯联合酋长国举行,最终印度成为胜利的冠军,赢得了该赛事历史上的第三个冠军。主要由巴基斯坦主办——这是自1996年以来他们的首次全球板球赛事——该赛事实施了混合模式,由于地缘政治考虑,印度的所有比赛都在迪拜进行。决赛在迪拜国际板球场上演了一场紧张的比赛,印度以四个门柱的优势击败新西兰,追平了252分的目标,并且还剩下一局。 "

3 - 查询、相关上下文和指令被组合成一个提示。

示例提示:

"仅根据上下文回答查询。如果在上下文中找不到查询的答案,请回复 - 我无法回答该查询。

查询:2025年ICC冠军奖杯的获胜者是谁?

*上下文:*2025年ICC冠军奖杯于2月19日至3月9日在巴基斯坦和阿拉伯联合酋长国举行,最终印度成为胜利的冠军,赢得了该赛事历史上的第三个冠军。主要由巴基斯坦主办——这是自1996年以来他们的首次全球板球赛事——该赛事实施了混合模式,由于地缘政治考虑,印度的所有比赛都在迪拜进行。决赛在迪拜国际板球场上演了一场紧张的比赛,印度以四个门柱的优势击败新西兰,追平了252分的目标,并且还剩下一局。"

4 - 提示被输入到大型语言模型 (LLM) 中,LLM 根据提供的上下文为用户查询生成答案。

示例输出:“印度在迪拜国际板球场举行的决赛中以四个门柱的优势击败新西兰,赢得了2025年ICC冠军奖杯。”

RAG 应用

AI 搜索引擎

AI 搜索引擎使用 RAG 通过将大型语言模型与实时数据检索相结合来增强搜索结果,提供准确且符合上下文的答案。它们擅长理解自然语言查询并从海量数据集中提取信息,使搜索更加直观和高效。

客户服务聊天机器人

客户服务聊天机器人利用 RAG 通过检索公司特定数据(如常见问题或产品手册)并生成类似人类的回复,提供个性化和准确的响应。这缩短了响应时间,提高了客户满意度,并处理了超出简单脚本答案的复杂查询。

法律文件分析

法律文件分析采用 RAG 筛选大量的法律文本、合同或判例法,检索相关的条款或先例,并用通俗易懂的语言总结它们。它通过加速研究、确保准确性并从密集的文档中识别关键见解来帮助律师。

科学研究辅助

科学研究辅助使用 RAG 通过检索和综合来自科学论文、数据集或实验的信息,为研究人员提供简洁的摘要或假设。它简化了文献综述、事实核查和跨大量研究存储库探索复杂主题的过程。

医疗决策支持

医疗决策支持将 RAG 集成到患者数据、医学文献或治疗指南中,协助医生做出基于证据的建议或诊断。它通过提供最新的、特定上下文的见解来增强决策过程,同时优先考虑患者隐私和准确性。

个性化教育

个性化教育应用 RAG 定制学习体验,检索相关的教育资源并生成适合学生学习进度和理解水平的解释。它通过适应个人需求并有效填补知识空白来支持导师或自学者。

技术文档搜索

技术文档搜索利用 RAG 导航复杂的手册、代码库或故障排除指南,检索精确的解决方案并清晰地解释它们。它通过快速解决技术查询并提供具有上下文感知的详细响应,为开发人员和工程师节省时间。

RAG 是如何工作的?

RAG 包括四个步骤,即索引、检索、增强和生成。索引步骤仅执行一次,而检索、增强和生成步骤会针对每个用户查询重复执行。

索引

RAG 中的索引涉及处理原始文档,首先提取其内容(解析),然后将它们拆分为更小且有意义的块。这些块随后使用嵌入模型转换为向量嵌入,并存储在向量数据库中,以便在查询时进行高效检索。

  • 解析:从文档(PDF、网页等)中提取原始文本。
  • 分块:将文本拆分为更小且有意义的段落以供检索。
  • 编码:使用嵌入模型将块转换为密集向量嵌入。
  • 存储:将嵌入保存在向量数据库中,以实现快速相似性搜索。

检索

用户提出一个 查询,该查询使用索引步骤中使用的相同嵌入模型转换为密集向量(嵌入)。然后使用此向量表示进行 语义搜索,以从向量数据库中找到最相关的块信息。

  • 查询:用户输入一个问题或提示。
  • 编码:使用嵌入模型将查询转换为密集向量表示。
  • 语义搜索:将编码后的查询与向量数据库中的嵌入进行比较,以找到最相关的嵌入。
  • 相关块:检索到的文本块作为生成响应的上下文返回。

增强

在此步骤中,检索到的相关块被组合形成上下文。然后将查询与该上下文合并,以构建 LLM 的提示。

  • 组合:相关块被组合以形成上下文。
  • 增强:查询与上下文合并以创建 LLM 的提示。

生成

在此步骤中,提示被传递给 LLM。LLM 处理提示并根据查询和上下文生成响应。

  • 传递:包含查询和上下文以及指令的提示被传递给 LLM。
  • 生成:LLM 处理提示并根据查询和提供的上下文生成响应。

RAG 的优势与挑战

RAG 的优势

提高准确性

检索增强生成(RAG)通过从外部来源提取相关数据来提升响应的精确性。这减少了对预训练知识的依赖,确保答案更加真实和及时。

支持实时更新

RAG 可以通过查询实时或频繁更新的来源来整合最新信息。这使得响应能够与当前事件或发展保持一致。

上下文相关性

RAG 通过检索与用户查询相关的特定信息来定制响应。这导致了更有意义且更符合上下文的响应,从而提高了用户满意度。

减少幻觉

通过将响应基于检索到的上下文,RAG 最小化了虚构或不正确的输出。这在处理复杂或专业主题时尤其提升了可靠性。

成本效益

RAG 通过利用外部检索避免了持续的模型重新训练需求。这节省了计算资源,同时保持高性能。

提高用户信任

RAG 对可验证、检索到的信息的依赖增强了对其输出的信心。用户认为响应更具可信度和权威性。

更好地处理专业主题

RAG 通过访问目标数据,在解决专业化或罕见主题方面表现出色。即使对于较少见的询问,这也确保了详细和知情的响应。

RAG 的挑战

检索增强生成(RAG)是一种结合大型语言模型与外部知识检索的技术,用于提升响应的准确性和相关性。尽管功能强大,但它面临一些挑战:

检索准确性

检索块的质量至关重要。如果检索系统获取了无关、过时或低质量的信息,生成的输出可能具有误导性或不正确。

上下文相关性

确保检索到的内容与查询意图一致可能会很棘手。匹配不佳的块可能会混淆模型或稀释响应。

可扩展性

从大型、动态的知识库中高效搜索和检索需要大量的计算资源和优化索引,这可能代价高昂或速度较慢。

延迟

两步过程(检索然后生成)可能会引入延迟,这在没有仔细优化的情况下使其不太适合实时应用。

幻觉风险

即使有检索,如果检索到的数据模棱两可或不足,模型可能会生成看似合理但无根据的细节。

偏差和噪声

检索到的内容可能携带来自网络或其他来源的偏差、错误或无关噪声,这些可能会传播到输出中。

RAG 必知术语

以下是必须了解的 RAG 术语:

  1. 查询 (Query) - 用户提供的输入文本或问题,用于检索相关信息。它指导 RAG 系统中的检索和生成过程。

  2. 块 (Chunk) - 较大文档的小段,通常是段落或句子。分块有助于提高 RAG 中的检索效率和相关性。

  3. 分块 (Chunking) - 将大文本分解为更小、有意义的段的过程。这确保了高效的存储、检索和上下文相关性。

  4. 嵌入 (Embedding) - 捕捉语义意义的文本数值表示。它在向量空间中实现高效的相似性比较。

  5. 索引 (Indexing) - 以结构化方式组织和存储嵌入,以便快速检索。它帮助在大型数据集中高效定位相关信息。

  6. 向量存储 (Vector Store) - 一种专门的数据库,将文本嵌入存储为向量。它支持基于相似性的快速准确检索。

  7. 检索 (Retrieval) - 基于查询获取相关信息块的过程。这是通过外部知识增强 LLM 的关键步骤。

  8. 语义搜索 (Semantic Search) - 一种根据意义而非确切词语查找结果的搜索技术。它使用嵌入来捕捉上下文相似性。

  9. 关键词搜索 (Keyword Search) - 一种传统的搜索方法,匹配确切的单词或短语。它不考虑语义意义,只考虑文本出现情况。

  10. 混合搜索 (Hybrid Search) - 关键词搜索和语义搜索的结合。它通过利用两种技术平衡精确度和召回率。

  11. 增强 (Augmentation) - 在将查询传递给 LLM 之前,用检索到的信息增强输入查询。它提供额外的上下文以提高响应质量。

  12. 上下文 (Context) - 帮助 LLM 生成相关响应的周围信息。在 RAG 中,它是通过合并检索到的相关块获得的。

  13. 上下文窗口 (Context Window) - LLM 一次可以处理的最大标记数。

  14. 提示 (Prompt) - 提供给 LLM 以生成响应的格式化输入。它包括用户查询、检索到的上下文和指令。

  15. 提示工程 (Prompt Engineering) - 设计有效提示以引导 LLM 响应的实践。它优化清晰度、结构和意图以获得更好的输出。

  16. 生成 (Generation) - LLM 根据给定提示生成文本的过程。它综合信息以生成连贯且相关的响应。

  17. 大型语言模型 (LLM) - 在大量文本数据上训练的神经网络,能够理解和生成类似人类的语言。它通过解释查询和生成响应为 RAG 系统提供动力。

  18. 温度 (Temperature) - 控制 LLM 输出随机性的参数。较高的值产生更多样化的响应,而较低的值使它们更具确定性。

  19. 响应 (Response) - LLM 针对查询生成的输出。它受到检索、上下文和指令的影响。

RAG 学习路线图

Python 编程语言

Python 是 RAG 开发的主要语言,因为它拥有丰富的 AI 生态系统。它提供了如 LangChain、LlamaIndex 和 sentence-transformers 等库,用于无缝实现。

生成式 AI 基础

了解生成式 AI 模型的工作原理,包括文本生成、图像生成和多模态 AI,对于构建 RAG 应用程序至关重要。

LLM 基础

大型语言模型(LLMs)在大规模数据集上进行训练,以生成类似人类的文本。RAG 系统使用 LLM 来解释用户查询并根据检索到的上下文生成响应。

LLM 框架(LangChain 或 LlamaIndex)

这些框架提供了内置功能来开发 RAG 应用程序。

分块

分块意味着将文档拆分为小块,以便可以将相关块提供给 LLM。不同的分块策略包括固定大小分块、递归分块、代理分块、语义分块等。

数据提取

从非结构化文档(PDF、HTML、文本等)中提取结构化数据是构建 RAG 中的知识库所必需的。

嵌入

嵌入将文本转换为高维数值向量,捕捉语义意义。它们用于 RAG 系统中的相似性搜索、检索和文档聚类。

向量数据库

像 FAISS、ChromaDB 和 Weaviate 这样的向量数据库能够高效地存储和检索嵌入。它们支持快速语义搜索,以找到适用于 LLM 的相关块。

RAG 基础

检索增强生成(RAG)通过在生成之前检索相关知识来增强 LLM。这提高了准确性,减少了幻觉,并实现了实时更新。

从零开始实现 RAG

从零构建 RAG 系统涉及设计检索、分块、索引、嵌入存储和查询机制,而不依赖于预建框架。

使用 LangChain 或 LlamaIndex 实现 RAG

这些框架通过提供用于文档加载、嵌入、检索和 LLM 集成的内置工具简化了 RAG 实现。

代理基础

代理使用推理、记忆和工具使用与外部系统交互并自动化复杂工作流。由 LLM 驱动的代理可以动态检索和处理数据。

代理 RAG

代理 RAG 将基于检索的知识与自主代理能力相结合。它使 LLM 能够进行迭代查询、优化答案并根据检索到的信息采取行动。

高级 RAG 技术

高级技术包括混合检索(语义+关键词搜索)、查询重写、重新排序等。

构建 RAG 应用

构建现实世界的 RAG 应用涉及集成 UI、后端逻辑和数据库。使用 Streamlit、FastAPI 或 Flask 创建交互式的基于 RAG 的系统。

RAG 评估与监控

评估 RAG 模型需要诸如检索精度、幻觉率和响应相关性等指标。像 LangSmith 这样的监控工具有助于分析系统性能。

部署 RAG 应用

部署 RAG 应用涉及在 AWS、Azure 或 Google Cloud 等云平台上托管模型、向量数据库和检索管道,以实现可扩展访问。

RAG 开发者栈

RAG 开发者的栈包括大型语言模型(LLMs)、LLM 框架、向量数据库、数据提取库、开源 LLM 访问平台、文本嵌入和评估库。

LLMs(大型语言模型)

强大的 AI 模型,基于大量文本数据训练生成类似人类的响应。LLMs 是 RAG 的核心,支持自然语言理解和生成。

LLM 框架

像 LangChain、Llama Index 等 LLM 框架通过提供内置工具简化了使用 LLM 构建应用程序的过程。这些框架避免了从零开始编写代码,并加速了 LLM 应用程序的开发。

向量数据库

一种专门的数据库,将文本嵌入存储和索引为高维向量。它能够快速高效地检索语义相似的内容,适用于 RAG 应用程序。

数据提取库

数据提取库帮助从各种文档中提取数据,例如网页、PDF、Word 文档、图像、PowerPoint 演示文稿等。一旦数据被提取,数据会被分块、编码,然后作为嵌入存储在向量数据库中。

开源 LLM 访问

开源 LLM 访问平台提供了对开源 LLM 的访问,使其能够在本地或自定义设置上运行。这些平台使开发者能够为 RAG 应用程序使用成本效益高且可定制的模型。

文本嵌入

这些技术将文本转换为数值向量,捕捉用于相似性比较的语义意义。它们在 RAG 的检索步骤中检索相关文档或块时至关重要。

评估

评估 RAG 应用程序的性能以了解其优缺点至关重要。为此,我们有如 RAGAS、Giskard、Trulens 等库。

关注“AI拉呱公众号”一起学习更多AI知识!

你可能感兴趣的:(LLM大语言模型,rag)