

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# OpenSearch Serverless でニューラル検索とハイブリッド検索を設定する
<a name="serverless-configure-neural-search"></a>

## Neural Search
<a name="serverless-configure-neural-search-what-is"></a>

Amazon OpenSearch Serverless は、データに対するセマンティック検索オペレーション向けにニューラル検索機能をサポートしています。ニューラル検索は、機械学習モデルを使用してクエリのセマンティックの意味とコンテキストを理解し、従来のキーワードベースの検索よりも関連性の高い検索結果を提供します。このセクションでは、必要なアクセス許可、サポートされているプロセッサ、標準の OpenSearch 実装との主な違いなど、OpenSearch Serverless でニューラル検索を設定する方法について説明します。

ニューラル検索の使用により、データに対してセマンティック検索を実行できます。セマンティック検索では、セマンティックな意味合いを考慮して検索クエリの意図を理解します。この機能は、次のコンポーネントを利用しています。
+ テキスト埋め込み取り込みパイプラインプロセッサ
+ ニューラルクエリ
+ ニューラルスパースクエリ

## ハイブリッド検索
<a name="serverless-configure-hybrid-search"></a>

ハイブリッド検索を使用してキーワード検索機能とセマンティック検索の各機能を組み合わせることで、検索の関連性を向上させることができます。ハイブリッド検索を使用するには、検索結果を処理しドキュメントスコアを組み合わせるための検索パイプラインを作成します。詳細については、「*OpenSearch のドキュメント*」ウェブサイトの「[Search pipelines](https://docs.opensearch.org/latest/search-plugins/search-pipelines/index/)」を参照してください。ハイブリッド検索を実装するには、次のコンポーネントを使用します。
+ 正規化検索パイプラインプロセッサ

**サポートされている正規化手法**
  + `min_max`
  + `l2`

**サポートされている組み合わせ手法**
  + `arithmetic_mean`
  + `geometric_mean`
  + `harmonic_mean`

  正規化と組み合わせの手法の詳細については、「*OpenSearch のドキュメント*」ウェブサイトの「[Request body fields](https://docs.opensearch.org/latest/search-plugins/search-pipelines/normalization-processor/#request-body-fields)」を参照してください。
+ ハイブリッドクエリ

## ニューラルクエリとハイブリッドクエリ
<a name="serverless-configure-neural-search-hybrid-queries"></a>

デフォルトでは、OpenSearch はキーワードベースの Okapi BM25 アルゴリズムを使用してドキュメントスコアを計算します。これは、キーワードを含む検索クエリに適しています。ニューラル検索では、自然言語クエリの新しいクエリタイプと、セマンティック検索とキーワード検索の両方を組み合わせる機能が提供されます。

**Example : `neural`**  

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

詳細については、「*OpenSearch のドキュメント*」ウェブサイトの「[Neural query](https://docs.opensearch.org/latest/query-dsl/specialized/neural/)」を参照してください。

**Example : `hybrid`**  

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

詳細については、「*OpenSearch のドキュメント*」ウェブサイトの[「Hybrid query](https://docs.opensearch.org/latest/query-dsl/compound/hybrid/)」を参照してください。

Amazon OpenSearch Serverless でセマンティック検索コンポーネントを設定するには、「*OpenSearch のドキュメント*」ウェブサイトの「[Neural Search tutorial](https://docs.opensearch.org/latest/tutorials/vector-search/neural-search-tutorial/)」の手順に従います。次の重要な違いに注意してください。
+ OpenSearch Serverless はリモートモデルのみをサポートします。リモートでホストされたモデルにコネクタを設定する必要があります。リモートモデルをデプロイまたは削除する必要はありません。詳細については、「*OpenSearch のドキュメント*」ウェブサイトの「[Getting started with semantic and hybrid search](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:\$1CollectionItems** – 取り込みパイプラインと検索パイプラインを作成します。
+ **aoss:\$1MLResource** – テキスト埋め込みモデルを作成して登録します。
+ **aoss:APIAccessAll** – 検索オペレーションと取り込みオペレーション用に OpenSearch API へのアクセスを提供します。

以下に、ニューラル検索に必要なコレクションデータアクセスポリシーについて説明します。*プレースホルダー値*は、ユーザー固有の情報に置き換えてください。

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