Amazon OpenSearch Service の AI/ML コネクタを使用したニューラル検索の強化 |アマゾン ウェブ サービス

Amazon OpenSearch Service の AI/ML コネクタを使用したニューラル検索の強化 |アマゾン ウェブ サービス

ソースノード: 3068091

ニューラル検索機能の開始により、 AmazonOpenSearchサービス OpenSearch 2.9 では、AI/ML モデルと簡単に統合して、セマンティック検索やその他のユースケースを強化できるようになりました。 OpenSearch Service は、2020 年の k 最近傍 (k-NN) 機能の導入以来、字句検索とベクトル検索の両方をサポートしてきました。ただし、セマンティック検索を構成するには、取り込みと検索のために機械学習 (ML) モデルを統合するフレームワークを構築する必要がありました。ニューラル検索機能により、取り込みおよび検索中のテキストからベクターへの変換が容易になります。検索中にニューラル クエリを使用すると、クエリはベクトル埋め込みに変換され、k-NN を使用してコーパスから最も近いベクトル埋め込みが返されます。

ニューラル検索を使用するには、ML モデルを設定する必要があります。 AI/ML コネクタを AWS AI および ML サービス (たとえば、 アマゾンセージメーカー or アマゾンの岩盤)またはサードパーティの代替品。 OpenSearch Service のバージョン 2.9 以降、AI/ML コネクタはニューラル検索と統合され、データ コーパスとクエリのベクトル埋め込みへの変換を簡素化して運用できるようになり、ベクトルのハイドレーションと検索の複雑さの多くが解消されます。

この投稿では、OpenSearch Service コンソールを介して外部モデルへの AI/ML コネクタを構成する方法を示します。

ソリューションの概要

具体的には、この投稿では、SageMaker でモデルに接続する手順を説明します。次に、ML モデルへの接続を通じてサポートされるユースケースの例として、コネクタを使用して OpenSearch サービスでセマンティック検索を構成する方法を説明します。 Amazon Bedrock と SageMaker の統合は現在、OpenSearch Service コンソール UI でサポートされており、UI でサポートされるファーストパーティおよびサードパーティの統合のリストは今後も拡大していく予定です。

UI を通じてサポートされていないモデルについては、代わりに利用可能な API と ML ブループリント。 詳細については、を参照してください。 OpenSearch モデルの概要。各コネクタのブループリントは、 ML Commons GitHub リポジトリ.

前提条件

OpenSearch Service コンソール経由でモデルを接続する前に、OpenSearch Service ドメインを作成します。マップを作成する AWS IDおよびアクセス管理 (IAM) 名前によるロール LambdaInvokeOpenSearchMLCommonsRole のバックエンドの役割として ml_full_access 次のビデオで示すように、OpenSearch ダッシュボードのセキュリティ プラグインを使用してロールを設定します。 OpenSearch サービス統合ワークフローには、 LambdaInvokeOpenSearchMLCommonsRole デフォルトでは、OpenSearch Service ドメインと SageMaker にデプロイされたモデルの間のコネクタを作成する IAM ロール。 OpenSearch Service コンソール統合でカスタム IAM ロールを使用する場合は、カスタム ロールがバックエンド ロールとしてマップされていることを確認してください。 ml_full_access テンプレートをデプロイする前に権限を付与します。

AWS CloudFormation を使用してモデルをデプロイする

次のビデオは、OpenSearch Service コンソールを使用して Amazon SageMaker に数分以内にモデルをデプロイし、AI コネクタ経由でモデル ID を生成する手順を示しています。最初のステップは選択することです インテグレーション OpenSearch Service AWS コンソールのナビゲーション ペインで、利用可能な統合のリストにルーティングされます。統合は UI を通じて設定され、必要な入力を求めるプロンプトが表示されます。

統合を設定するには、OpenSearch Service ドメイン エンドポイントを指定し、モデル接続を一意に識別するためのモデル名を指定するだけです。デフォルトでは、テンプレートは Hugging Face 文変換モデルをデプロイします。 djl://ai.djl.huggingface.pytorch/sentence-transformers/all-MiniLM-L6-v2.

選ぶとき スタックを作成にルーティングされます。 AWS CloudFormation コンソール。 CloudFormation テンプレートは、次の図で詳しく説明されているアーキテクチャをデプロイします。

CloudFormation スタックは AWSラムダ モデルをデプロイするアプリケーション Amazon シンプル ストレージ サービス (Amazon S3)、コネクタを作成し、出力にモデル ID を生成します。その後、このモデル ID を使用してセマンティック インデックスを作成できます。

デフォルトの all-MiniLM-L6-v2 モデルが目的を満たさない場合は、モデルアーティファクトをアクセス可能な S3 オブジェクトとして提供することで、選択した任意のテキスト埋め込みモデルを、選択したモデルホスト (SageMaker または Amazon Bedrock) にデプロイできます。あるいは、次のいずれかを選択できます。 事前トレーニングされた言語モデル それを SageMaker にデプロイします。エンドポイントとモデルを設定する手順については、以下を参照してください。 利用可能な Amazon SageMaker イメージ.

SageMaker は、あらゆるユースケースで高性能かつ低コストの ML を実現する幅広いツールセットをまとめたフルマネージド サービスで、モデルのモニタリング、サーバーレス ホスティング、継続的なトレーニングとデプロイメントのためのワークフローの自動化などの主要な利点を提供します。 SageMaker を使用すると、テキスト埋め込みモデルのライフサイクルをホストおよび管理し、それらを使用して OpenSearch Service のセマンティック検索クエリを強化できます。接続すると、SageMaker はモデルをホストし、OpenSearch Service を使用して SageMaker からの推論結果に基づいてクエリを実行します。

OpenSearch ダッシュボードを通じてデプロイされたモデルを表示する

CloudFormation テンプレートが OpenSearch Service ドメインにモデルを正常にデプロイしたことを確認し、モデル ID を取得するには、OpenSearch Dashboards Dev Tools を通じて ML Commons REST GET API を使用できます。

GET _plugins REST API は、モデルのステータスも表示する追加の API を提供するようになりました。次のコマンドを使用すると、リモート モデルのステータスを確認できます。

GET _plugins/_ml/models/<modelid>

次のスクリーンショットに示すように、 DEPLOYED 応答内のステータスは、モデルが OpenSearch Service クラスターに正常にデプロイされたことを示します。

あるいは、OpenSearch Service ドメインにデプロイされたモデルを表示するには、 機械学習 OpenSearch ダッシュボードのページ。

このページには、モデル情報と、展開されているすべてのモデルのステータスがリストされます。

モデル ID を使用してニューラル パイプラインを作成する

モデルのステータスが次のいずれかを示している場合 DEPLOYED 開発ツールまたはグリーンで、 応答する OpenSearch ダッシュボードでは、モデル ID を使用してニューラル インジェスト パイプラインを構築できます。次の取り込みパイプラインは、ドメインの OpenSearch ダッシュボード開発ツールで実行されます。モデル ID を、ドメインにデプロイされたモデルに対して生成された一意の ID に置き換えてください。

PUT _ingest/pipeline/neural-pipeline
{
  "description": "Semantic Search for retail product catalog ",
  "processors" : [
    {
      "text_embedding": {
        "model_id": "sfG4zosBIsICJFsINo3X",
        "field_map": {
           "description": "desc_v",
           "name": "name_v"
        }
      }
    }
  ]
}

ニューラル パイプラインをデフォルトのパイプラインとして使用してセマンティック検索インデックスを作成する

これで、前のステップで作成した新しいニューラル パイプラインを使用するように構成されたデフォルトのパイプラインを使用してインデックス マッピングを定義できるようになりました。ベクトル フィールドが次のように宣言されていることを確認します。 knn_vector 寸法は SageMaker にデプロイされるモデルに適切です。 SageMaker に all-MiniLM-L6-v2 モデルをデプロイするためのデフォルト設定を保持している場合は、次の設定をそのままにして、Dev Tools でコマンドを実行します。

PUT semantic_demostore
{
  "settings": {
    "index.knn": true,  
    "default_pipeline": "neural-pipeline",
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "desc_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "name_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "description": {
        "type": "text" 
      },
      "name": {
        "type": "text" 
      } 
    }
  }
}

サンプルドキュメントを取り込んでベクトルを生成する

このデモでは、 小売デモストア製品カタログのサンプル 新しい semantic_demostore 索引。ユーザー名、パスワード、およびドメイン エンドポイントをドメイン情報に置き換え、生データを OpenSearch Service に取り込みます。

curl -XPOST -u 'username:password' 'https://domain-end-point/_bulk' --data-binary @semantic_demostore.json -H 'Content-Type: application/json'

新しい semantic_demostore インデックスを検証する

データセットを OpenSearch サービス ドメインに取り込んだので、すべてのフィールドをフェッチする単純な検索を使用して、必要なベクトルが生成されているかどうかを検証します。フィールドが次のように定義されているかどうかを検証します。 knn_vectors 必要なベクトルを持っています。

検索結果の比較ツールを使用して、ニューラル検索を活用した字句検索と意味検索を比較します。

  検索結果比較ツール OpenSearch ダッシュボードでは、実稼働ワークロードで使用できます。に移動できます。 検索結果を比較する ページにアクセスし、以前に生成されたモデル ID を使用するように構成された字句検索とニューラル検索の間でクエリ結果を比較します。

クリーンアップ

この投稿の手順に従って CloudFormation スタックを削除することで、作成したリソースを削除できます。これにより、SageMaker にデプロイされたモデルを含む Lambda リソースと S3 バケットが削除されます。次の手順を実行します。

  1. AWS CloudFormation コンソールで、スタックの詳細ページに移動します。
  2. 選択する 削除.

  1. 選択する 削除 確認します。

スタック削除の進行状況は、AWS CloudFormation コンソールで監視できます。

CloudFormation スタックを削除しても、SageMaker ドメインにデプロイされたモデルと作成された AI/ML コネクタは削除されないことに注意してください。これは、これらのモデルとコネクタをドメイン内の複数のインデックスに関連付けることができるためです。モデルとその関連コネクタを具体的に削除するには、次のスクリーンショットに示すようにモデル API を使用します。

まず、 undeploy OpenSearch Service ドメイン メモリからのモデル:

POST /_plugins/_ml/models/<model_id>/_undeploy

その後、モデル インデックスからモデルを削除できます。

DELETE /_plugins/_ml/models/<model_id>

最後に、コネクタ インデックスからコネクタを削除します。

DELETE /_plugins/_ml/connectors/<connector_id>

まとめ

この投稿では、SageMaker でモデルをデプロイし、OpenSearch Service コンソールを使用して AI/ML コネクタを作成し、ニューラル検索インデックスを構築する方法を学びました。 OpenSearch Service で AI/ML コネクタを構成できる機能により、外部モデルへの統合がネイティブになるため、ベクター ハイドレーション プロセスが簡素化されます。ニューラル インジェスト パイプラインとニューラル検索を使用すると、ニューラル検索インデックスを数分で作成できます。ニューラル検索では、モデル ID を使用して、取り込みと検索中にオンザフライでベクトル埋め込みを生成します。

これらの AI/ML コネクタの詳細については、以下を参照してください。 Amazon OpenSearch Service AWS サービス用 AI コネクタ, セマンティック検索のための AWS CloudFormation テンプレートの統合, サードパーティの ML プラットフォーム用のコネクタの作成.


著者について

アルナ・ゴビンダラジュ Amazon OpenSearch スペシャリスト ソリューション アーキテクトであり、多くの商用およびオープンソースの検索エンジンと協力してきました。彼女は検索、関連性、ユーザー エクスペリエンスに情熱を注いでいます。エンドユーザーのシグナルと検索エンジンの動作を関連付けることに関する彼女の専門知識は、多くの顧客の検索エクスペリエンスを向上させるのに役立ちました。

ダグニー・ブラウン AWS のプリンシパルプロダクトマネージャーで、OpenSearch に重点を置いています。

タイムスタンプ:

より多くの AWSビッグデータ