

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

# 在 OpenSearch 无服务器上配置神经搜索和混合搜索
<a name="serverless-configure-neural-search"></a>

## 神经搜索
<a name="serverless-configure-neural-search-what-is"></a>

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

借助神经搜索，您可以对数据进行语义搜索，通过理解语义含义解析搜索查询的意图。此功能由以下组件提供支持：
+ 文本嵌入摄取管道处理器
+ 神经语音
+ 神经查询

## 混合搜索
<a name="serverless-configure-hybrid-search"></a>

通过混合搜索，您可以结合关键词搜索和语义搜索功能，以提高搜索相关性。要使用混合搜索，请创建搜索管道，以处理搜索结果以及合并文档得分。有关更多信息，请参阅*OpenSearch 文档*网站上的[搜索管道](https://docs.opensearch.org/latest/search-plugins/search-pipelines/index/)。使用以下组件实现混合搜索：
+ 标准化搜索管道处理器

**支持的标准化技术**
  + `min_max`
  + `l2`

**支持的组合技术**
  + `arithmetic_mean`
  + `geometric_mean`
  + `harmonic_mean`

  有关标准化和组合技术的更多信息，请参阅*OpenSearch文档*网站上的[请求正文字段](https://docs.opensearch.org/latest/search-plugins/search-pipelines/normalization-processor/#request-body-fields)。
+ 混合查询

## 神经查询和混合查询
<a name="serverless-configure-neural-search-hybrid-queries"></a>

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

**Example : `neural`**  

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

有关更多信息，请参阅*OpenSearch 文档*网站上的[神经查询](https://docs.opensearch.org/latest/query-dsl/specialized/neural/)。

**Example : `hybrid`**  

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

有关更多信息，请参阅*OpenSearch 文档*网站上的[混合查询](https://docs.opensearch.org/latest/query-dsl/compound/hybrid/)。

要在 Amazon OpenSearch Serverless 中配置语义搜索组件，请按照*OpenSearch 文档*网站[神经搜索教程](https://docs.opensearch.org/latest/tutorials/vector-search/neural-search-tutorial/)中的步骤进行操作。请注意以下重要区别：
+ OpenSearch 无服务器仅支持远程模型。必须为远程托管的模型配置连接器。无需部署或删除远程模型。有关更多信息，请参阅*OpenSearch 文档*网站上的[语义搜索和混合搜索入门](https://docs.opensearch.org/latest/tutorials/vector-search/neural-search-tutorial/)。
+ 当对向量索引进行搜索或搜索最近创建的搜索和摄取管道时，预计会有长达 15 秒的延迟。

## 配置 权限
<a name="serverless-configure-neural-search-permissions"></a>

 OpenSearch Serverless 中的神经搜索需要以下权限。有关更多信息，请参阅 [受支持的策略权限](serverless-data-access.md#serverless-data-supported-permissions)。

**Example ：神经搜索策略**    
****  

```
{
    "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:\$1Index**：创建存储文本嵌入的向量索引。
+ **aoss: \$1 CollectionItems** — 创建采集和搜索管道。
+ **aoss: \$1 MLResource** — 创建和注册文本嵌入模型。
+ **aoss: APIAccess All** — 提供 OpenSearch APIs 搜索和采集操作的访问权限。

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

**Example ：数据访问策略**  

```
[
    {
        "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"
        ]
    }
]
```