在 OpenSearch 无服务器上配置神经搜索和混合搜索 - Amazon OpenSearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

神经搜索

Amazon OpenSearch 无服务器支持神经搜索功能,可对数据进行语义搜索操作。神经搜索利用机器学习模型理解查询的语义含义和上下文,相较于传统的基于关键词的搜索,能提供更相关的搜索结果。本节说明如何在 OpenSearch无服务器中配置神经搜索,包括所需权限、支持的处理器以及与标准 OpenSearch 实施的主要差异。

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

  • 文本嵌入摄取管道处理器

  • 神经语音

  • 神经查询

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

  • 标准化搜索管道处理器

    支持的标准化技术
    • min_max

    • l2

    支持的组合技术
    • arithmetic_mean

    • geometric_mean

    • harmonic_mean

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

  • 混合查询

神经查询和混合查询

默认情况下,OpenSearch 使用基于关键词的 Okapi BM25 算法计算文档得分,该算法适用于包含关键字的搜索查询。神经搜索为自然语言查询提供新的查询类型,并具备同时进行语义搜索和关键词搜索的能力。

例 : 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 无服务器中配置语义搜索组件,请按照《OpenSearch 文档》网站上神经搜索教程中的步骤进行操作。请注意以下重要区别:

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

  • 当对向量索引进行搜索或搜索最近创建的搜索和摄取管道时,预计会有长达 15 秒的延迟。

配置权限

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

例 :神经搜索策略
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "NeuralSearch", "Effect": "Allow", "Action": [ "aoss:CreateIndex", "aoss:CreateCollection", "aoss:UpdateCollection", "aoss:DeleteIndex", "aoss:DeleteCollection" ], "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/your-collection-name" } ] }
  • aoss:*Index:创建存储文本嵌入的向量索引。

  • aoss:*CollectionItems:创建摄取和搜索管道。

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

  • aoss:APIAccessAll:提供对 OpenSearch API 的访问权限以进行搜索和摄取操作。

以下介绍神经搜索所需的集合数据访问策略。将占位符值替换为您的具体信息。

例 :数据访问策略
[ { "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" ] } ]