はじめに
BedrockでRAGの構成を実現する際のベクトルDBとしてOpenSearch Serverlessが選択肢としてあります。あまり詳細把握できていなかったので簡単にですがまとめました。prefixはaoss:
というものになります。
OpenSearch Service
-
OpenSearch
- コミュニティ主導・Apache2.0ライセンスのオープンソース検索・分析スイート
- データストア、検索エンジンの
OpenSearch
、可視化、UIツールのOpenSearch Dashboards
から構成 - セキュリティ、パフォーマンス分析、機械学習など様々なプラグインによる機能拡張が可能
- ユースケース
- 全文検索
- ログ分析
-
ドキュメント
- JSON形式で表現される単一のデータ
- 一般的なDBのレコードに相当
-
OpenSearchの課題
- 設計時の課題
- データサイズ、シャード数、リクエストレートなどをベースにクラスターのサイジングやインデックスの設計が必要
- 運用時の課題
- ストレージはノードに紐づいているため、格納データの増加に伴ってノードの増強・増設が必要
- スケールはB/Gデプロイを伴うため実行コストが高い
- 設計時の課題
OpenSearch Serverless
- Serverlessアーキテクチャによる運用の改善
- インでキシング、検索、ストレージワークロードを分離。インデキシングと検索ノードは複数のAZに分散配置され、トラフィックに応じて個別にスケール
- 実データはS3に格納されるが、検索パフォーマンスを高めるためにノードのボリュームにもキャッシュされる
- インデックス内のデータのライフサイクルは、サービス側で管理されている
Collection
- 概要
- OpenSearch Serviceにおけるドメイン(クラスター)に相当する、論理的なインデックスの集合
- API、ダッシュボードエンドポイントはコレクションごとに発行される
- 種類
- SEARCH collection
- コンテンツ検索や商品検索などでの利用を想定
- ほぼ全てのデータはノードにアタッチされたホットストレージに格納
- TIME-SERIES collection
- モニタリングやリアルタイム分析等で大規模なデータを扱うケースを想定
- SEARCH collection
- 利用可能なクライアント
- OpenSearch Client Library
- Logstash
- Fluentd
- Fluletbit
- Firehose
OpenSearch Dashboards
- 概要
- 可視化、ログ検索用途で利用可能
- Discover, Dashboard, Visualize, DevToolsの基本機能提供のみ
OCU(OpenSearch Capacity Unit)キャパシティ管理
- 概要
- 検索とインデキシングそれぞれの処理に対して、個別に割り当てられるキャパシティユニット
- 1 OCU (1 vCPU, 6GiB RAM, 120 GiB Disk)
- 最初のコレクションが作成されると、アカウントごと(厳密にはリージョンごと)に、検索とインデキシングに2OCUずつ、計4OCUが割り当てられる
- 処理要求や負荷の増加に応じて自動的にOCUが増加する (スケールアウト)
- ワークロードの有無にかかわらず、割り当てOCUに応じた時間課金となる
- OCUは同一リージョンであれば複数コレクション間で共有
セキュリティ
-
認証
- ダッシュボードへのログインは、IAMユーザーの認証情報、もしくはSAMLを利用可能。複数のIdPを利用可能
- APIアクセスでは、IAMユーザーもしくはIAMロールのクレデンシャルが必要
-
データアクセスポリシー
- IAMユーザー、IAMロール、SAML認証時のユーザーIDまたはグループに対してコレクション・インデックスに対する操作を許可するポリシー
- 操作の許可単位はパーミッションと呼ばれる権限セットに準ずる
- クロスアカウントアクセスは未サポート
-
ネットワークポリシー
- コレクションへのアクセス経路を制御する機能。単一のポリシーを複数コレクションに一括適用することも可能
- ポリシータイプ
- Public
- VPC
- アクセス制御の対象
- APIエンドポイント
- OpenSearch Dashboards
バックアップ
- 現状ではスナップショットがサポートされていないため、論理的なバックアップ&リストアの仕組みが必要
- Logstash等の対応クライアントでServerlessからデータを抽出し、S3に配置するといったアプローチが考えられるが、実際のところコレクションからのデータ取得はコストと時間がかかる
- 検索アプリケーションであればS3やDBなどにマスターデータを保管しておく、時系列データ分析であればOpenSearch Serverlessコレクションとは別のデータストアに並行でデータを保管しておくなどの対処が現実的
制約
- クロスアカウントアクセスは未サポート
- 別アカウントの環境からアクセスする際は、リソース保持アカウントの認証保持を使用する必要あり
- また、Publicアクセスがネットワークポリシーで許可されている必要あり
- インデックスのリフレッシュ間隔は、リクエストサイズに応じて10-30sとなる。登録したドキュメントが即検索可能となることが要求されるユースケースは不向き