Azure AI 搜索常见问题解答

查找有关 Azure AI 搜索的常见问题解答。

常规

什么是 Azure AI 搜索?

Azure AI 搜索为全文和矢量搜索方案提供了专用搜索引擎和可搜索内容的持久存储。 它还包括可选的集成式 AI,用于从原始内容中提取更多文本和结构,并对内容进行分块和矢量化以进行矢量搜索。

如何使用 Azure AI 搜索?

主要工作流是创建、加载和查询索引。 虽然可以使用门户完成大多数任务,但是 Azure AI 搜索旨在以编程方式使用,处理来自客户端代码的请求。 通过适用于 Azure 的 .NET、Python、Java 和 JavaScript SDK 中的 REST API 和客户端库提供编程支持。

“Azure 搜索”和“Azure 认知搜索”以及“Azure AI 搜索”是否是同一产品?

Azure 搜索已于 2019 年 10 月更名为“Azure 认知搜索”,以反映认知技能和 AI 处理在服务操作中更广泛的用途(但仍为可选)。 Azure 认知搜索于 2023 年 10 月更名为“Azure AI 搜索”,以与 Azure AI 服务保持一致。

支持哪些语言?

用于词汇切分的默认分析器是标准 Lucene,与语言无关。 另外,语言支持通过语言分析器将语言规则应用于入站(索引)和出站(查询)内容来表示。 某些功能(如拼写器)仅限于一部分语言。

如何将搜索集成到解决方案中?

客户端代码应调用 Azure SDK 客户端库或 REST API 来连接到搜索索引、创建查询并处理响应。 也可以编写用于生成和刷新索引的代码,或者以编程方式或通过脚本运行索引器。

各种 API 之间是否具有功能奇偶一致性?

并非总是如此。 REST API 始终是第一个在预览 API 版本中实现新功能的。 Azure SDK 中的客户端库会随着时间的推移获得新功能,但会按自己的计划发布。

虽然 REST API 最先推出最新功能,但 Azure SDK 提供更多编码支持,并且建议在 REST 上使用,除非所需的功能不可用。

是否可以暂停服务并停止计费?

不能暂停搜索服务。 在 Azure AI 搜索中,计算资源是在创建服务时分配的。 无法按需发布和回收此类资源。

是否可以升级、降级、重命名或移动服务?

服务层、名称和区域在服务的生存期内是固定的。

如果将搜索服务迁移到另一个订阅或资源组,是否会出现停机?

只要遵循移动资源前需查看的清单,并确保每个步骤都已完成,就不会出现停机。

索引

Azure AI 搜索中的“索引”是什么意思?

它是指引入、分析和存储填充搜索索引的文本内容和令牌。 编制索引会创建倒排索引以及支持信息检索的其他物理数据结构。

如果架构包括矢量字段,它会创建矢量索引。

是否可以移动、备份和还原索引?

索引移植不提供原生支持。 搜索索引被视为下游数据结构,接受来自收集操作数据的其他数据源的内容。 因此,没有对索引备份和还原的内置支持,如果删除了或想要移动索引,需要从源数据重新生成索引。

但是,如果要在搜索服务之间移动索引,可以尝试此 Azure AI 搜索 .NET 示例存储库中的 index-backup-restore 示例代码。 还有一个 Python 版本的备份和还原

删除后能否还原索引或服务?

否。如果删除 Azure AI 搜索索引或服务,将无法予以恢复。 当删除搜索服务时,会永久删除该服务中的所有索引。

是否可以从 SQL 数据库副本中编制索引?

如果使用 Azure SQL 数据库的搜索索引器,那么在从头开始生成索引时,对使用主副本或辅助副本作为数据源没有任何限制。 然而,使用增量更新(基于已更改的记录)刷新索引时需要主要副本。 此需求来自于 SQL 数据库,它仅确保主要副本上的更改跟踪。 如果尝试为索引刷新工作负荷使用次要副本,则无法保证获得所有数据。

矢量化

什么是矢量搜索?

矢量搜索是一种通过比较其矢量表示形式来查找最相似的文档的技术。 由于矢量表示形式的目标是以数字格式捕获项的基本特征,因此矢量查询可以识别相似的内容,即使没有基于关键字或标记的显式匹配项也是如此。 当用户执行搜索时,查询汇总为矢量表示形式,矢量搜索引擎标识最相似的文档。 为了提高大型数据库的效率,矢量搜索通常为查询矢量提供最近的邻域。 有关 Azure AI 搜索的矢量产品/服务的具体细节,请参阅矢量搜索概述

Azure AI 搜索是否支持矢量搜索?

Azure AI 搜索支持矢量索引和检索。 如果使用预览库和 beta 版本库,它可以矢量化查询字符串和内容。

Azure AI 搜索中矢量搜索的工作原理

借助独立矢量搜索,首先使用嵌入模型将内容转换为嵌入空间中的矢量表示形式。 然后,可以在文档有效负载中向搜索索引提供这些矢量以编制索引。 若要提供搜索请求,请使用来自索引的同一个 DNN 将搜索查询转换为矢量表示形式,矢量搜索会查找最相似的矢量并返回相应的文档。

在 Azure AI 搜索中,可以将矢量数据编制索引为文档中的字段,以及文本和其他类型的内容。 矢量字段的数据类型为 Collection(Edm.Single)

矢量查询可以单独发出,也可以与其他查询类型(包括同一个搜索请求中的词条查询和筛选器)结合发出。

Azure AI 搜索能否矢量化内容或查询?

内置集成矢量化现在以公共预览版提供。

我的搜索服务是否支持矢量搜索?

大多数现有服务都支持矢量搜索。 如果使用支持矢量搜索和索引创建的包或 API 失败,则基础搜索服务不支持矢量搜索,并且必须创建一个新服务。 对于在 2019 年 1 月 1 日之前创建的一小部分服务,可能会发生这种情况。

是否可以向现有索引添加矢量搜索?

如果搜索服务支持矢量搜索,则现有索引和新索引都可以容纳矢量字段。

为什么在新搜索服务和现有搜索服务之间看到不同的矢量索引大小限制?

我们正在全球范围内为新的搜索服务推出改进的矢量索引大小限制,但我们仍在某些地区构建基础设施容量。 在受支持的区域中创建的新搜索服务将看到矢量索引大小限制增加。 遗憾的是,我们无法将现有服务迁移到新限制。

如何在搜索索引上启用矢量搜索?

若要在索引中启用矢量搜索,请执行以下操作:

  • 向字段集合中添加一个或多个矢量字段。

  • 将“vectorSearch”部分添加到索引架构,该架构指定矢量搜索字段所使用的配置,包括使用的近似最近邻域算法的参数,如 HNSW。

  • 使用 2023-11-01 或 Azure SDK 创建或更新索引、加载文档和发出查询。

查询

查询执行在哪里进行?

查询在搜索服务上托管的单个搜索索引上执行。 不能联接多个索引以在两个或多个索引中搜索内容,但可以在多个搜索服务中查询同名索引

为什么确定有效的术语没有匹配项?

最常见的情况是不了解每种查询类型支持不同的搜索行为和语言分析级别。 全文搜索是主要的工作负荷,包括将术语分解成词根形式的语言分析阶段。 查询分析的这种特性拓宽了可能的匹配范围,因为标记化的术语能够匹配更多变体。

但是,通配符查询、模糊查询和正则表达式查询的分析方法与常规词或短语查询不同,并且当查询与单词在搜索索引中的分析形式不匹配时可能会导致再次调用性能不佳。 有关查询解析和分析的详细信息,请参阅查询体系结构

为何我的通配符搜索速度较慢?

大多数通配符搜索查询(如前缀、模糊和正则表达式)会使用搜索索引中匹配的词在内部重写。 这种额外的处理会增加延迟。 此外,广泛搜索查询(例如 a*),可能会使用许多词重写,因此速度可能会很慢。 对于高性能通配符搜索,请考虑定义自定义分析器

能否跨多个索引进行搜索?

否,查询始终限制在单一索引内。

为什么每个匹配项的搜索分数都为恒定的 1.0?

根据匹配字词的统计属性为全文搜索查询生成搜索分数,并在结果集中按从高到低的顺序排列。 不是全文搜索的查询类型(通配符、前缀、正则表达式)不会按相关性分数排名。 此行为是设计使然。 常数分数允许在结果中包含通过查询扩展找到的匹配项,且不会影响排名。

例如,假设在通配符搜索中输入“tour*”,会产生匹配结果“tours”、“tourettes”和“tourmaline”。 由于这些结果的性质,我们无法合理推断出哪些字词的相关性高于其他字词。 因此,在为通配符、前缀和正则表达式类型的查询结果评分时,会忽略字词频率。 建立在不完整输入上的搜索结果获得一个常数分数,以避免可能的意外匹配偏差。

安全性

Azure AI 搜索在哪里存储客户数据?

无论服务部署在何处,它都存储数据。 Azure AI 搜索不会将客户数据存储在部署区域之外。

Azure AI 搜索是否会将客户数据发送到其他服务以进行处理?

是的,如果使用基于 Azure AI 服务的内置技能,索引器会通过内部网络将请求发送到 Azure AI 服务。 如果添加自定义技能,索引器会通过公共网络将内容发送到自定义技能中提供的 URI。

是否可以根据用户标识控制对搜索结果的访问?

不完全是。 通常,有权运行应用程序的用户也有权查看所有搜索结果。 Azure AI 搜索没有对行级或文档级权限的内置支持,但可以将实现安全筛选器作为一种解决方法。

是否可以根据用户标识控制对操作的访问?

是的,对于针对内容的数据平面操作,你可以使用基于角色的授权

如果搜索服务位于 IP 防火墙或专用终结点后面,是否可以使用 Azure 门户查看和管理搜索内容?

如果创建了一个可通过客户端和门户访问网络的例外,则可在受网络保护的搜索服务上使用 Azure 门户。 有关详细信息,请参阅通过 IP 防火墙进行连接通过专用终结点进行连接

后续步骤

如果未在此处找到问题的答案,则可以参考下方针对更多问题和答案的源。

堆栈溢出:Azure AI 搜索
Azure AI 搜索中全文搜索的工作原理
什么是 Azure AI 搜索?