Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
注释
此功能目前处于公开预览状态。 此预览版未随附服务级别协议,建议不要用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 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 搜索中对象的 命名准则 。kind必须作为 Blob 知识源的azureBlob。encryptionKey(可选)是 Azure Key Vault 中的加密密钥。 使用此属性可对知识源和生成的对象中的敏感信息进行双重加密。embeddingModel(可选)是文本嵌入模型,用于在索引编制和查询时向量文本和图像内容。 使用 Azure OpenAI 嵌入技能、 Azure AI 视觉多模式嵌入技能自定义 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.azure.cn/$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