Amazon OpenSearch Serverless のベクトル検索を試してみた
概要
この記事では、Postmanを使用して、Amazon OpenSearch Serverlessのベクトル検索を試す手順を紹介しています。以下に記載された手順は、AWSの公式ドキュメントに基づいていますが、ドキュメントでは不明瞭な部分があるため、実際に試しながら得た知見を共有します。
前提条件
- AWSアカウントが作成済みであること
- IAMユーザーやIAMポリシーの設定ができること
- AWSクレデンシャルが取得済みであること
- Postmanを使用できること
IAMポリシーの設定
必要なIAMポリシーの設定は、ドキュメントにある通り、以下のとおりです。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"aoss:CreateCollection",
"aoss:ListCollections",
"aoss:BatchGetCollection",
"aoss:DeleteCollection",
"aoss:CreateAccessPolicy",
"aoss:ListAccessPolicies",
"aoss:UpdateAccessPolicy",
"aoss:CreateSecurityPolicy",
"iam:ListUsers",
"iam:ListRoles"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
使用するクレデンシャルに関連するIAMユーザーに上記ポリシーを付与します。
コレクションの作成
Amazon OpenSearchのコンソールにアクセスし、サーバレスでコレクションを作成します。
以下のとおりに項目を設定して、作成ボタンをクリックします。
コレクションの作成には、数分かかります。
データアクセスポリシーの設定
コレクションが作成されたら、データアクセスポリシーを設定します。コレクション作成の際に「セキュリティ」の項目で "簡単設定" を選択していると、自動で設定されたものが作成されていますが、追加で設定が必要です。この追加設定を行わなかった場合、後工程のPostmanでの認可処理がうまく動作しませんでした。
自動作成された設定を選択し、設定画面にアクセスします。
設定画面にある編集ボタンをクリックし、プリンシパルの設定を行います。
プリンシパルには、クレデンシャルに紐づいているIAMユーザーを選択します。設定したら、保存します。
以上で、OpenSearch側の設定は完了です。
エンドポイントのメモ
Postmanでリクエストを送るため、エンドポイントをメモしておきます。
Postmanの認証設定
PostmanからOpenSearchのエンドポイントにアクセスするために、認証設定を行います。
以下のように、IAMユーザーのクレデンシャルを設定します。
Postmanでリクエストを送る
以下の流れで、リクエストを送り、動作確認をします。
インデックスを作成する
- メソッド: PUT
- パス: /housing-index
{
"settings": {
"index.knn": true
},
"mappings": {
"properties": {
"housing-vector": {
"type": "knn_vector",
"dimension": 3
},
"title": {
"type": "text"
},
"price": {
"type": "long"
},
"location": {
"type": "geo_point"
}
}
}
}
ドキュメントを作成する
- メソッド: POST
- パス: /housing-index/_doc
{
"housing-vector": [
10,
20,
30
],
"title": "2 bedroom in downtown Seattle",
"price": "2800",
"location": "47.71, 122.00"
}
ドキュメントを検索する
- メソッド: GET
- パス: /housing-index/_search
{
"size": 5,
"query": {
"knn": {
"housing-vector": {
"vector": [
10,
20,
30
],
"k": 5
}
}
}
}
以上です。
必要があれば、色々なリクエストを送って、動作を確認してください。
Discussion