你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注意
Azure AI 搜索可通过Azure门户、REST API 和Azure SDK获取。 它也是 Foundry IQ 的基础;Foundry IQ 是一个托管式知识层,可将企业内容转化为供 Microsoft Foundry 门户中的智能体使用的、可复用且具备权限感知能力的知识库。
Important
标记为“预览”的特性、功能或属性不受服务级别协议 (SLA) 保障,不建议用于生产工作负载,并且在正式发布之前可能会更改或受到限制。 Azure AI 搜索预览条款适用于所有预览功能,无论是独立功能还是正式版功能的一部分。
在 Azure AI 搜索 中,智能体检索是一个多查询管道,专为聊天和助手应用中的用户或智能体提出的复杂问题而设计。 它适用于 检索增强生成(RAG)模式和代理对代理工作流。
代理检索的作用如下:
可以使用基于 LLM 的查询规划(预览版)将复杂查询分解为更小、重点更集中的子查询,以便更好地覆盖专有和外部内容。 查询规划可以将聊天历史记录用于其他上下文。
并行运行子查询。 每个子查询都经过语义上的重新排序,以提升最相关的匹配结果。
将最佳结果整合为统一回复,供 LLM 用于生成有依据的答案。
可以返回源引用和活动日志以及合并的内容,以便仅使用基础数据或将其传递给 LLM 以获取完整答案。
这一高性能管道可帮助你为聊天应用程序生成高质量的依据数据或答案,并具备快速回答复杂问题的能力。
为何使用代理检索?
智能体检索支持智能体和应用的托管体验和自定义体验。 在 Microsoft Foundry 门户中,它为 Foundry IQ 提供支持,使其作为智能体的托管知识层发挥作用。 还可以使用 Azure 门户、搜索服务 REST API 或受支持的Azure SDK来生成自定义代理检索解决方案。
如果要为代理和应用提供最相关的内容来回答更难的问题、基于聊天上下文、专有内容和外部源,请使用代理检索。
与单一查询管道相比,代理检索会增加延迟,但它处理单个查询无法处理的查询复杂性。 例如,它可以处理:
包含多个要求的问题,例如“帮我找一家靠近海滩、提供机场接送服务,并且步行即可到达素食餐厅的酒店。”
依赖于对话中较早上下文的问题。
受益于重写、使用同义词映射和 LLM 生成的释义以扩大内容覆盖范围的查询。
拼写错误。
体系结构和工作流
代理检索过程如下所示:
工作流启动: 应用程序使用提供查询和聊天历史记录的检索操作调用知识库。
查询规划:在
low和medium检索推理强度下,知识库会将您的查询和对话历史记录发送给 LLM,由其生成聚焦的子查询。 在minimal效果下,此步骤被跳过,查询直接发送到知识源。 推理强度默认值为low,并在知识库中配置。查询执行: 知识库将子查询发送到您的知识源。 所有子查询同时运行,可以是关键字、矢量或混合搜索。 每个子查询都会进行语义重新调整,以查找最相关的匹配项。 为了引用目的提取和保留参考文献。
结果合成: 系统将所有结果合并为统一响应。 始终返回的是合并后的内容。 源引用和执行活动日志是可选的。
Components
对于所有代理式检索场景,都需要一个知识库和至少一个知识源。 其他组件是可选的,取决于你的配置。
| 组件 | 服务 | 作用 |
|---|---|---|
| 知识库 | Azure AI 搜索 | 协调管道,管理知识源和查询参数。 |
| 知识来源 | Azure AI 搜索 | 定义管道中使用的内容。 可被索引(由你服务上的搜索索引支持)或远程(在查询时从外部平台检索内容)。 |
| 搜索索引 | Azure AI 搜索 | 使用语义配置存储可搜索内容(文本和矢量)。 确定运行哪些查询类型以及哪些优化适用。 仅对已编入索引的知识源是必需的。 |
| 语义排序器 | Azure AI 搜索 | 由智能体检索管道内部使用,以根据相关度对结果重新排序(L2 重排序)。 |
| LLM | Azure OpenAI | 可以支持代理检索的多个阶段:规划查询和选择知识源(预览)、汇总 Web 结果,以及通过答案合成生成引文支持的答案(预览)。 |
集成要求
应用程序通过调用知识库并处理响应来驱动管道。 该管道会返回基础依据数据,您可以将其传递给 LLM 以生成答案,也可以直接在对话界面中使用。 有关实现详细信息,请参阅 教程:生成端到端代理检索解决方案。
功能可用性
智能体检索支持正式发布和预览功能。 选择与代理检索体验匹配的搜索服务 REST API 版本:
对于使用正式发布的知识源类型且仅进行最少量提取式检索的生产工作负载,请使用
2026-04-01REST API。使用
2026-08-01-previewREST API 预览知识源类型和功能,例如基于 LLM 的查询规划、答案合成、非最小检索推理工作量和多轮次消息。 请参阅Azure AI 搜索预览条款。
Azure门户和 Microsoft Foundry 门户提供对所有代理检索功能的仅预览访问权限。 在任一门户中创建的对象都可能使用预览架构,在迁移到正式版 REST API 版本时需要迁移。 有关逐版本细分和迁移指南,请参阅 将代理检索代码迁移到最新版本。
区域可用性、限制和计费
在使用代理检索之前,请查看其区域可用性、服务限制和计费模型。
区域可用性
代理检索在 选择区域中可用。
限制
知识源和知识库的最大 限制 因定价层和检索推理工作而异。
账单管理
代理检索会从两项服务中产生费用:
Azure AI 搜索 对子查询执行和语义排名期间消耗的检索令牌进行计费。 免费计划(默认)提供每月令牌津贴。 标准计划在用完免费津贴后启用按需付费定价。 有关详细信息,请参阅 启用或禁用代理检索计费。
Azure OpenAI对基于 LLM 的查询规划和答案合成(预览版)中使用的输入和输出令牌收费。 定价始终是即用即付的,基于分配给知识库的模型。 Azure OpenAI 帐单上会显示费用。 有关费率,请参阅 Azure OpenAI 定价。
下表比较了经典单查询管道与代理检索多查询管道之间的计费。 在经典管道中,计费组件是 语义排名器。
| 方面 | 经典管道 | 代理检索 |
|---|---|---|
| 单位 | 基于查询 | 基于令牌 |
| 单位成本 | 每个查询的统一成本 | 每个令牌的可变成本(取决于推理努力) |
| 成本估算 | 估计查询计数 | 估计令牌使用情况 |
| 免费津贴 | 每月免费查询津贴 | 每月免费令牌限额 |
示例:估算成本
此示例有助于说明查询规划和查询执行的成本估算过程,但不包括答案合成。 成本可能更低。 有关当前费率,请参阅 Azure AI 搜索 定价和 Azure OpenAI 定价。
若要在 Azure OpenAI 中按使用量付费估算查询计划成本,我们假设 gpt-4o-mini:
- 15 美分用于 100 万个输入令牌。
- 100 万个输出令牌的 60 美分。
- 平均聊天对话大小为 2,000 个输入令牌。
- 平均输出计划规模为 350 个 token。
查询执行的估计计费成本
要估计智能体检索令牌计数,首先要了解索引中的平均文档是什么样子的。 例如,你可能进行近似估算:
- 10,000 个区块,其中每个区块是 PDF 的一到两个段落。
- 每个区块 500 个令牌。
- 每个子查询最多重新排序 50 个片段。
- 每个查询计划平均有三个子查询。
计算执行价格
假设我们进行 2,000 次智能体检索,每个计划有三个子查询。 总共有大约 6,000 个查询。
为每个子查询重新排序50个块,总共为300,000个块。
平均区块为 500 个令牌,因此用于重排序的令牌总数为 1.5 亿。
假设每令牌价格为 0.022 美元,3.30 美元是重新计价的总成本。
继续查询计划成本:2,000 个输入令牌乘以 2,000 次代理检索等于 400 万个输入令牌,总成本为 60 美分。
根据平均 350 个令牌估算输出成本。 如果我们将 350 乘以 2,000 个智能体检索,得到的输出令牌总数是 700,000 个,总计 42 美分。
综上所述,你将在 Azure AI 搜索 中为智能体检索支付约 3.30 美元,在 Azure OpenAI 中为输入令牌支付 60 美分,在 Azure Open AI 中为输出令牌支付 42 美分,查询计划总额为 1.02 美元。 完整执行的总成本为 4.32 美元。
控制成本的提示
查看响应中的活动日志,以了解向哪些源发出了哪些查询以及使用了哪些参数。 可以针对索引重新发出这些查询,并使用公共标记器来估算令牌,并将其与 API 报告的使用情况进行比较。 但是,无法保证查询或响应的精确重建。 因素包括知识源的类型,例如公共 Web 数据或基于用户标识的远程SharePoint知识源,可能会影响查询复制。
减少知识源(索引)的数量;整合内容可以降低扇出和令牌量。
在查询规划和查询扩展(迭代搜索)期间,通过降低推理过程的工作量来减少 LLM 的使用。
组织内容,以便可以使用更少的源和文档(例如特选摘要或表格)找到最相关的信息。
如何开始
若要创建代理检索解决方案,可以使用 Azure 门户、Microsoft Foundry(新)门户、REST API 或等效Azure SDK包。
- 快速入门:Azure 门户中的智能体检索
- Quickstart:代理检索(C#、Java、JavaScript、Python、TypeScript、REST)