你当前正在访问 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 搜索预览条款适用于所有预览功能,无论是独立功能还是正式版功能的一部分。
在代理检索中,可以指定用于查询规划和答案表述的大型语言模型(LLM)处理级别。 使用检索推理强度(预览版)来设置会影响成本和延迟的 LLM 处理级别。 额外的 LLM 处理可提高相关性,但还需要更长的时间并使用可计费的 LLM 资源。
可以在知识库或检索请求中设置此属性。 知识库设置为所有查询建立默认值,而检索请求设置会基于查询替代默认值。 如果两个设置都不存在,服务将使用 low。
使用支持
| Azure 门户 | Microsoft Foundry 门户 | .NET SDK | Python SDK | Java SDK | JavaScript SDK | REST API |
|---|---|---|---|---|---|---|
| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
先决条件
具有至少一个知识库和模型配置的现有 知识库 。
更新和查询知识库的权限。 使用分配给用户帐户的搜索服务参与者和搜索索引数据读取者角色(建议)或使用管理员 API 密钥配置无密钥身份验证。
最新的
Azure.Search.Documents预览包:dotnet add package Azure.Search.Documents --prerelease对于无密钥身份验证,请使用
Azure.Identity软件包:dotnet add package Azure.Identity
最新的
azure-search-documents预览包:pip install --pre azure-search-documents对于无密钥身份验证,请使用
azure-identity软件包:pip install azure-identity
搜索服务 REST API 的 2026-08-01-preview 版本。
对于无密钥身份验证,请在每个 HTTP 请求的标头中包含
AuthorizationMicrosoft Entra ID令牌。
选择推理强度
根据所需的延迟、成本和检索深度之间的权衡选择推理工作。
推理努力程度级别
| 级别 | 描述 | 建议 | 限制 |
|---|---|---|---|
minimal |
禁用基于 LLM 的查询计划,以提供代理检索的最低成本和延迟。 它跨知识库中列出的知识源发出直接文本和矢量搜索,并返回最佳匹配段落。 由于知识库中的所有知识源始终进行搜索,并且不会执行任何查询扩展,因此行为是可预测的且易于控制。 这也意味着在检索请求中,alwaysQueryKnowledgeSource 属性将被忽略。 |
在从minimal 迁移或你想自行管理查询规划时使用 。 |
|
low |
代理式检索的默认模式,执行一次基于大语言模型(LLM)的查询规划和知识源选择。 代理检索引擎生成子查询,并将其分散到选定的知识源,然后合并查询结果。 您可以启用答案合成(预览版),以生成带有内联引文的、基于依据的自然语言响应。 | 想要在最小延迟和更深入的处理之间实现平衡时使用 low 。 |
|
medium |
将更深入的搜索和增强的检索堆栈添加到代理检索,以最大程度地提高完整性。 第一次搜索后,高精度语义分类器将评估检索到的文档。 如果初始结果不够相关,该服务将使用修订的查询计划执行一次后续迭代。 | 使用 medium 可最大限度地提升 LLM 辅助知识检索的效用。 |
|
auto |
先从轻量级检索阶段开始。 如果第一次处理提供了足够的依据,服务将返回结果。 否则,它会继续使用基于 LLM 的查询规划,工作量最多达到中等程度。 | 当希望服务平衡每个请求的检索深度和延迟时使用 auto 。 |
|
迭代搜索以检索媒介
如果初始结果不够相关,则中等检索推理工作可提供迭代搜索。 调用额外的 语义分类器模型 以确定是否需要第二次迭代。
语义分类器:
识别何时有足够的上下文来回答问题。
在结果不足时重试,使用现有信息作为上下文。 新查询可能会向下钻取以获取更集中的详细信息,或扩大搜索范围。 响应中的活动日志显示了生成的查询,旨在提供更全面的答案。
使用 L3 分类重新评分。 该范围与 L2 排名相同,绝对范围为零到 4.0。
只有一次重试。 每次迭代都会增加延迟和成本,因此系统会将重试限制为一次传递。 第二次迭代将输入令牌加入到查询管道中,从而增加了整体计费的输入令牌数量。
迭代可以重复使用现有知识源或选择不同的源。 第二轮选择最有可能提供缺失信息的知识来源。
对中级检索的区域支持
如果搜索服务位于以下区域之一,则可以设置中等检索推理工作:
- 美国东部 2
- 美国东部
- 美国中南部
- 美国西部 3
- 美国西部 2
- 美国西部
- 德国中西部
- 北欧
- 瑞士北部
- 瑞典中部
- 西班牙中部
- 英国南部
- 韩国中部
- 日本东部
- 东南亚
在知识库中设置推理强度
在知识库定义中设置 retrievalReasoningEffort ,以为其查询建立默认值。
auto推理工作需要模型配置。 以下示例保留现有 knowledgeSources 和 models 配置,设置推理工作 auto并更新知识库。
using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;
var endpoint = new Uri("<search-endpoint>");
var credential = new DefaultAzureCredential();
var knowledgeBaseName = "<knowledge-base-name>";
var indexClient = new SearchIndexClient(endpoint, credential);
var knowledgeBase = (
await indexClient.GetKnowledgeBaseAsync(knowledgeBaseName)).Value;
knowledgeBase.RetrievalReasoningEffort =
new KnowledgeRetrievalAutoReasoningEffort();
await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);
若要使用另一个级别,请替换为KnowledgeRetrievalAutoReasoningEffortKnowledgeRetrievalMinimalReasoningEffort或 KnowledgeRetrievalMediumReasoningEffortKnowledgeRetrievalLowReasoningEffort。
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.knowledgebases.models import (
KnowledgeRetrievalAutoReasoningEffort,
)
endpoint = "<search-endpoint>"
credential = DefaultAzureCredential()
knowledge_base_name = "<knowledge-base-name>"
index_client = SearchIndexClient(endpoint, credential)
knowledge_base = index_client.get_knowledge_base(knowledge_base_name)
knowledge_base.retrieval_reasoning_effort = (
KnowledgeRetrievalAutoReasoningEffort()
)
index_client.create_or_update_knowledge_base(knowledge_base)
若要使用另一个级别,请替换为KnowledgeRetrievalAutoReasoningEffortKnowledgeRetrievalMinimalReasoningEffort或 KnowledgeRetrievalMediumReasoningEffortKnowledgeRetrievalLowReasoningEffort。
@api-version = 2026-08-01-preview
@knowledge-base-url = {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}
PUT {{knowledge-base-url}}?api-version={{api-version}}
Content-Type: application/json
Authorization: Bearer {{search-access-token}}
{
"name": "{{knowledge-base-name}}",
"knowledgeSources": [
{
"name": "{{knowledge-source-name}}"
}
],
"models": [
{
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "{{aoai-endpoint}}",
"authIdentity": null,
"deploymentId": "{{model-deployment-name}}",
"modelName": "{{model-name}}"
}
}
],
"retrievalReasoningEffort": {
"kind": "auto"
}
}
参考:知识库 - 创建或更新
若要使用另一个级别,请设置为retrievalReasoningEffort.kindminimal或 mediumlow。
在检索请求中设置推理工作
在检索请求中设置 retrievalReasoningEffort 以替代该请求的知识库默认值。 以下示例发送一条消息,使用 low 来覆盖上一节中的 auto 默认值,并启用答案合成(预览)。
using Azure.Identity;
using Azure.Search.Documents.KnowledgeBases;
using Azure.Search.Documents.KnowledgeBases.Models;
var endpoint = new Uri("<search-endpoint>");
var credential = new DefaultAzureCredential();
var knowledgeBaseName = "<knowledge-base-name>";
var kbClient = new KnowledgeBaseRetrievalClient(
endpoint, knowledgeBaseName, credential);
var request = new KnowledgeBaseRetrievalRequest
{
RetrievalReasoningEffort =
new KnowledgeRetrievalLowReasoningEffort(),
OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis
};
request.Messages.Add(
new KnowledgeBaseMessage(
content: new[] {
new KnowledgeBaseMessageTextContent("What is the return policy?")
}
) { Role = "user" }
);
var result = await kbClient.RetrieveAsync(request);
from azure.identity import DefaultAzureCredential
from azure.search.documents.knowledgebases import KnowledgeBaseRetrievalClient
from azure.search.documents.knowledgebases.models import (
KnowledgeBaseMessage,
KnowledgeBaseMessageTextContent,
KnowledgeBaseRetrievalRequest,
KnowledgeRetrievalOutputMode,
KnowledgeRetrievalLowReasoningEffort,
)
endpoint = "<search-endpoint>"
credential = DefaultAzureCredential()
knowledge_base_name = "<knowledge-base-name>"
kb_client = KnowledgeBaseRetrievalClient(
endpoint,
credential,
knowledge_base_name=knowledge_base_name,
)
request = KnowledgeBaseRetrievalRequest(
messages=[
KnowledgeBaseMessage(
role="user",
content=[
KnowledgeBaseMessageTextContent(
text="What is the return policy?"
)
],
)
],
retrieval_reasoning_effort=KnowledgeRetrievalLowReasoningEffort(),
output_mode=KnowledgeRetrievalOutputMode.ANSWER_SYNTHESIS,
)
result = kb_client.retrieve(request)
@api-version = 2026-08-01-preview
@retrieve-url = {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}/retrieve
POST {{retrieve-url}}?api-version={{api-version}}
Content-Type: application/json
Authorization: Bearer {{search-access-token}}
{
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is the return policy?"
}
]
}
],
"retrievalReasoningEffort": {
"kind": "low"
},
"outputMode": "answerSynthesis"
}
参考:知识检索 - 检索
检索请求会根据知识库中配置的知识源返回有依据的答案。