Azure AI 搜索中的代理检索

注释

此功能目前处于公开预览状态。 此预览版未随附服务级别协议,建议不要用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

什么是代理检索? 在 Azure AI 搜索中, 代理检索 是一个新的多查询管道,专为聊天和 copilot 应用中的用户或代理提出的复杂问题而设计。 它适用于 检索扩充生成(RAG) 模式和代理到代理工作流。

下面是它的作用:

  • 使用大型语言模型(LLM)将复杂查询分解为较小的重点子查询,以便更好地覆盖索引内容。 子查询可以包含聊天历史记录,以提供额外的上下文。

  • 并行运行子查询。 每个子查询都会进行语义重排序,以提升最相关匹配结果的排名。

  • 将最佳结果合并成一个统一的响应,你的 LLM 可以用它来生成包含你的专有内容的答案。

  • 该响应通过包含查询计划和源文档展现出模块化特性,同时也非常全面。 可以选择仅使用搜索结果作为基础数据,或调用 LLM 来表述答案。

此高性能管道可帮助你为聊天应用程序生成高质量的地面数据(或答案),并能够快速回答复杂的问题。

对智能体检索的支持是以编程方式通过 2025-08-01-preview 和 2025-05-01-preview 数据平面 REST API 和提供该功能的 Azure SDK 预览包中的新知识智能体对象来实现的。 知识代理的检索响应旨在供其他代理和聊天应用下游使用。

为何使用代理检索

如果要为代理和应用提供最相关的内容来回答更难的问题,利用聊天上下文和专有内容,则应使用代理检索。

代理方面是查询规划处理中的一个推理步骤,由你提供的受支持大型语言模型 (LLM) 执行。 LLM 分析整个聊天线程,以确定所需的基础信息。 LLM 将复合问题拆解为专注的子查询,这些子查询是基于用户问题、聊天历史记录和请求中参数定义的,而不是单一的全集查询。 子查询以 Azure AI 搜索中的索引文档(纯文本和矢量)为目标。 这种混合方法可确保同时呈现关键字匹配和语义相似性,从而显著提高召回率。

检索组件能够同时运行子查询、合并结果、对结果进行语义排序,并返回包含三个部分的响应:其中包括下一个会话轮次的基础数据、引用数据以便检查源内容,以及显示查询执行步骤的操作计划。

查询扩展和并行执行以及检索响应是代理检索的关键功能,使其成为生成式 AI (RAG) 应用程序的最佳选择。

包含隐含上下文和故意拼写错误的复杂查询示意图。

代理检索增加了查询处理的延迟,但它通过添加这些功能来弥补它:

  • 读入历史聊天记录作为检索管道的输入。
  • 将包含多个“请求”的复杂查询分解为组件部分。 例如:“帮我在海滩附近找一个提供机场接送服务且步行可达素食餐厅的酒店。”
  • 将原始查询通过同义词映射(可选)和 LLM 生成的释义重写为多个子查询。
  • 更正拼写错误。
  • 同时执行所有子查询。
  • 将统一结果输出为单个字符串。 或者,您可以提取响应中的部分以用于您的解决方案。 有关查询执行和引用数据的元数据包含在响应中。

代理检索会为每个子查询多次调用整个查询处理管道,但它是并行地进行调用,从而保持实现合理用户体验所需的效率和性能。

注释

在查询规划中包含 LLM 会增加查询管道的延迟。 可以通过使用更快的模型(如 gpt-4o-mini)和汇总消息线程来缓解效果。 尽管如此,此管道的查询时间预期会更长。

体系结构和工作流

智能体检索专为使用 LLM 智能分解复杂查询的对话搜索体验而设计。 系统协调多个 Azure 服务以提供全面的搜索结果。

使用示例查询的代理检索工作流示意图。

工作原理

代理检索过程如下所示:

  1. 工作流启动:应用程序调用带有检索动作的知识代理,该动作提供查询和对话历史记录。

  2. 查询规划:知识代理将查询和对话历史记录发送到 LLM,后者分析上下文并将复杂的问题分解为重点子查询。 此步骤是自动化的,不可自定义。

  3. 查询执行:知识代理将子查询发送到知识源。 所有子查询同时运行,可以是关键字、矢量和混合搜索。 每个子查询都会进行语义重新调整,以查找最相关的匹配项。 引用资料被提取并保留以供引证。

  4. 结果合成:系统将所有结果合并为统一响应,其中包含三个部分:合并的内容、源引用和执行详细信息。

你的搜索索引决定了查询执行以及在查询执行过程中可能发生的任何优化。 具体而言,如果索引包含可搜索的文本和矢量字段,则执行混合查询。 如果唯一可搜索字段是矢量字段,则仅使用纯矢量搜索。 索引语义配置以及可选的计分配置文件、同义词映射、分析器和规范化器(如果添加筛选器)均在查询执行期间使用。 对于语义配置和计分概要文件,必须有命名默认值。

所需组件

组件 服务 角色
LLM Azure OpenAI 从聊天上下文创建子查询,稍后使用基础数据进行应答生成
知识代理 Azure AI 搜索 协调管道,连接到 LLM 并管理查询参数
知识来源 Azure AI 搜索 使用与知识智能体使用情况相关的属性包装搜索索引
搜索索引 Azure AI 搜索 使用语义配置存储可搜索内容(文本和矢量)
语义排序器 Azure AI 搜索 重新排序相关性结果的必要组件(L2 相关性排序)

集成需求

应用程序通过调用知识代理并处理响应来驱动管道。 管道返回传递到 LLM 的基础数据,以便在对话界面中生成答案。 有关实现详细信息,请参阅 教程:生成代理到代理检索解决方案

注释

查询规划仅支持 gpt-4o、gpt-4.1 和 gpt-5 系列模型。 可以使用任何模型生成最终答案。

如何入门

必须使用预览版 REST API 或提供该功能的预发行版 Azure SDK 包。 目前,没有 Azure 门户或 Azure AI Foundry 门户支持。

为下一步选择其中任一选项。

可用性和定价

代理检索在所有提供 语义排名器的所有区域中都可用,但免费层除外。

代理检索计费分为两部分:

  • 查询规划和答案合成(可选)的计费方式为 Azure OpenAI 中的标准的预付费方案。 它是基于输入和输出标记的标记。 分配给知识代理的模型将根据令牌使用情况收费。 例如,如果使用 gpt-4o,令牌费用将显示在 gpt-4o 的帐单中。

  • 在查询执行期间进行的语义排名将计费。 在初始推出阶段暂停计费,但随后通过语义排名器,过渡到 Azure AI 搜索中的标准预付费方案。 语义排名器是高级计费功能,是代理检索不可或缺的一部分。 在 Azure AI 搜索端,你需要为语义排名模型的标记输入付费。

对计划中的每个子查询执行语义排名。 语义排名费基于每个子查询返回的标记数。

方面 经典单查询管道 代理检索多查询管道
单位 基于(每个货币单位 1,000 个查询) 基于标记(每个单位货币 100 万个标记)
单位成本 每个查询的统一成本 每个令牌的统一成本
成本估算 估算查询次数 估计令牌使用情况
免费层 1,000 个免费查询 5000 万个免费令牌

注释

如果在代理检索之外使用它,则现有的语义排名器计费保持不变。 有关没有代理检索的定价,请参阅 Azure AI 搜索定价页