Azure AI 搜索中的导入向导
Azure AI 搜索有两个导入向导,可自动执行索引和对象定义,以便你可以直接开始查询。 如果你是初次接触 Azure AI 搜索,那么,这两个向导将成为可由你掌控的最强大的功能之一。 你可以轻松创建一个索引或扩充管道,来执行 Azure AI 搜索的大部分功能。
导入数据向导支持非矢量工作流。 可以从原始文档中提取字母数字文本。 还可以配置应用的 AI 和内置技能,以推断结构并从图像文件和非结构化数据生成文本可搜索内容。
导入和矢量化数据向导支持矢量化。 必须指定嵌入模型的现有部署,但向导会建立连接、表达请求并处理响应。 它会从文本或图像内容生成矢量内容。
如果你正在使用向导进行概念验证测试,本文将解释向导的内部工作原理,以便你更有效地使用它们。
本文并非分步指南。 有关将向导与内置示例数据配合使用的帮助,请参阅:
启动向导
在 Azure 门户中,从仪表板打开搜索服务页,或者在服务列表中查找服务。
在顶部的服务概述页中,选择“导入数据”或“导入并矢量化数据”。
向导在浏览器窗口中以完全展开的形式打开,以便为你提供更多操作空间。
还可以通过其他 Azure 服务(包括 Azure Cosmos DB、Azure SQL 数据库、SQL 托管实例和 Azure Blob 存储)启动“导入数据”。 在服务概述页上的左侧导航窗格中寻找“添加 Azure AI 搜索”。
向导创建的对象
向导将输出下表中的对象。 创建对象后,你可以在门户中查看其 JSON 定义或从代码中调用它们。
对象 | 说明 |
---|---|
索引器 | 一个配置对象,指定数据源、目标索引、可选计划,以及有关错误处理和 base-64 编码的可选技能集、可选计划和可选配置设置。 |
数据源 | 将支持的数据源的连接信息持久保存到 Azure。 某个数据源对象专用于索引器。 |
索引 | 用于全文搜索和其他查询的物理数据结构。 |
技能集 | 可选。 用于操作、转换和调整内容(包括分析和提取图像文件中的信息)的完整指令集。 技能组还可用于集成矢量化。 除非工作量低于每天每个索引器 20 个事务的限制,否则技能组必须包含对提供扩充的 Azure AI 多服务资源的引用。 对于集成矢量化,可以使用 Azure AI 视觉或 Azure AI Studio 模型目录中的嵌入模型。 |
知识存储 | 可选。 将输出存储在 Azure 存储的表和 blob 中,以在非搜索场景中进行独立分析或下游处理。 |
好处
在编写任何代码之前,可以使用向导进行原型制作和概念证明测试。 向导将连接到外部数据源,对数据进行采样以创建初始索引,然后将数据作为 JSON 文档导入并根据需要矢量化到 Azure AI 搜索中的索引。
如果要评估技能组,向导将处理输出字段映射,并添加帮助程序函数以创建可用对象。 如果指定分析模式,则会添加文本拆分。 如果选择图像分析,则会添加文本合并,以便向导可以将文本说明与图像内容重新组合。 如果选择知识存储选项,则会添加整形程序技能来支持有效的投影。 上述所有任务都提供学习曲线。 如果你是扩充的新手,则其为你处理这些步骤的强大功能让你无需投入大量时间和精力即可衡量一项技能的价值。
采样是推断索引架构的过程,它存在一些限制。 创建数据源时,向导会选取文档的随机样本,以确定哪些列是数据源的一部分。 不一定会读取所有文件,因为对于极大的数据源,这可能需要好几个小时。 在提供一系列文档的情况下,将使用源元数据(例如字段名称或类型)在索引架构中创建字段集合。 根据源数据的复杂性,可能需要编辑初始架构以提高准确性,或对其进行扩展以获得完整性。 可以在索引定义页上以内联方式进行更改。
总体而言,使用向导的优点非常明显:只要符合要求,就可以在数分钟内制作出可查询的索引。 向导在一定程度上可以处理索引编制的复杂性,例如,以 JSON 文档的形式序列化数据。
限制
向导并非没有限制。 其限制可以总结如下:
向导不支持迭代或重用。 每次运行向导都会创建新的索引、技能集和索引器配置。 在向导中只能保存和重用数据源。 若要编辑或优化其他对象,请删除对象并重新开始,或者使用 REST API 或 .NET SDK 修改结构。
源内容必须位于受支持的数据源中。
采样是针对一部分源数据执行的。 对于大型数据源,向导可能会遗漏字段。 如果采样不足,可能需要扩展架构或更正推断出的数据类型。
门户中公开的 AI 扩充限制为几个内置技能。
可由向导创建的知识存储限制为几个默认投影并使用默认命名约定。 如果要自定义名称或投影,需要通过 REST API 或 SDK 创建知识存储。
安全连接
导入向导使用门户控制器和公共终结点建立出站连接。 如果通过专用连接或共享专用链接访问 Azure 资源,则无法使用向导。
可以通过受限的公共连接使用向导,但并非所有功能都可用。
在搜索服务中,导入内置示例数据需要公共终结点,且无需防火墙规则。
示例数据由 Azure 托管在特定的 Azure 资源上。 门户控制器通过公共终结点连接到这些资源。 如果将搜索服务放在防火墙后面,则尝试检索内置示例数据时会出现此错误:
Import configuration failed, error creating Data Source
,以及"An error has occured."
。在受防火墙保护的受支持 Azure 数据源上,如果已设置正确的防火墙规则,则可以检索数据。
Azure 资源必须允许来自连接所用设备的 IP 地址的网络请求。 还应在资源的网络配置中将 Azure AI 搜索列为受信任的服务。 例如,在 Azure 存储中,可以将
Microsoft.Search/searchServices
列为受信任的服务。在连接到你提供的 Azure AI 多服务帐户或连接到 Azure AI Studio 或 Azure OpenAI 中部署的嵌入模型时,必须启用公共 Internet 访问。 当你使用“导入数据”向导中的内置技能或“导入和矢量化数据”向导中的集成矢量化时,将调用这些 Azure 资源。
在“导入和矢量化数据”向导中,错误为
"Access denied due to Virtual Network/Firewall rules."
在“导入数据”向导中,没有错误,但不会创建技能组。
如果防火墙设置阻止向导工作流成功执行,请考虑改用脚本或编程方法。
Workflow
向导分为四个主要步骤:
连接到支持的 Azure 数据源。
创建索引架构,通过对源数据采样进行推断。
(可选)添加应用的 AI 以提取或生成内容和结构。 此步骤将收集用于创建知识存储的输入。
运行向导以创建对象,并根据需要向量化数据,将数据加载到索引中、设置计划和其他配置选项。
工作流是一个管道,因此是单向的。 不能使用该向导来编辑已创建的任何对象,但可以使用其他门户工具(如索引、索引器设计器或 JSON 编辑器)进行允许的更新。
向导中的数据源配置
向导使用 Azure AI 搜索索引器提供的内部逻辑连接到受支持的外部数据源。索引器旨在对源采样、读取元数据、破解文档以读取内容和结构,并将内容序列化为 JSON,供后续导入到 Azure AI 搜索。
可以在不同订阅或区域中粘贴受支持的数据源的连接,但“选择现有连接”选取器的范围限制为活动订阅。
无法保证所有预览数据源都在向导中可用。 由于每个数据源都有可能在下游引入其他更改,因此只有当预览数据源完全支持向导中的所有体验(例如技能组定义和索引架构推断)时,才会将其添加到数据源列表中。
只能从单个表、数据库视图或等效的数据结构导入,但是,此结构可能包含分层的或嵌套的子结构。 有关详细信息,请参阅如何为复杂类型建模。
向导中的技能组配置
技能组配置发生在数据源定义之后,因为数据源的类型将指示某些内置技能的可用性。 具体来说,如果你正在为 Blob 存储中的文件编制索引,那么,你为这些文件选择的分析模式将决定情绪分析是否可用。
向导将添加所选技能。 它还添加了实现成功结果所需的其他技能。 例如,如果你指定了知识存储,向导会添加整形程序技能来支持投影(或物理数据结构)。
技能组是可选项;如果不需要 AI 扩充,可以单击页面底部的按钮跳过此步骤。
向导中的索引架构配置
向导将对数据源采样,以检测字段和字段类型。 根据数据源,它还有可能提供用于为元数据编制索引的字段。
由于采样是一项不精确的工作,因此查看索引时要考虑以下因素:
字段列表是否准确? 如果数据源包含未在采样中选取的字段,你可以手动添加采样遗漏的任何新字段,并删除无法提升搜索体验或者不会在筛选表达式或计分概要文件中使用的字段。
数据类型是否适合传入的数据? Azure AI 搜索支持实体数据模型 (EDM) 数据类型。 对于 Azure SQL 数据,有一个映射图表会列出等效值。 有关更多背景信息,请参阅字段映射和转换。
是否有一个可用作键的字段? 此字段的类型必须是 Edm.string,并且必须唯一标识某个文档。 对于关系数据,它可能会映射到主键。 对于 Blob,它可能是
metadata-storage-path
。 如果字段值包含空格或短划线,则必须在“高级选项”下的“创建索引器”步骤中设置“Base 64 编码密钥”选项以禁止验证检查这些字符 。设置属性以确定如何在索引中使用该字段。
请花些时间来完成此步骤,因为属性确定了索引中字段的物理表达式。 以后若要更改属性(即使是以编程方式进行更改),几乎总要删除并重建索引。 Searchable 和 Retrievable 等核心属性对存储会产生负面影响。 启用筛选器和使用建议器会提高存储要求。
“可搜索”启用全文搜索 。 在自由格式查询或查询表达式中使用的每个字段必须有此属性。 为标记为“可搜索”的每个字段创建反向索引 。
“可检索”在搜索结果中返回该字段 。 用于提供内容以搜索结果的每个字段必须有此属性。 设置此字段不会明显影响索引大小。
“可筛选”允许在筛选表达式中引用该字段 。 在 $filter 表达式中使用的每个字段必须有此属性。 筛选表达式用于精确匹配项。 由于文本字符串保持不变,因此需要更多存储空间来容纳逐字内容。
“可查找”为分面导航启用该字段 。 只有也标记为“可筛选”的字段可标记为“可查找” 。
“可排序”允许在排序中使用该字段 。 在 $Orderby 表达式中使用的每个字段必须有此属性 。
是否需要词法分析? 对于可搜索的 Edm.string 字段,若要获得语言增强的索引和查询,可以设置分析器。
默认值为“标准 Lucene”,但如果想要使用 Azure 的分析器以进行高级词汇处理(如解决不规则名词和动词形式),可选择“Microsoft 英语” 。 在门户中只能指定语言分析器。 若要使用自定义分析器或非语言分析器(例如关键字、模式等),必须以编程方式来创建。 有关分析器的详细信息,请参阅添加语言分析器。
是否需要自动完成或建议结果形式的自动提示功能? 选中“建议器”复选框,对所选字段启用自动提示查询建议和自动完成。 使用建议器会增加索引中标记化字词的数目,因此会消耗更多的存储。
向导中的索引器配置
向导的最后一页将收集用于索引器配置的用户输入。 你可以指定计划并设置其他选项,这些选项因数据源类型而异。
在内部,向导还设置了以下定义,这些定义在创建索引器之前在索引器中不可见:
后续步骤
了解向导的优点和限制的最佳方式就是逐步运行该向导。 下面的快速入门介绍了每个步骤。