在 OpenSearch 无服务器上配置神经搜索和混合搜索 - 亚马逊 OpenSearch 服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 OpenSearch 无服务器上配置神经搜索和混合搜索

神经搜索

Amazon OpenSearch Serverless 支持神经搜索功能,可对您的数据进行语义搜索操作。Neural Search 使用机器学习模型来理解查询的语义含义和上下文,从而提供比传统的基于关键字的搜索更相关的搜索结果。本节介绍如何在 OpenSearch Serverless 中配置神经搜索,包括所需的权限、支持的处理器以及与标准 OpenSearch 实现的主要区别。

借助神经搜索,您可以对数据进行语义搜索,语义搜索会考虑语义以了解搜索查询的意图。此功能由以下组件提供支持:

  • 文本嵌入采集管道处理器

  • 神经查询

  • 神经稀疏查询

通过混合搜索,您可以通过结合关键字和语义搜索功能来提高搜索相关性。要使用混合搜索,请创建一个搜索管道来处理您的搜索结果并合并文档分数。有关更多信息,请参阅OpenSearch 文档网站上的搜索管道。使用以下组件来实现混合搜索:

  • 标准化搜索管道处理器

    支持的标准化技术
    • min_max

    • l2

    支持的组合技术
    • arithmetic_mean

    • geometric_mean

    • harmonic_mean

    有关标准化和组合技术的更多信息,请参阅OpenSearch文档网站上的请求正文字段

  • 混合查询

神经查询和混合查询

默认情况下,使用基于关键字的 Okapi BM25 算法 OpenSearch 计算文档分数,该算法适用于包含关键字的搜索查询。神经搜索为自然语言查询提供了新的查询类型,并且能够将语义搜索和关键字搜索结合起来。

例 : neural
"neural": { "vector_field": { "query_text": "query_text", "query_image": "image_binary", "model_id": "model_id", "k": 100 } }

有关更多信息,请参阅OpenSearch 文档网站上的神经查询

例 : hybrid
"hybrid": { "queries": [ array of lexical, neural, or combined queries ] }

有关更多信息,请参阅OpenSearch 文档网站上的混合查询

要在 Amazon OpenSearch Serverless 中配置语义搜索组件,请按照OpenSearch 文档网站神经搜索教程中的步骤进行操作。请记住以下重要区别:

  • OpenSearch 无服务器仅支持远程模型。您必须为远程托管的模型配置连接器。您无需部署或移除远程模型。有关更多信息,请参阅OpenSearch 文档网站上的语义搜索和混合搜索入门

  • 当您根据矢量索引进行搜索或搜索最近创建的搜索和采集管道时,预计会有长达 15 秒的延迟。

配置 权限

OpenSearch 无服务器中的神经搜索需要以下权限。有关更多信息,请参阅 受支持的策略权限

例 : 神经搜索策略
JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "NeuralSearch", "Effect": "Allow", "Action": [ "aoss:CreateIndex", "aoss:CreateCollectionItems", "aoss:CreateMLResource", "aoss:DescribeCollectionItems", "aoss:UpdateCollectionItems", "aoss:DeleteIndex", "aoss:DeleteCollectionItems", "aoss:DeleteMLResource", "aoss:APIAccessAll", ], "Resource": "*" } ] }
  • aoss: *Index — 创建存储文本嵌入的矢量索引。

  • aoss: * CollectionItems — 创建采集和搜索管道。

  • aoss: * MLResource — 创建和注册文本嵌入模型。

  • aoss: APIAccess All — 提供 OpenSearch APIs 搜索和采集操作的访问权限。

以下介绍神经搜索所需的集合数据访问策略。placeholder values用您的具体信息替换。

例 : 数据访问政策
[ { "Description": "Create index permission", "Rules": [ { "ResourceType": "index", "Resource": ["index/collection_name/*"], "Permission": [ "aoss:CreateIndex", "aoss:DescribeIndex", "aoss:UpdateIndex", "aoss:DeleteIndex" ] } ], "Principal": [ "arn:aws:iam::account_id:role/role_name" ] }, { "Description": "Create pipeline permission", "Rules": [ { "ResourceType": "collection", "Resource": ["collection/collection_name"], "Permission": [ "aoss:CreateCollectionItems", "aoss:DescribeCollectionItems", "aoss:UpdateCollectionItems", "aoss:DeleteCollectionItems" ] } ], "Principal": [ "arn:aws:iam::account_id:role/role_name" ] }, { "Description": "Create model permission", "Rules": [ { "ResourceType": "model", "Resource": ["model/collection_name/*"], "Permission": ["aoss:CreateMLResources"] } ], "Principal": [ "arn:aws:iam::account_id:role/role_name" ] } ]