提高 RAG 应用程序质量
本文概述了如何优化每个组件以提高检索增强生成 (RAG) 应用程序的质量。
离线数据管道和在线 RAG 链中的每个点都有无数的“旋钮”需要调整。 虽然还有无数其他旋钮,但本文重点介绍对 RAG 应用程序质量影响最大的最重要的旋钮。 Databricks 建议从这些旋钮开始。
两种类型的质量注意事项
从概念的角度来讲,通过两种主要质量问题的视角来查看 RAG 质量旋钮会很有帮助:
检索质量:是否正在检索与给定检索查询最相关的信息?
如果提供给 LLM 的上下文缺少重要信息或包含多余的信息,则很难生成高质量的 RAG 输出。
生成质量:根据检索到的信息和原始用户查询,LLM 能否生成最准确、最连贯、最有用的响应?
这里的问题可能表现为误报、不一致的输出或无法直接解决用户查询。
RAG 应用有两个组件:数据管道和链,你可以迭代这两个组件以应对质量挑战。 我们难免会假设检索问题(只需更新数据管道)和生成问题(更新 RAG 链)之间存在明确的划分。 然而,现实要微妙的多。 检索质量可能受到数据管道(例如,解析/分块策略、元数据策略、嵌入模型)的影响,也可能受到 RAG 链(例如,用户查询转换、受检索的块数、重新排名)的影响。 类似地,生成质量必然会受到不良检索的影响(例如,不相关或缺失的信息影响模型输出)。
这种重叠强调了采取整体方法来改进 RAG 质量的必要性。 通过了解需要在数据管道和 RAG 链中同时更改哪些组件,以及这些更改如何影响整体解决方案,你可以进行有针对性的更新以提高 RAG 输出质量。
数据管道质量注意事项
有关数据管道的主要注意事项:
- 输入数据语料库的构成。
- 如何提取原始数据并将其转换为可用格式(例如,解析 PDF 文档)。
- 如何将文档分割成更小的块以及如何格式化这些块(例如,分块策略和块大小)。
- 提取出的有关各个文档和/或块的元数据(如章节标题或文档标题)。 此类元数据是否包含在各个块中。
- 用于将文本转换为相似性搜索的向量表示的嵌入模型。
RAG 链
- LLM 的选择及其参数(例如温度和最大令牌数)。
- 检索参数(例如,检索的区块数或文档数)。
- 检索方法(例如,关键字搜索、混合搜索、语义搜索、重写用户查询、将用户查询转换为筛选器或重新排名)。
- 如何使用检索到的上下文来设置提示的格式,以指导 LLM 实现高质量的输出。