您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

Azure 认知搜索中的知识存储

知识存储是 Azure 认知搜索的一项功能,该功能可将 AI 扩充管道的输出发送到 Azure 存储中的表和 blob,以供独立分析或进行下游处理。

如果你过去使用过认知技能,那么你已经知道技能组可通过扩充序列调用原子转换(如识别实体或翻译文本)来移动文档。 结果可以是搜索索引,也可以是知识存储中的投影。 这两个输出(搜索索引和知识存储)是相同管道的互斥性产品;它们派生自相同的输入,但生成的输出将在不同应用程序中进行结构化、存储和使用。

管道与技能组

在物理上,知识存储是一个 Azure 存储,可以是 Azure 表存储和/或 Azure Blob 存储。 任何可以连接到 Azure 存储的工具或进程都可以使用知识存储的内容。

知识存储可通过存储资源管理器查看,只是表、对象或文件的一个集合。 下面的示例显示由三个表组成的一个知识存储,其中的字段要么是从数据源沿用的,要么是通过扩充创建的(请查看“sentiment score”和“translated_text”)。

从扩充树中进行读取和写入的技能

知识存储的优势

知识存储的主要优点有两个方面:灵活访问内容和形状数据处理能力。

与只能通过认知搜索中的查询进行访问的搜索索引不同,知识存储可以通过支持与 Azure 存储连接的任何工具、应用或进程进行访问。 这种灵活性为使用由扩充管道生成的经过分析和扩充的内容提供了新方案。

同一技能组除了可以扩充数据,还可以用于绘制数据。 某些工具(如 Power BI)更适合与表配合使用,而数据科学工作负载可能需要采用 blob 格式的复杂数据结构。 将整形程序技能添加到技能组,可用于控制数据形状。 然后,可将这些形状传递到投影(表或 blob),以创建与数据使用目的一致的物理数据结构。

以下视频介绍了这两个优点以及更多内容。

知识存储定义

知识存储在技能组定义内部进行定义,其中包含两个组件:

  • 获取 Azure 存储的连接字符串

  • 确定知识存储是否包含表、对象或文件的投影

投影元素是一个数组。 一个知识存储中可以创建多组“表-对象-文件”组合。

"knowledgeStore":{
   "storageConnectionString":"<YOUR-AZURE-STORAGE-ACCOUNT-CONNECTION-STRING>",
   "projections":[
      {
         "tables":[ ],
         "objects":[ ],
         "files":[ ]
      }
   }

在此结构中指定的投影类型确定了知识存储使用的存储类型。

  • tables 将扩充内容投影到表存储中。 如果需要使用表格式报告结构作为分析工具的输入或者要以数据帧的形式导出到其他数据存储,请定义表投影。 可指定同一投影组中的多个 tables 以获取扩充文档的子集或交叉部分。 在同一投影组内,将会保留表关系,以便可以使用所有表。

  • objects 将 JSON 文档投影到 Blob 存储中。 object 的物理表示形式是一个表示扩充文档的分层 JSON 结构。

  • files 将图像文件投影到 Blob 存储中。 file 是从文档中提取的图像,它按原样传输到 Blob 存储。 尽管命名为“files”,但它显示在 Blob 存储中,而不是在文件存储中。

创建知识存储

若要创建知识存储,请使用门户或 API。 需要 Azure 存储、一个技能组和一个索引器。 由于索引器需要搜索索引,因此还需要提供索引定义。

使用门户方法是创建知识存储的最快路径。 或者选择 REST API,以便更深入地了解如何定义和关联对象。

使用“导入数据”向导,通过四个步骤创建第一个知识存储

  1. 定义数据源

  2. 定义技能组并指定知识存储。

  3. 创建索引架构。 向导需要该架构,并可以推断一个架构。

  4. 运行向导。 提取、扩充和存储操作在此最后一个步骤中发生。

向导会自动执行原本需要手动处理的任务。 具体而言,就是为你创建整形和投影(Azure 存储中的物理数据结构定义)。

与应用连接

只要扩充存在于存储中,连接到 Azure Blob 存储或表存储的任何工具或技术就都可用于浏览、分析或使用内容。 请从以下列表入手:

内容生命周期

每次运行索引器和技能组时,如果技能组或基础源数据已更改,知识存储就会更新。 索引器选取的任何更改都将通过扩充过程传播到知识存储中的投影,从而确保投影数据是原始数据源中内容的当前表示形式。

备注

虽然可以编辑投影中的数据,但如果源数据中的文档被更新,则任何编辑都会在下一次管道调用时被覆盖。

源数据中的更改

对于支持更改跟踪的数据源,索引器将处理新文档和更改的文档,并绕过已处理的现有文档。 时间戳信息因数据源而异,但在 Blob 容器中,索引器将查看 lastmodified 日期以确定哪些 Blob 需要引入。

对技能组的更改

如果要对技能组进行更改,应允许缓存扩充文档,以便尽可能重用现有的扩充。

如果不使用增量缓存,索引器将始终按高使用标记的顺序处理文档,而不是向后进行处理。 对于 Blob,索引器将处理按 lastModified 排序的 Blob,而不考虑索引器设置或技能组的任何更改。 如果你更改了技能组,系统不会更新以前处理的文档来反映新的技能组。 技能组更改后处理的文档将使用新的技能组,因此索引文档混合使用新旧技能集。

如果使用增量缓存,那么在技能组更新后,索引器将重用不受技能组更改影响的任何扩充。 上游扩充是从缓存中拉取的,任何独立且不受技能更改影响的扩充也是如此。

删除

尽管索引器在 Azure 存储中创建和更新结构和内容,但不会将它们删除。 即使删除了索引器或技能组,投影仍然存在。 作为存储帐户的所有者,你应在不再需要投影时将其删除。

后续步骤

知识存储提供扩充文档的持久性,在设计技能集,或者在创建新的结构和内容供可访问 Azure 存储帐户的任何客户端应用程序使用时,知识存储非常有用。

创建扩充文档的最简单方法是使用门户,但也可使用 Postman 和 REST API,这两个工具对于深入了解如何以编程方式创建和引用对象更有用。