Compartilhar via

Azure AI 搜索中的数据导入

在 Azure AI 搜索中,查询执行于加载到搜索索引中的内容,或者,如果使用代理检索,则执行于远程知识源

本文介绍用于填充搜索服务索引的两个基本工作流:以编程方式将数据推送到索引中,或使用搜索索引器拉取数据。

这两种方法都从外部数据源加载文档。 尽管可以创建空索引,但只有在添加了内容之后,才能进行查询。

注意

如果 AI 扩充集成矢量化是解决方案要求,则必须使用拉取模型(索引器)来加载索引。 技能集附加到索引器,不会独立运行。

将数据推送至索引

推送模型是使用 API 将文档上传到现有搜索索引的一种方法。 你可以单个或批量上传文档(每批最多 1000 个或 16 MB,以先达到的为准)。

主要优势包括:

  • 它对数据源类型没有限制。 有效负载必须由映射到索引架构的 JSON 文档组成,但数据可以源自任意位置。

  • 它对执行频率没有限制。 可以随时将更改推送到索引。 对于具有极低延迟要求的应用程序(例如,如果索引需要与产品库存波动同步),只能选择推送模型。

  • 文档的连接和安全检索完全由你控制。 相比之下,索引器连接是使用 Azure AI 搜索中提供的安全功能进行身份验证的。

如何将数据推送至 Azure AI 搜索索引

使用以下 API 将单个或多个文档加载到一个索引中:

不支持通过 Azure 门户推送数据。

有关推送 API 的简介,请参阅:

索引操作:上传、合并、mergeOrUpload、删除

可以按文档控制索引操作的类型,指定是应该完整地上传文档、与现有文档内容合并还是将其删除。

无论使用 REST API 还是 Azure SDK,数据导入都支持以下文档操作:

  • 上传类似于“upsert”,如果文档是新文档,则插入;如果文档已经存在,则进行更新或替换。 如果文档缺少索引所需的值,则将文档字段的值设置为 null。

  • 合并会更新已有的文档,如果找不到该文档,则会失败。 合并将替换现有值。 因此,请务必检查是否有包含多个值的集合字段,例如类型为 Collection(Edm.String) 的字段。 例如,如果 tags 字段以 ["budget"] 值开头,并且你执行与 ["economy", "pool"] 的合并,则 tags 字段的最终值为 ["economy", "pool"]。 不会是 ["budget", "economy", "pool"]

  • 如果文档已存在,则 mergeOrUpload 的行为类似于合并,如果文档是新的,则类似于上传。

  • 删除会从索引中移除整个文档。 如果你想删除某个字段,请改用合并,将相应字段设置为 NULL。

将数据拉取到索引中

提取模型使用索引器连接到支持的数据源,将数据自动上传到索引中。 Azure 的索引器可用于以下平台:

Microsoft 的索引器可用于以下平台:

如果为代理检索配置 索引知识源 ,Azure AI 搜索会创建索引器管道,并使用知识源中的属性加载索引。

借助这些自动化方法,可以将索引连接到数据源(通常是表、视图、容器或等效结构),并将源字段映射到索引中的等效字段。 在执行期间,行集会自动转换为 JSON 并载入指定的索引中。 所有索引器都支持调度,使用户能够指定数据的刷新频率。 大多数索引器提供更改跟踪(如果受数据源的支持)。 除了识别新文档外,通过跟踪对现有文档的更改和删除,索引器无需主动管理索引中的数据。

如何将数据拉取至 Azure AI 搜索索引

使用以下工具和 API 进行基于索引器的索引编制:

索引器功能在 Azure 门户、 REST API.NET SDK 中公开。

使用 Azure 门户的一个优势在于,Azure AI 搜索通常可以通过读取源数据集的元数据来生成默认的索引架构。

使用搜索浏览器验证数据导入

针对文档上传执行初步检查的捷径之一是在 Azure 门户中使用搜索浏览器

Azure 门户中搜索资源管理器命令的屏幕截图。

使用资源管理器可以直接查询索引,而无需编写任何代码。 搜索体验取决于默认设置,例如简单语法和默认的 searchMode 查询参数。 结果以 JSON 格式返回,方便用户检查整个文档。

下面是可在 JSON 视图中的搜索资源管理器中运行的示例查询。 “HotelId”是酒店示例索引的文档键。 筛选器给出特定文档的文档 ID。

{
  "search": "*",
  "filter": "HotelId eq '50'"
}

如果使用的是 REST,则此查找查询可以实现相同的目的。

另请参阅