你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
此功能目前处于公开预览状态。 此预览版未随附服务级别协议,建议不要用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
使用 索引 SharePoint 知识源 在代理检索流程中对 SharePoint 内容进行索引和查询。 知识源 是独立创建的,在 知识库中引用,并在代理或聊天机器人在查询时调用 检索作 时用作基础数据。
创建索引的 SharePoint 知识源时,可以指定 SharePoint 连接字符串、模型和属性,以便自动生成以下 Azure AI 搜索对象:
- 指向 SharePoint 网站的数据源。
- 能够将文本、音频、视频等多种模式内容分块并进行选择性向量化的技能集。
- 存储扩充内容并满足代理检索条件的索引。
- 使用先前的对象来驱动索引和扩展管道的索引器。
先决条件
提供代理检索功能的任何区域内的 Azure AI 搜索。 必须启用语义排序器。
完成三个 SharePoint 索引器配置步骤:
适用于 .NET SDK 的
Azure.Search.Documents客户端库 的最新预览版本。在 Azure AI 搜索中创建和使用对象的权限。 我们建议 使用基于角色的访问,但如果角色分配不可行,则可以使用 API 密钥 。 有关详细信息,请参阅 “连接到搜索服务”。
检查现有知识来源
知识来源是顶级可重用对象。 了解现有知识源有助于重复使用或命名新对象。
运行以下代码,按名称和类型列出知识源。
// List knowledge sources by name and type
using Azure.Search.Documents.Indexes;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
var knowledgeSources = indexClient.GetKnowledgeSourcesAsync();
Console.WriteLine("Knowledge Sources:");
await foreach (var ks in knowledgeSources)
{
Console.WriteLine($" Name: {ks.Name}, Type: {ks.GetType().Name}");
}
还可以按名称返回单个知识来源以查看其 JSON 定义。
using Azure.Search.Documents.Indexes;
using System.Text.Json;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
// Specify the knowledge source name to retrieve
string ksNameToGet = "earth-knowledge-source";
// Get its definition
var knowledgeSourceResponse = await indexClient.GetKnowledgeSourceAsync(ksNameToGet);
var ks = knowledgeSourceResponse.Value;
// Serialize to JSON for display
var jsonOptions = new JsonSerializerOptions
{
WriteIndented = true,
DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.Never
};
Console.WriteLine(JsonSerializer.Serialize(ks, ks.GetType(), jsonOptions));
以下 JSON 是索引 SharePoint 知识源的示例响应。
{
"name": "my-indexed-sharepoint-ks",
"kind": "indexedSharePoint",
"description": "A sample indexed SharePoint knowledge source",
"encryptionKey": null,
"indexedSharePointParameters": {
"connectionString": "<redacted>",
"containerName": "defaultSiteLibrary",
"query": null,
"ingestionParameters": {
"disableImageVerbalization": false,
"ingestionPermissionOptions": [],
"contentExtractionMode": "minimal",
"identity": null,
"embeddingModel": {
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "<redacted>",
"deploymentId": "text-embedding-3-large",
"apiKey": "<redacted>",
"modelName": "text-embedding-3-large",
"authIdentity": null
}
},
"chatCompletionModel": null,
"ingestionSchedule": null,
"assetStore": null,
"aiServices": null
},
"createdResources": {
"datasource": "my-indexed-sharepoint-ks-datasource",
"indexer": "my-indexed-sharepoint-ks-indexer",
"skillset": "my-indexed-sharepoint-ks-skillset",
"index": "my-indexed-sharepoint-ks-index"
}
},
"indexedOneLakeParameters": null
}
注释
敏感信息已经过编修。 生成的资源显示在响应的末尾。
创建知识来源
运行以下代码以创建索引的 SharePoint 知识源。
// Create an IndexedSharePoint knowledge source
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;
using Azure;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));
var chatCompletionParams = new AzureOpenAIVectorizerParameters
{
ResourceUri = new Uri(aoaiEndpoint),
DeploymentName = aoaiGptDeployment,
ModelName = aoaiGptModel
};
var embeddingParams = new AzureOpenAIVectorizerParameters
{
ResourceUri = new Uri(aoaiEndpoint),
DeploymentName = aoaiEmbeddingDeployment,
ModelName = aoaiEmbeddingModel
};
var ingestionParams = new KnowledgeSourceIngestionParameters
{
DisableImageVerbalization = false,
ChatCompletionModel = new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: chatCompletionParams),
EmbeddingModel = new KnowledgeSourceAzureOpenAIVectorizer
{
AzureOpenAIParameters = embeddingParams
}
};
var sharePointParams = new IndexedSharePointKnowledgeSourceParameters(
connectionString: sharePointConnectionString,
containerName: "defaultSiteLibrary")
{
IngestionParameters = ingestionParams
};
var knowledgeSource = new IndexedSharePointKnowledgeSource(
name: "my-indexed-sharepoint-ks",
indexedSharePointParameters: sharePointParams)
{
Description = "A sample indexed SharePoint knowledge source."
};
await indexClient.CreateOrUpdateKnowledgeSourceAsync(knowledgeSource);
Console.WriteLine($"Knowledge source '{knowledgeSource.Name}' created or updated successfully.");
特定于来源的属性
可以传递以下属性来创建索引的 SharePoint 知识源。
| Name | Description | 类型 | 可编辑 | 必选 |
|---|---|---|---|---|
Name |
知识来源的名称,该名称在知识来源集合中必须是唯一的,并遵循 Azure AI 搜索中对象的命名准则。 | String | 否 | 是的 |
Description |
知识来源的说明。 | String | 是的 | 否 |
EncryptionKey |
客户管理的密钥,用于加密知识来源和生成的对象中的敏感信息。 | 物体 | 是的 | 否 |
IndexedSharePointKnowledgeSourceParameters |
特定于索引 SharePoint 知识源的参数: connectionString、 containerName和 query。 |
物体 | 否 | 否 |
connectionString |
SharePoint 网站的连接字符串。 有关详细信息,请参阅 连接字符串语法。 | String | 是的 | 是的 |
containerName |
要访问的 SharePoint 库。 用于 defaultSiteLibrary 为网站默认文档库中的内容编制索引,或 allSiteLibraries 为网站中每个文档库中的内容编制索引。 暂时忽略 useQuery 。 |
String | 否 | 是的 |
query |
暂时忽略。 | String | 是的 | 否 |
ingestion_parameters 属性
仅针对索引的知识来源,可以传递以下 ingestionParameters 属性来控制内容引入和处理方式。
| Name | Description | 类型 | 可编辑 | 必选 |
|---|---|---|---|---|
Identity |
在生成的索引器中使用的托管标识。 | 物体 | 是的 | 否 |
DisableImageVerbalization |
启用或禁用图像语言化。 默认值为 False,它会启用图像语言化。 设置为 True 以禁用图像语言化。 |
布尔 | 否 | 否 |
ChatCompletionModel |
一个聊天补全模型,用于语言化图像或提取内容。 支持的模型包括 gpt-4o、gpt-4o-mini、gpt-4.1、gpt-4.1-mini、gpt-4.1-nano、gpt-5、gpt-5-mini、gpt-5-nano。
GenAI 提示技能将包含在生成的技能集中。 设置此参数还需要 disable_image_verbalization 设置为 False。 |
物体 | 仅 api_key 和 deployment_name 可编辑 |
否 |
EmbeddingModel |
一个文本嵌入模型,用于在索引编制和查询时矢量化文本和图像内容。 支持的模型包括 text-embedding-ada-002、text-embedding-3-small、text-embedding-3-large。
Azure OpenAI 嵌入技能将包含在生成的技能集中,Azure OpenAI 矢量器将包含在生成的索引中。 |
物体 | 仅 api_key 和 deployment_name 可编辑 |
否 |
ContentExtractionMode |
控制如何从文件中提取内容。 默认值为 minimal,它会对文本和图像使用标准内容提取。 设置为 standard 以使用 Azure 内容理解技能进行高级文档破解和分块,它将包含在生成的技能集中。 仅针对 standard,可指定 AiServices 和 AssetStore 参数。 |
String | 否 | 否 |
AiServices |
Microsoft Foundry 资源,用于访问 Foundry Tools 中的 Azure 内容理解。 设置此参数需要 ContentExtractionMode 设置为 standard。 |
物体 | 仅 api_key 可编辑 |
是的 |
IngestionSchedule |
将计划信息添加到生成的索引器。 还可以稍后 添加计划 以自动执行数据刷新。 | 物体 | 是的 | 否 |
IngestionPermissionOptions |
从所选知识来源引入的文档级权限:ADLS Gen2 或索引的 SharePoint。 如果指定 user_ids、group_ids 或 rbac_scope,则生成的 ADLS Gen2 索引器或 SharePoint 索引器将包含引入的权限。 |
Array | 否 | 否 |
检查引入状态
运行以下代码来监视引入进度和运行状况,包括生成索引器管道并填充搜索索引的知识源的 索引器状态 。
// Get knowledge source ingestion status
using Azure.Search.Documents.Indexes;
using System.Text.Json;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));
// Get the knowledge source status
var statusResponse = await indexClient.GetKnowledgeSourceStatusAsync(knowledgeSourceName);
var status = statusResponse.Value;
// Serialize to JSON for display
var json = JsonSerializer.Serialize(status, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(json);
包含引入参数且正在主动引入内容的请求的响应可能如以下示例所示。
{
"synchronizationStatus": "active", // creating, active, deleting
"synchronizationInterval" : "1d", // null if no schedule
"currentSynchronizationState" : { // spans multiple indexer "runs"
"startTime": "2025-10-27T19:30:00Z",
"itemUpdatesProcessed": 1100,
"itemsUpdatesFailed": 100,
"itemsSkipped": 1100,
},
"lastSynchronizationState" : { // null on first sync
"startTime": "2025-10-27T19:30:00Z",
"endTime": "2025-10-27T19:40:01Z", // this value appears on the activity record on each /retrieve
"itemUpdatesProcessed": 1100,
"itemsUpdatesFailed": 100,
"itemsSkipped": 1100,
},
"statistics": { // null on first sync
"totalSynchronization": 25,
"averageSynchronizationDuration": "00:15:20",
"averageItemsProcessedPerSynchronization" : 500
}
}
查看创建的对象
创建索引的 SharePoint 知识源时,搜索服务还会创建索引器、索引、技能集和数据源。 不建议编辑这些对象,因为引入错误或不兼容可能会中断管道。
创建知识源后,响应会列出已创建的对象。 这些对象是根据固定模板创建的,其名称基于知识源的名称。 无法更改对象名称。
建议使用 Azure 门户验证输出创建。 工作流为:
- 检查索引器是否有成功或失败的消息。 此处会显示连接或配额错误。
- 检查可搜索内容的索引。 使用搜索资源管理器运行查询。
- 检查技能集,了解如何对内容进行分块和选择性地矢量化。
- 检查数据源以获取连接详细信息。 为简单起见,我们的示例使用 API 密钥,但可以使用 Microsoft Entra ID 进行身份验证,并使用基于角色的访问控制进行授权。
分配给知识库
如果对知识源感到满意,请继续执行下一步:在 知识库中指定知识库中的知识源。
对于任何指定为索引 SharePoint 知识来源的知识库,请确保将 includeReferenceSourceData 设置为 true。 此步骤是将源文档 URL 拉取到引文中所必需的。
配置知识库后,使用检索操作查询知识来源。
删除知识来源
在删除知识库之前,必须删除引用它的任何知识库或更新知识库定义以删除引用。 对于生成索引和索引器管道的数据源,也会删除所有生成的对象。 但是,如果使用现有索引创建知识源,则不会删除索引。
如果尝试删除正在使用的知识源,该作将失败并返回受影响的知识库列表。
要删除知识来源:
获取搜索服务上所有知识库的列表。
using Azure.Search.Documents.Indexes; var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential); var knowledgeBases = indexClient.GetKnowledgeBasesAsync(); Console.WriteLine("Knowledge Bases:"); await foreach (var kb in knowledgeBases) { Console.WriteLine($" - {kb.Name}"); }示例响应可能如下所示:
Knowledge Bases: - earth-knowledge-base - hotels-sample-knowledge-base - my-demo-knowledge-base获取单个知识库定义以检查知识源引用。
using Azure.Search.Documents.Indexes; using System.Text.Json; var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential); // Specify the knowledge base name to retrieve string kbNameToGet = "earth-knowledge-base"; // Get a specific knowledge base definition var knowledgeBaseResponse = await indexClient.GetKnowledgeBaseAsync(kbNameToGet); var kb = knowledgeBaseResponse.Value; // Serialize to JSON for display string json = JsonSerializer.Serialize(kb, new JsonSerializerOptions { WriteIndented = true }); Console.WriteLine(json);示例响应可能如下所示:
{ "Name": "earth-knowledge-base", "KnowledgeSources": [ { "Name": "earth-knowledge-source" } ], "Models": [ {} ], "RetrievalReasoningEffort": {}, "OutputMode": {}, "ETag": "\u00220x8DE278629D782B3\u0022", "EncryptionKey": null, "Description": null, "RetrievalInstructions": null, "AnswerInstructions": null }删除知识库或 更新知识库 以删除知识库(如果有多个源)。 此示例显示删除。
using Azure.Search.Documents.Indexes; var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential); await indexClient.DeleteKnowledgeBaseAsync(knowledgeBaseName); System.Console.WriteLine($"Knowledge base '{knowledgeBaseName}' deleted successfully.");删除知识来源。
await indexClient.DeleteKnowledgeSourceAsync(knowledgeSourceName); System.Console.WriteLine($"Knowledge source '{knowledgeSourceName}' deleted successfully.");
注释
此功能目前处于公开预览状态。 此预览版未随附服务级别协议,建议不要用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
使用 索引 SharePoint 知识源 在代理检索流程中对 SharePoint 内容进行索引和查询。 知识源 是独立创建的,在 知识库中引用,并在代理或聊天机器人在查询时调用 检索作 时用作基础数据。
创建索引的 SharePoint 知识源时,可以指定 SharePoint 连接字符串、模型和属性,以便自动生成以下 Azure AI 搜索对象:
- 指向 SharePoint 网站的数据源。
- 能够将文本、音频、视频等多种模式内容分块并进行选择性向量化的技能集。
- 存储扩充内容并满足代理检索条件的索引。
- 使用先前的对象来驱动索引和扩展管道的索引器。
先决条件
提供代理检索功能的任何区域内的 Azure AI 搜索。 必须启用语义排序器。
完成三个 SharePoint 索引器配置步骤:
适用于 Python 的
azure-search-documents客户端库 的最新预览版。在 Azure AI 搜索中创建和使用对象的权限。 我们建议 使用基于角色的访问,但如果角色分配不可行,则可以使用 API 密钥 。 有关详细信息,请参阅 “连接到搜索服务”。
检查现有知识来源
知识来源是顶级可重用对象。 了解现有知识源有助于重复使用或命名新对象。
运行以下代码,按名称和类型列出知识源。
# List knowledge sources by name and type
import requests
import json
endpoint = "{search_url}/knowledgesources"
params = {"api-version": "2025-11-01-preview", "$select": "name, kind"}
headers = {"api-key": "{api_key}"}
response = requests.get(endpoint, params = params, headers = headers)
print(json.dumps(response.json(), indent = 2))
还可以按名称返回单个知识来源以查看其 JSON 定义。
# Get a knowledge source definition
import requests
import json
endpoint = "{search_url}/knowledgesources/{knowledge_source_name}"
params = {"api-version": "2025-11-01-preview"}
headers = {"api-key": "{api_key}"}
response = requests.get(endpoint, params = params, headers = headers)
print(json.dumps(response.json(), indent = 2))
以下 JSON 是索引 SharePoint 知识源的示例响应。
{
"name": "my-indexed-sharepoint-ks",
"kind": "indexedSharePoint",
"description": "A sample indexed SharePoint knowledge source",
"encryptionKey": null,
"indexedSharePointParameters": {
"connectionString": "<redacted>",
"containerName": "defaultSiteLibrary",
"query": null,
"ingestionParameters": {
"disableImageVerbalization": false,
"ingestionPermissionOptions": [],
"contentExtractionMode": "minimal",
"identity": null,
"embeddingModel": {
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "<redacted>",
"deploymentId": "text-embedding-3-large",
"apiKey": "<redacted>",
"modelName": "text-embedding-3-large",
"authIdentity": null
}
},
"chatCompletionModel": null,
"ingestionSchedule": null,
"assetStore": null,
"aiServices": null
},
"createdResources": {
"datasource": "my-indexed-sharepoint-ks-datasource",
"indexer": "my-indexed-sharepoint-ks-indexer",
"skillset": "my-indexed-sharepoint-ks-skillset",
"index": "my-indexed-sharepoint-ks-index"
}
},
"indexedOneLakeParameters": null
}
注释
敏感信息已经过编修。 生成的资源显示在响应的末尾。
创建知识来源
运行以下代码以创建索引的 SharePoint 知识源。
# Create an indexed SharePoint knowledge source
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import IndexedSharePointKnowledgeSource, IndexedSharePointKnowledgeSourceParameters, KnowledgeBaseAzureOpenAIModel, AzureOpenAIVectorizerParameters, KnowledgeSourceAzureOpenAIVectorizer, KnowledgeSourceContentExtractionMode, KnowledgeSourceIngestionParameters
index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
knowledge_source = IndexedSharePointKnowledgeSource(
name = "my-indexed-sharepoint-ks",
description = "A sample indexed SharePoint knowledge source.",
encryption_key = None,
indexed_share_point_parameters = IndexedSharePointKnowledgeSourceParameters(
connection_string = "connection_string",
container_name = "defaultSiteLibrary",
query = None,
ingestion_parameters = KnowledgeSourceIngestionParameters(
identity = None,
disable_image_verbalization = False,
chat_completion_model = KnowledgeBaseAzureOpenAIModel(
azure_open_ai_parameters = AzureOpenAIVectorizerParameters(
# TRIMMED FOR BREVITY
)
),
embedding_model = KnowledgeSourceAzureOpenAIVectorizer(
azure_open_ai_parameters=AzureOpenAIVectorizerParameters(
# TRIMMED FOR BREVITY
)
),
content_extraction_mode = KnowledgeSourceContentExtractionMode.MINIMAL,
ingestion_schedule = None,
ingestion_permission_options = None
)
)
)
index_client.create_or_update_knowledge_source(knowledge_source)
print(f"Knowledge source '{knowledge_source.name}' created or updated successfully.")
特定于来源的属性
可以传递以下属性来创建索引的 SharePoint 知识源。
| Name | Description | 类型 | 可编辑 | 必选 |
|---|---|---|---|---|
name |
知识来源的名称,该名称在知识来源集合中必须是唯一的,并遵循 Azure AI 搜索中对象的命名准则。 | String | 否 | 是的 |
description |
知识来源的说明。 | String | 是的 | 否 |
encryption_key |
客户管理的密钥,用于加密知识来源和生成的对象中的敏感信息。 | 物体 | 是的 | 否 |
indexed_share_point_parameters |
特定于索引 SharePoint 知识源的参数: connection_string、 container_name和 query。 |
物体 | 否 | 否 |
connection_string |
SharePoint 网站的连接字符串。 有关详细信息,请参阅 连接字符串语法。 | String | 是的 | 是的 |
container_name |
要访问的 SharePoint 库。 用于 defaultSiteLibrary 为网站默认文档库中的内容编制索引,或 allSiteLibraries 为网站中每个文档库中的内容编制索引。 暂时忽略 useQuery 。 |
String | 否 | 是的 |
query |
暂时忽略。 | String | 是的 | 否 |
ingestion_parameters 属性
仅针对索引的知识来源,可以传递以下 ingestionParameters 属性来控制内容引入和处理方式。
| Name | Description | 类型 | 可编辑 | 必选 |
|---|---|---|---|---|
identity |
在生成的索引器中使用的托管标识。 | 物体 | 是的 | 否 |
disable_image_verbalization |
启用或禁用图像语言化。 默认值为 False,它会启用图像语言化。 设置为 True 以禁用图像语言化。 |
布尔 | 否 | 否 |
chat_completion_model |
一个聊天补全模型,用于语言化图像或提取内容。 支持的模型包括 gpt-4o、gpt-4o-mini、gpt-4.1、gpt-4.1-mini、gpt-4.1-nano、gpt-5、gpt-5-mini、gpt-5-nano。
GenAI 提示技能将包含在生成的技能集中。 设置此参数还需要 disable_image_verbalization 设置为 False。 |
物体 | 仅 api_key 和 deployment_name 可编辑 |
否 |
embedding_model |
一个文本嵌入模型,用于在索引编制和查询时矢量化文本和图像内容。 支持的模型包括 text-embedding-ada-002、text-embedding-3-small、text-embedding-3-large。
Azure OpenAI 嵌入技能将包含在生成的技能集中,Azure OpenAI 矢量器将包含在生成的索引中。 |
物体 | 仅 api_key 和 deployment_name 可编辑 |
否 |
content_extraction_mode |
控制如何从文件中提取内容。 默认值为 minimal,它会对文本和图像使用标准内容提取。 设置为 standard 以使用 Azure 内容理解技能进行高级文档破解和分块,它将包含在生成的技能集中。 仅针对 standard,可指定 ai_services 和 asset_store 参数。 |
String | 否 | 否 |
ai_services |
Microsoft Foundry 资源,用于访问 Foundry Tools 中的 Azure 内容理解。 设置此参数需要 content_extraction_mode 设置为 standard。 |
物体 | 仅 api_key 可编辑 |
是的 |
asset_store |
用于存储提取的映像的 Blob 容器。 设置此参数需要 content_extraction_mode 设置为 standard。 |
物体 | 否 | 否 |
ingestion_schedule |
将计划信息添加到生成的索引器。 还可以稍后 添加计划 以自动执行数据刷新。 | 物体 | 是的 | 否 |
ingestion_permission_options |
从所选知识来源引入的文档级权限:ADLS Gen2 或索引的 SharePoint。 如果指定 user_ids、group_ids 或 rbac_scope,则生成的 ADLS Gen2 索引器或 SharePoint 索引器将包含引入的权限。 |
Array | 否 | 否 |
检查引入状态
运行以下代码来监视引入进度和运行状况,包括生成索引器管道并填充搜索索引的知识源的索引器状态。
# Check knowledge source ingestion status
import requests
import json
endpoint = "{search_url}/knowledgesources/{knowledge_source_name}/status"
params = {"api-version": "2025-11-01-preview"}
headers = {"api-key": "{api_key}"}
response = requests.get(endpoint, params = params, headers = headers)
print(json.dumps(response.json(), indent = 2))
包含引入参数且正在主动引入内容的请求的响应可能如以下示例所示。
{
"synchronizationStatus": "active", // creating, active, deleting
"synchronizationInterval" : "1d", // null if no schedule
"currentSynchronizationState" : { // spans multiple indexer "runs"
"startTime": "2025-10-27T19:30:00Z",
"itemUpdatesProcessed": 1100,
"itemsUpdatesFailed": 100,
"itemsSkipped": 1100,
},
"lastSynchronizationState" : { // null on first sync
"startTime": "2025-10-27T19:30:00Z",
"endTime": "2025-10-27T19:40:01Z", // this value appears on the activity record on each /retrieve
"itemUpdatesProcessed": 1100,
"itemsUpdatesFailed": 100,
"itemsSkipped": 1100,
},
"statistics": { // null on first sync
"totalSynchronization": 25,
"averageSynchronizationDuration": "00:15:20",
"averageItemsProcessedPerSynchronization" : 500
}
}
查看创建的对象
创建索引的 SharePoint 知识源时,搜索服务还会创建索引器、索引、技能集和数据源。 不建议编辑这些对象,因为引入错误或不兼容可能会中断管道。
创建知识源后,响应会列出已创建的对象。 这些对象是根据固定模板创建的,其名称基于知识源的名称。 无法更改对象名称。
建议使用 Azure 门户验证输出创建。 工作流为:
- 检查索引器是否有成功或失败的消息。 此处会显示连接或配额错误。
- 检查可搜索内容的索引。 使用搜索资源管理器运行查询。
- 检查技能集,了解如何对内容进行分块和选择性地矢量化。
- 检查数据源以获取连接详细信息。 为简单起见,我们的示例使用 API 密钥,但可以使用 Microsoft Entra ID 进行身份验证,并使用基于角色的访问控制进行授权。
分配给知识库
如果对知识源感到满意,请继续执行下一步:在 知识库中指定知识库中的知识源。
对于任何指定为索引 SharePoint 知识来源的知识库,请确保将 includeReferenceSourceData 设置为 true。 此步骤是将源文档 URL 拉取到引文中所必需的。
配置知识库后,使用检索操作查询知识来源。
删除知识来源
在删除知识库之前,必须删除引用它的任何知识库或更新知识库定义以删除引用。 对于生成索引和索引器管道的数据源,也会删除所有生成的对象。 但是,如果使用现有索引创建知识源,则不会删除索引。
如果尝试删除正在使用的知识源,该作将失败并返回受影响的知识库列表。
要删除知识来源:
获取搜索服务上所有知识库的列表。
# Get knowledge bases import requests import json endpoint = "{search_url}/knowledgebases" params = {"api-version": "2025-11-01-preview", "$select": "name"} headers = {"api-key": "{api_key}"} response = requests.get(endpoint, params = params, headers = headers) print(json.dumps(response.json(), indent = 2))示例响应可能如下所示:
{ "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)", "value": [ { "name": "my-kb" }, { "name": "my-kb-2" } ] }获取单个知识库定义以检查知识源引用。
# Get a knowledge base definition import requests import json endpoint = "{search_url}/knowledgebases/{knowledge_base_name}" params = {"api-version": "2025-11-01-preview"} headers = {"api-key": "{api_key}"} response = requests.get(endpoint, params = params, headers = headers) print(json.dumps(response.json(), indent = 2))示例响应可能如下所示:
{ "name": "my-kb", "description": null, "retrievalInstructions": null, "answerInstructions": null, "outputMode": null, "knowledgeSources": [ { "name": "my-blob-ks", } ], "models": [], "encryptionKey": null, "retrievalReasoningEffort": { "kind": "low" } }删除知识库或 更新知识库 以删除知识库(如果有多个源)。 此示例显示删除。
# Delete a knowledge base from azure.core.credentials import AzureKeyCredential from azure.search.documents.indexes import SearchIndexClient index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key")) index_client.delete_knowledge_base("knowledge_base_name") print(f"Knowledge base deleted successfully.")删除知识来源。
# Delete a knowledge source from azure.core.credentials import AzureKeyCredential from azure.search.documents.indexes import SearchIndexClient index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key")) index_client.delete_knowledge_source("knowledge_source_name") print(f"Knowledge source deleted successfully.")
注释
此功能目前处于公开预览状态。 此预览版未随附服务级别协议,建议不要用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
使用 索引 SharePoint 知识源 在代理检索流程中对 SharePoint 内容进行索引和查询。 知识源 是独立创建的,在 知识库中引用,并在代理或聊天机器人在查询时调用 检索作 时用作基础数据。
创建索引的 SharePoint 知识源时,可以指定 SharePoint 连接字符串、模型和属性,以便自动生成以下 Azure AI 搜索对象:
- 指向 SharePoint 网站的数据源。
- 能够将文本、音频、视频等多种模式内容分块并进行选择性向量化的技能集。
- 存储扩充内容并满足代理检索条件的索引。
- 使用先前的对象来驱动索引和扩展管道的索引器。
先决条件
提供代理检索功能的任何区域内的 Azure AI 搜索。 必须启用语义排序器。
完成三个 SharePoint 索引器配置步骤:
搜索服务 REST API 的 2025-11-01 预览版。
在 Azure AI 搜索中创建和使用对象的权限。 我们建议 使用基于角色的访问,但如果角色分配不可行,则可以使用 API 密钥 。 有关详细信息,请参阅 “连接到搜索服务”。
检查现有知识来源
知识来源是顶级可重用对象。 了解现有知识源有助于重复使用或命名新对象。
使用 知识源 - 获取(REST API) 按名称和类型列出知识源。
### List knowledge sources by name and type
GET {{search-url}}/knowledgesources?api-version=2025-11-01-preview&$select=name,kind
api-key: {{api-key}}
还可以按名称返回单个知识来源以查看其 JSON 定义。
### Get a knowledge source definition
GET {{search-url}}/knowledgesources/{{knowledge-source-name}}?api-version=2025-11-01-preview
api-key: {{api-key}}
以下 JSON 是索引 SharePoint 知识源的示例响应。
{
"name": "my-indexed-sharepoint-ks",
"kind": "indexedSharePoint",
"description": "A sample indexed SharePoint knowledge source",
"encryptionKey": null,
"indexedSharePointParameters": {
"connectionString": "<redacted>",
"containerName": "defaultSiteLibrary",
"query": null,
"ingestionParameters": {
"disableImageVerbalization": false,
"ingestionPermissionOptions": [],
"contentExtractionMode": "minimal",
"identity": null,
"embeddingModel": {
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "<redacted>",
"deploymentId": "text-embedding-3-large",
"apiKey": "<redacted>",
"modelName": "text-embedding-3-large",
"authIdentity": null
}
},
"chatCompletionModel": null,
"ingestionSchedule": null,
"assetStore": null,
"aiServices": null
},
"createdResources": {
"datasource": "my-indexed-sharepoint-ks-datasource",
"indexer": "my-indexed-sharepoint-ks-indexer",
"skillset": "my-indexed-sharepoint-ks-skillset",
"index": "my-indexed-sharepoint-ks-index"
}
},
"indexedOneLakeParameters": null
}
注释
敏感信息已经过编修。 生成的资源显示在响应的末尾。
创建知识来源
使用 知识源 - 创建或更新(REST API) 创建索引的 SharePoint 知识源。
POST {{search-url}}/knowledgesources/my-indexed-sharepoint-ks?api-version=2025-11-01-preview
api-key: {{api-key}}
Content-Type: application/json
{
"name": "my-indexed-sharepoint-ks",
"kind": "indexedSharePoint",
"description": "A sample indexed SharePoint knowledge source.",
"encryptionKey": null,
"indexedSharePointParameters": {
"connectionString": "{{sharepoint-connection-string}}",
"containerName": "defaultSiteLibrary",
"query": null,
"ingestionParameters": {
"identity": null,
"embeddingModel": {
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"deploymentId": "text-embedding-3-large",
"modelName": "text-embedding-3-large",
"resourceUri": "{{aoai-endpoint}}",
"apiKey": "{{aoai-key}}"
}
},
"chatCompletionModel": null,
"disableImageVerbalization": false,
"ingestionSchedule": null,
"ingestionPermissionOptions": [],
"contentExtractionMode": "minimal"
}
}
}
特定于来源的属性
可以传递以下属性来创建索引的 SharePoint 知识源。
| Name | Description | 类型 | 可编辑 | 必选 |
|---|---|---|---|---|
name |
知识来源的名称,该名称在知识来源集合中必须是唯一的,并遵循 Azure AI 搜索中对象的命名准则。 | String | 否 | 是的 |
kind |
知识来源的类型,在本例中为 indexedSharePoint。 |
String | 否 | 是的 |
description |
知识来源的说明。 | String | 是的 | 否 |
encryptionKey |
客户管理的密钥,用于加密知识来源和生成的对象中的敏感信息。 | 物体 | 是的 | 否 |
indexedSharePointParameters |
特定于索引 SharePoint 知识源的参数: connectionString、 containerName和 query。 |
物体 | 否 | 是的 |
connectionString |
SharePoint 网站的连接字符串。 有关详细信息,请参阅 连接字符串语法。 | String | 是的 | 否 |
container_name |
要访问的 SharePoint 库。 用于 defaultSiteLibrary 为网站默认文档库中的内容编制索引,或 allSiteLibraries 为网站中每个文档库中的内容编制索引。 暂时忽略 useQuery 。 |
String | 否 | 是的 |
query |
暂时忽略。 | String | 是的 | 否 |
ingestionParameters 属性
仅针对索引的知识来源,可以传递以下 ingestionParameters 属性来控制内容引入和处理方式。
| Name | Description | 类型 | 可编辑 | 必选 |
|---|---|---|---|---|
identity |
在生成的索引器中使用的托管标识。 | 物体 | 是的 | 否 |
disableImageVerbalization |
启用或禁用图像语言化。 默认值为 false,它会启用图像语言化。 设置为 true 以禁用图像语言化。 |
布尔 | 否 | 否 |
chatCompletionModel |
一个聊天补全模型,用于语言化图像或提取内容。 支持的模型包括 gpt-4o、gpt-4o-mini、gpt-4.1、gpt-4.1-mini、gpt-4.1-nano、gpt-5、gpt-5-mini、gpt-5-nano。
GenAI 提示技能将包含在生成的技能集中。 设置此参数还需要 disableImageVerbalization 设置为 false。 |
物体 | 仅 apiKey 和 deploymentId 可编辑 |
否 |
embeddingModel |
一个文本嵌入模型,用于在索引编制和查询时矢量化文本和图像内容。 支持的模型包括 text-embedding-ada-002、text-embedding-3-small、text-embedding-3-large。
Azure OpenAI 嵌入技能将包含在生成的技能集中,Azure OpenAI 矢量器将包含在生成的索引中。 |
物体 | 仅 apiKey 和 deploymentId 可编辑 |
否 |
contentExtractionMode |
控制如何从文件中提取内容。 默认值为 minimal,它会对文本和图像使用标准内容提取。 设置为 standard 以使用 Azure 内容理解技能进行高级文档破解和分块,它将包含在生成的技能集中。 仅针对 standard,可指定 aiServices 和 assetStore 参数。 |
String | 否 | 否 |
aiServices |
Microsoft Foundry 资源,用于访问 Foundry Tools 中的 Azure 内容理解。 设置此参数需要 contentExtractionMode 设置为 standard。 |
物体 | 仅 apiKey 可编辑 |
是的 |
assetStore |
用于存储提取的映像的 Blob 容器。 设置此参数需要 contentExtractionMode 设置为 standard。 |
物体 | 否 | 否 |
ingestionSchedule |
将计划信息添加到生成的索引器。 还可以稍后 添加计划 以自动执行数据刷新。 | 物体 | 是的 | 否 |
ingestionPermissionOptions |
从所选知识来源引入的文档级权限:ADLS Gen2 或索引的 SharePoint。 如果指定 userIds、groupIds 或 rbacScope,则生成的 ADLS Gen2 索引器或 SharePoint 索引器将包含引入的权限。 |
Array | 否 | 否 |
检查引入状态
使用知识来源 - 状态 (REST API) 监视引入进度和运行状况,包括生成索引器管道并填充搜索索引的知识来源的索引器状态。
### Check knowledge source ingestion status
GET {{search-url}}/knowledgesources/{{knowledge-source-name}}/status?api-version=2025-11-01-preview
api-key: {{api-key}}
Content-Type: application/json
包含引入参数且正在主动引入内容的请求的响应可能如以下示例所示。
{
"synchronizationStatus": "active", // creating, active, deleting
"synchronizationInterval" : "1d", // null if no schedule
"currentSynchronizationState" : { // spans multiple indexer "runs"
"startTime": "2025-10-27T19:30:00Z",
"itemUpdatesProcessed": 1100,
"itemsUpdatesFailed": 100,
"itemsSkipped": 1100,
},
"lastSynchronizationState" : { // null on first sync
"startTime": "2025-10-27T19:30:00Z",
"endTime": "2025-10-27T19:40:01Z", // this value appears on the activity record on each /retrieve
"itemUpdatesProcessed": 1100,
"itemsUpdatesFailed": 100,
"itemsSkipped": 1100,
},
"statistics": { // null on first sync
"totalSynchronization": 25,
"averageSynchronizationDuration": "00:15:20",
"averageItemsProcessedPerSynchronization" : 500
}
}
查看创建的对象
创建索引的 SharePoint 知识源时,搜索服务还会创建索引器、索引、技能集和数据源。 不建议编辑这些对象,因为引入错误或不兼容可能会中断管道。
创建知识源后,响应会列出已创建的对象。 这些对象是根据固定模板创建的,其名称基于知识源的名称。 无法更改对象名称。
建议使用 Azure 门户验证输出创建。 工作流为:
- 检查索引器是否有成功或失败的消息。 此处会显示连接或配额错误。
- 检查可搜索内容的索引。 使用搜索资源管理器运行查询。
- 检查技能集,了解如何对内容进行分块和选择性地矢量化。
- 检查数据源以获取连接详细信息。 为简单起见,我们的示例使用 API 密钥,但可以使用 Microsoft Entra ID 进行身份验证,并使用基于角色的访问控制进行授权。
分配给知识库
如果对知识源感到满意,请继续执行下一步:在 知识库中指定知识库中的知识源。
对于任何指定为索引 SharePoint 知识来源的知识库,请确保将 includeReferenceSourceData 设置为 true。 此步骤是将源文档 URL 拉取到引文中所必需的。
配置知识库后,使用检索操作查询知识来源。
删除知识来源
在删除知识库之前,必须删除引用它的任何知识库或更新知识库定义以删除引用。 对于生成索引和索引器管道的数据源,也会删除所有生成的对象。 但是,如果使用现有索引创建知识源,则不会删除索引。
如果尝试删除正在使用的知识源,该作将失败并返回受影响的知识库列表。
要删除知识来源:
获取搜索服务上所有知识库的列表。
### Get knowledge bases GET {{search-endpoint}}/knowledgebases?api-version=2025-11-01-preview&$select=name api-key: {{api-key}}示例响应可能如下所示:
{ "@odata.context": "https://my-search-service.search.windows.net/$metadata#knowledgebases(name)", "value": [ { "name": "my-kb" }, { "name": "my-kb-2" } ] }获取单个知识库定义以检查知识源引用。
### Get a knowledge base definition GET {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview api-key: {{api-key}}示例响应可能如下所示:
{ "name": "my-kb", "description": null, "retrievalInstructions": null, "answerInstructions": null, "outputMode": null, "knowledgeSources": [ { "name": "my-blob-ks", } ], "models": [], "encryptionKey": null, "retrievalReasoningEffort": { "kind": "low" } }如果有多个源,请删除知识库,或通过移除知识来源来更新知识库。 此示例显示删除。
### Delete a knowledge base DELETE {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview api-key: {{api-key}}删除知识来源。
### Delete a knowledge source DELETE {{search-endpoint}}/knowledgesources/{{knowledge-source-name}}?api-version=2025-11-01-preview api-key: {{api-key}}