你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
此功能目前处于公开预览状态。 此预览版未随附服务级别协议,建议不要用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
使用 Blob 知识来源在代理检索管道中为 Azure Blob 内容编制索引并对其进行查询。 知识源 是独立创建的,在 知识代理中引用,并在代理或聊天机器人在查询时调用 检索 作时用作基础数据。
与指定现有合格索引的搜索索引知识源不同,Blob 知识源指定外部数据源、模型和属性,以自动生成以下 Azure AI 搜索对象:
- 表示 Blob 容器的数据源。
- 一个技能包,用于对来自容器内的多模态内容进行分块处理和可选矢量化。
- 存储扩充内容并满足代理检索条件的索引。
- 使用先前的对象来驱动索引和扩展管道的索引器。
知识来源是 2025-08-01-preview 版本中的新增功能。
先决条件
带 blob 容器的 Azure 存储,容器中包含支持的文本内容类型。 对于可选的图像语言化,支持的内容类型取决于聊天完成模型是否可以分析和描述图像文件。
Azure AI 搜索,位于基本层或更高层级,且已启用语义排序器。
若要尝试本文中的示例,建议将 Visual Studio Code 与 REST 客户端扩展 配合使用,以便向 Azure AI 搜索发送预览版 REST API 调用。 目前没有门户支持。
检查现有知识来源
知识来源是顶级可重用对象。 所有知识来源在知识来源集合中必须具有唯一命名。 了解现有知识源有助于重复使用或命名新对象。
使用 知识源 - 获取(REST API) 按名称和类型列出知识源。
### List knowledge sources by name and type
GET {{search-url}}/knowledgeSources?api-version=2025-08-01-preview&$select=name,kind
api-key: {{api-key}}
Content-Type: application/json
还可以按名称返回单个知识来源以查看其 JSON 定义。
### Get a knowledge source definition
GET {{search-url}}/knowledgeSources/{{knowledge-source-name}}?api-version=2025-08-01-preview
api-key: {{api-key}}
Content-Type: application/json
以下 JSON 是 azureBlob 知识来源的示例响应。
{
"name": "earth-at-night-blob-ks",
"kind": "azureBlob",
"description": "This knowledge source pull from a blob storage container containing pages from the Earth at Night PDF.",
"encryptionKey": null,
"searchIndexParameters": null,
"azureBlobParameters": {
"connectionString": "<REDACTED>",
"folderPath": null,
"disableImageVerbalization": null,
"identity": null,
"embeddingModel": {
"name": "demo-blob-embedding-vectorizer",
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "<REDACTED>",
"deploymentId": "text-embedding-ada-002",
"apiKey": "<REDACTED>",
"modelName": "text-embedding-ada-002",
"authIdentity": null
},
"customWebApiParameters": null,
"aiServicesVisionParameters": null,
"amlParameters": null
},
"chatCompletionModel": {
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "<REDACTED>",
"deploymentId": "gpt-5-mini",
"apiKey": "<REDACTED>",
"modelName": "gpt-5-mini",
"authIdentity": null
}
},
"ingestionSchedule": null,
"createdResources": {
"datasource": "earth-at-night-blob-ks-datasource",
"indexer": "earth-at-night-blob-ks-indexer",
"skillset": "earth-at-night-blob-ks-skillset",
"index": "earth-at-night-blob-ks-index"
}
},
"webParameters": null
}
注释
敏感信息已经过编修。 生成的资源显示在响应的末尾。 该 webParameters 属性在此预览版中不起作用,并保留供将来使用。
创建知识来源
若要创建 azureBlob 知识来源,请执行以下操作:
在文件顶部设置环境变量。
@search-url = <YOUR SEARCH SERVICE URL> @api-key = <YOUR SEARCH ADMIN API KEY> @ks-name = <YOUR KNOWLEDGE SOURCE NAME> @connection-string = <YOUR FULL ACCESS CONNECTION STRING TO AZURE STORAGE> @container-name = <YOUR BLOB CONTAINER NAME>使用 2025-08-01-preview 版本的 知识源 - 创建或更新(REST API) 或提供等效功能的 Azure SDK 预览包来构建请求。
PUT {{search-url}}/knowledgeSources/earth-at-night-blob-ks?api-version=2025-08-01-preview api-key: {{api-key}} Content-Type: application/json { "name": "{{ks-name}}", "kind": "azureBlob", "description": "This knowledge source pulls from a blob storage container containing pages from the Earth at Night PDF.", "encryptionKey": null, "azureBlobParameters": { "connectionString": "{{connection-string}}", "containerName": "{{container-name}}", "folderPath": null, "disableImageVerbalization": null, "identity": null, "embeddingModel": { // Redacted for brevity }, "chatCompletionModel": { // Redacted for brevity }, "ingestionSchedule": { // Redacted for brevity } } }选择“发送请求”。
要点:
name在知识源集合中必须是唯一的,并遵循 Azure AI 搜索中对象的 命名准则 。对于 Blob 知识来源,
kind必须是azureBlob。encryptionKey(可选)是 Azure Key Vault 中的加密密钥。 使用此属性可对知识源和生成的对象中的敏感信息进行双重加密。embeddingModel(可选)是文本嵌入模型,用于在索引编制和查询时向量文本和图像内容。 使用 Azure OpenAI 嵌入技能、 Azure AI 视觉多模式嵌入技能、 AML 技能或 自定义 Web API 技能支持的模型。 嵌入技能将包含在生成的技能集中,其等效向量器将包含在生成的索引中。chatCompletionModel(可选)是一种聊天完成模型,用于口头处理图像或提取内容。 使用 GenAI 提示技能支持的模型,该模型将包含在生成的技能集中。 若要跳过图像语言化,请省略此对象并设置"disableImageVerbalization": true。ingestionSchedule(可选)将计划信息添加到生成的索引器。 还可以稍后 添加计划 以自动执行数据刷新。如果收到错误,请确保你提供的终结点中存在嵌入和聊天补全模型。
查看创建的对象
创建 Blob 知识源时,搜索服务还会创建索引器、数据源、技能集和索引。 编辑这些对象时请谨慎,因为引入错误或不兼容可能会中断管道。
创建知识源后,响应会列出已创建的对象。 这些对象是根据固定模板创建的,其名称基于知识源的名称。 无法更改对象名称。
建议使用 Azure 门户验证输出创建。 工作流为:
- 检查索引器是否有成功或失败的消息。 此处会显示连接或配额错误。
- 检查可搜索内容的索引。 使用搜索资源管理器运行查询。
- 检查技能集,了解如何对内容进行分块和选择性地矢量化。
- 如果要更改连接详细信息(例如身份验证和授权),请修改数据源。 本示例使用 API 密钥来简单起见,但可以使用 Microsoft Entra ID 身份验证和基于角色的访问。
分配给知识代理
如果对索引感到满意,请继续执行下一步:在知识代理中指定知识来源。
在知识代理中,知识来源上还有更多针对查询操作需要设置的属性。
配置知识代理后,使用检索操作查询知识来源。
删除知识来源
如果不再需要知识来源,或者需要在搜索服务上重新生成它,请使用此请求删除当前对象。
在删除知识源之前,必须先删除引用它的任何知识代理,或远程删除更新作中的引用。 从知识源创建的相关索引和任何索引器管道对象都是独立的对象,无需与知识源一起删除或更新。
如果尝试删除未使用的知识来源,操作会失败,并返回受影响的知识智能体列表。
首先获取所有知识代理的列表。 此请求将返回您搜索服务中的所有知识代理程序。
### Get the knowledge agent GET {{search-endpoint}}/agents?api-version=2025-08-01-preview&$select=name api-key: {{api-key}} Content-Type: application/json示例响应可能如下所示:
{ "@odata.context": "https://my-demo-search-service.search.windows.net/$metadata#agents(name)", "value": [ { "name": "earth-blob-ka" }, { "name": "hotels-sample-ka" } ] }获取用于检查知识源引用的单个知识代理定义。
GET {{search-endpoint}}/agents/hotels-sample-ka?api-version=2025-08-01-preview api-key: {{api-key}} Content-Type: application/json示例响应可能如下所示:
{ "name": "hotels-sample-ka", "description": null, "retrievalInstructions": null, "knowledgeSources": [ { "name": "hotels-sample-ks", "alwaysQuerySource": false, "includeReferences": true, "includeReferenceSourceData": false, "maxSubQueries": null, "rerankerThreshold": null } ], "models": [ trimmed for brevity ], "outputConfiguration": { trimmed for brevity }, "requestLimits": { trimmed for brevity}, "encryptionKey": null }如果有多个源,则通过删除知识源来 更新知识代理 ,或删除知识代理。 此示例显示删除。
### Delete knowledge agent DELETE {{search-endpoint}}/agents/hotels-sample-ka?api-version=2025-08-01-preview api-key: {{api-key}} Content-Type: application/json删除知识来源。
### Delete a knowledge source definition GET {{search-endpoint}}/knowledgeSources/hotels-sample-ks?api-version=2025-08-01-preview api-key: {{api-key}} Content-Type: application/json