你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
检索扩充生成(RAG)是一种设计模式,它通过添加新内容、专用内容或专有内容来帮助回答问题,从而增强预先训练的大型语言模型(LLM)的功能。
RAG 实现通常包括信息检索组件。 关于选择使用哪个信息检索系统的决定至关重要,因为 LLM 受其可接受的令牌输入数量限制,因此您希望确保基础数据尽可能相关。 要考虑的条件包括:
能够从广泛的数据源和平台中提取数据。
查询功能可以针对所有数据,返回合成且高度相关的结果,并采用符合 LLM 输入令牌长度要求的简短格式。
轻松与代理和聊天应用以及属于应用程序的其他模型和流程集成。
内置内容准备(分块、矢量化、图像语言化)。 通常可将可搜索数据合并到针对搜索进行优化的单独物理数据结构中。 可以将图像口头化、识别或分析,以便将文本等效的信息获取到索引中。 更可能的是,你可能希望对详细源内容进行分块,以便可以轻松使用它,并向量化该内容(如果需要相似性搜索)。
Azure AI 搜索是 适用于 RAG 工作负载的经过验证的解决方案。 它提供满足常见条件的索引和查询功能,以及 Azure 云的基础结构和安全性。 通过代码和其他组件,可以设计一个完整的堆栈 RAG 体系结构,其中包含基于专有内容生成 AI 的所有元素。
可以在 RAG 工作负载的两种方法之间进行选择:新式 RAG 的新 代理检索 (目前为预览版),或 经典 RAG 的原始查询体系结构。 如果需要仅使用正式版功能,应考虑使用经典 RAG。
现代 RAG,具有自主检索功能
Azure AI 搜索现在提供 代理检索,这是专为 RAG 模式设计的专用管道。 此方法使用 LLM 将复杂的用户查询智能分解为重点子查询,并行执行这些查询,并返回针对聊天完成模型优化的结构化响应。
代理检索表示从传统的单查询 RAG 模式到多查询智能检索的演变,提供:
- 使用对话历史记录进行上下文感知查询规划
- 并行执行多个重点子查询
- 具有依据数据、引文和执行元数据的结构化响应
- 内置语义排名以实现最佳相关性
- 可选答案合成,该合成在查询响应中使用由 LLM 构建的答案。
需要为此管道配置新对象:一个或多个知识源、知识库,以及在应用程序代码中调用的检索操作,例如与 AI 代理配合使用的工具。
对于新的 RAG 实现,建议从 代理检索开始。 对于现有解决方案,请考虑迁移以利用改进的准确性和上下文理解。
Azure AI 搜索的经典 RAG 模式
经典 RAG 使用 原始查询执行体系结构 ,应用程序将单个查询发送到 Azure AI 搜索,并单独安排向 LLM 移交。 部署的 LLM 使用查询中的扁平化结果集来生成答案。 这种方法更简单,组件更少,而且速度更快,因为没有 LLM 参与查询规划。
有关实现经典 RAG 的详细信息,请参阅 azure-search-classic-rag 存储库。
Azure AI 搜索中的可搜索内容
可搜索的内容是 RAG 解决方案的基石。 本部分更详细地了解什么是 Azure AI 搜索中的可搜索内容。
可搜索内容是 单个搜索索引 (经典 RAG)或具有多个知识源的 知识库 ,由多个搜索索引或远程数据提供程序提供支持。 在索引中,你有纯文本内容和矢量化内容。
纯文本内容(标记化)至关重要,因为它用于 LLM 输入、计分配置文件和语义排名。
向量(嵌入)为不同内容(多种文件格式和语言)提供最佳支持,因为内容以数学表示形式普遍表达。 矢量还支持相似性搜索:在与矢量查询最相似的坐标上匹配。 与在标记化术语上匹配的关键字搜索(或术语搜索)相比,相似性搜索更加细致。 如果内容或查询中存在歧义或解释要求,这是更好的选择。
但是,无需在矢量和纯文本之间进行选择,因为 混合搜索 允许合并它们。 可以在经典 RAG 中指定混合查询。 如果索引具有两种内容类型,代理检索会自动创建它们。
Azure AI 搜索索引支持针对 RAG 优化的多个内容类型:
| 内容类型 | 如何编制索引 | 主要功能 |
|---|---|---|
| 纯文本 | 令牌,原始文本 | 索引器和知识源。 此外,用于在处理过程中修改文本的分析器和规范化器。 查询扩展的同义词映射。 |
| 矢量化文本 | Embeddings | 通过索引器或外部工具进行分块和矢量化 |
| 映像 | 通过 OCR 和 AI 生成的标识符 | OCR 和图像分析 技能 (需要索引器) |
| 多模态 | 统一嵌入 | Azure Vision 多模式或OpenAI CLIP用于统一嵌入空间。 |
对于代理检索,还可以在不编制索引的情况下访问远程源(必应、SharePoint)。
最大化相关性和召回率
如何为 LLM 答案表述提供最佳基础数据? 它是具有可识别最佳区块的适当内容、智能查询和查询功能的组合。
在查询方面,为确保您的 RAG 实现获取最相关的结果:
使用混合查询,结合关键字(非向量)和向量搜索,以实现最大召回率。 在混合查询中,如果对相同的输入加倍,则文本字符串及其向量等效项将生成关键字和相似性搜索的并行查询,并在统一的结果集中返回每种查询类型最相关的匹配项。
语义排名内置于代理检索中,对于经典的 RAG 是可选的。
应用计分配置文件以提升特定数据字段或标准。
在代理检索和经典 RAG 之间进行选择
在以下情况下使用代理检索:
- 需要尽可能高的相关性和准确性
- 您的查询是复杂或对话型的
- 需要包含引文和查询详细信息的结构化响应
- 你正在构建新的 RAG 实现
在以下情况下使用经典 RAG:
- 仅需要通用发布版 (GA) 功能
- 简单性和速度优先于高级相关性
- 你有要保留的现有编排代码
- 需要对查询管道进行精细控制
包含代理和 Azure AI 搜索的 RAG 解决方案可以从 Foundry IQ 中受益,作为代理的单一终结点到提供基础数据的知识层。 Foundry IQ 使用代理检索。
如何入门
有许多方法可以开始,包括代码优先解决方案和演示。