学習メモ : Amazon OpenSearch Service

:::note info
本記事は ChatGPT o3 と筆者の編集で作成しました。
:::

# Amazon OpenSearch Service

## 概要
- **Amazon OpenSearch Service**（旧称 Amazon Elasticsearch Service）は、オープンソース検索エンジン *OpenSearch*／*Elasticsearch OSS* を AWS 上でフルマネージド提供するサービス。全文検索、ログ分析、アプリ監視、オブザーバビリティ、生成 AI 向け検索基盤など幅広いユースケースをサポート。

## 特徴
- **フルマネージド運用**：ノードのプロビジョニング、ソフトウェア更新、障害復旧、スケーリングを AWS が自動化。
- **高い拡張性と可用性**：ペタバイト級データ、マルチ AZ クラスタ、クロスリージョンレプリケーション、自動スナップショット。
- **多層ストレージ**：Hot → Warm → UltraWarm → Cold → Snapshot と階層化し、性能とコストを最適化。
- **セキュリティ**：IAM/Federated 認証、VPC エンドポイント、暗号化 (転送・保存)、フィールド・ドキュメント・インデックスレベルアクセス制御。
- **ベクトル検索 (k‑NN) 対応**  
  - `knn_vector` 型により数千次元までのベクトルを格納し、**コサイン類似度**や **L2 距離**で近傍検索。  
  - エンジン：**HNSW**（高速グラフ）、**Faiss IVFFlat/Hierarchical Navigable Small World**、**Lucene** ベース ANN などを選択可能。  
  - **フィルタ付き ANN** にも対応し、メタデータ条件で絞り込みながらベクトル近傍を検索可能。  
  - **OpenSearch Serverless Vector Search Collection** を使えば、キャパシティ管理なしでオンデマンドにスケール。  
  - ベクトル埋め込みは Amazon Bedrock Titan Embeddings などで生成し、**RAG (Retrieval‑Augmented Generation)** のデータストアとして利用できる。  
  - **1,000 億件・5,000 次元級**でもミリ秒オーダー検索を実現した社内検証事例が公開されている。
- **機械学習統合**：OpenSearch ML フレームワークで異常検知・分類モデルを簡単にデプロイ。
- **可観測性**：OpenSearch Dashboards、CloudWatch Logs/Metric、AWS Distro for OpenTelemetry と連携。

## メリット
- 運用負荷ゼロに近いベクトルデータベースを迅速に構築でき、全文検索とベクトル検索を **同一 API** でハイブリッド実行可能。
- **生成 AI/RAG** アーキテクチャを AWS ネイティブサービスだけで完結できるため、権限制御やネットワーク設計がシンプル。
- ストレージ階層とサーバーレス課金により、長期間保持が必要なログ・ドキュメントを低コストで管理可能。

## デメリット
- インスタンス選定やシャード設計を誤るとコストが高騰しやすい。試行時は Auto‑Tune とスケールテストが不可欠。
- 高次元ベクトルはメモリ消費が大きく、Hot ノード容量が先にボトルネックとなることがある。
- ソフトウエアバージョンは AWS がサポートする範囲に限定され、最新 OpenSearch 機能を即時利用できない場合がある。

## 類似サービスとの比較
| 項目 | Amazon OpenSearch Service | OpenSearch Serverless | 自己管理 OpenSearch | Elastic Cloud |
| ---- | ------------------------ | --------------------- | ------------------ | ------------- |
| 管理者作業 | ほぼ不要 | 完全不要 | 全て自己責任 | 低 |
| ベクトル検索 | k‑NN / ANN | k‑NN / ANN | k‑NN / ANN | ES Vector DB |
| 課金形態 | インスタンス+ストレージ | 容量ユニット従量課金 | EC2/EBS | リソースベース |
| RAG 連携 | Bedrock/Knowledge Bases | Bedrock 直接統合 | カスタム構築 | LangChain 等 |

## 利用する際の選定理由
- AWS 上でセキュアに **全文 + ベクトル + 構造化** データを横断検索したい。
- 生成 AI チャットボットや FAQ 検索を **Bedrock + OpenSearch** で短期間に構築したい。
- ログ分析・APM と AI 検索を 1 つの統合プラットフォームで運用したい。

## 活用事例
- **コネヒト**：生理・妊活コミュニティ検索に Titan Embeddings → OpenSearch k‑NN を採用し、キーワード誤表記のヒット率を大幅改善。
- **Atlassian**：Jira/Confluence 検索基盤を OpenSearch Service に移行。毎日 3,500 万検索をベクトル＋テキストで処理。
- **Pinterest**：画像レコメンドにベクトル検索を利用し、ユーザーエンゲージメントを向上。

## 難しい用語解説
| 用語 | 説明 |
| ---- | ---- |
| **k‑NN (k‑Nearest Neighbors)** | ベクトル空間で最も近い *k* 個の点を探索するアルゴリズム。 |
| **HNSW** | 高速な近似最近傍探索を行うグラフベース手法。高精度と高速性を両立。 |
| **Faiss** | Meta が OSS 公開したベクトル類似検索ライブラリ。IVF, HNSW など多数実装。 |
| **RAG (Retrieval‑Augmented Generation)** | 検索で取得した外部知識を生成 AI に与えて回答精度を向上させる手法。 |
| **Vector Search Collection** | OpenSearch Serverless のコレクション種別。キャパシティ管理が不要でスケーラブルなベクトル DB を提供。 |

## 参考URL
https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html
https://docs.aws.amazon.com/opensearch-service/latest/developerguide/knn.html
https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html
https://aws.amazon.com/jp/blogs/news/genai-case-study-connehito/
https://docs.opensearch.org/docs/latest/vector-search/vector-search-techniques/approximate-knn/
https://aws.amazon.com/awstv/watch/b1fe8892ed2/