各ベンダー（GCP, AWS, Azure）でのRAGマネージドサービスについて

## 目的

- 当初はGoogle Cloudの **`Vertex AI Search(AI Applications)`** でRAGしていた
- Googleは頻回に破壊的変更を行うため本番運用が怖い
- AWSやAzureで同様のマネージドRAGサービスがないか調査

## 結論
先に結論。この表見ればだいたい分かる。

| クラウド | サービス名 | ベクターストア | 埋め込みモデル | LLM | PDF 直接アップロード | PDF リンク提示 |
| --- | --- | --- | --- | --- | --- | --- |
| **AWS** | **Amazon Bedrock Knowledge Bases** | **Amazon OpenSearch Serverless** | AWS独自モデル: `Titan` もしくは `Cohere` | AWS独自モデル: `Titan` もしくは `Claude` | Amazon S3 バケットをデータソースとして直接クロール可能 ([Amazon Web Services, Inc.](https://aws.amazon.com/bedrock/knowledge-bases/?utm_source=chatgpt.com)) | 検索結果にドキュメントIDやメタデータを付与し、回答に出典として含められる ([AWS ドキュメント](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html?utm_source=chatgpt.com)) |
| **Google Cloud** | **Vertex AI Search (AI Applications)** | **Vertex AI Vector Search** | Vertex AI Embeddings API（ `text-multilingual-embedding-002` 等）  | Geminiシリーズ | Cloud Storage（GCS）にPDFをアップロードし、Vertex AI Searchでインポート・インデックス化 ([Google Cloud](https://cloud.google.com/generative-ai-app-builder/docs/builder-apis)) | 結果メタデータにファイルURI（GCSパス）を含められ、ウィジェットやAPIレスポンスでリンク表示可能 ([Google Cloud](https://cloud.google.com/generative-ai-app-builder/docs/builder-apis)) |
| **Azure** | **Azure AI　Search** | **Azure AI Search** | OpenAI 埋め込みモデル（`text-embedding-ada-003` 等） | Azure OpenAI のGPTシリーズ | Azure Blob StorageにPDFをアップロード後、Cognitive Searchでインデックス ([Azure](https://azure.microsoft.com/en-us/products/ai-services/ai-search?utm_source=chatgpt.com)) | インデックスフィールド（ファイル名やBlob URL）を回答に含めて、リンクとして表示できる ([Azure](https://azure.microsoft.com/en-us/products/ai-services/ai-search?utm_source=chatgpt.com)) |


## Vertex AI Search

> **Vertex AI Search** は、**企業が保有する様々なデータ（ウェブサイト、ドキュメント、データベースなど）に対して、Google検索のような高度な検索機能と、生成AIによるインテリジェントな回答生成機能を簡単に構築できる**フルマネージドサービスです。
> 

### 機能

- **自社データからの検索:** PDF、HTML、ドキュメント、ウェブサイト、構造化データ（BigQueryなど）といった多様な企業内データソースを横断して検索対象にできます。
- **自然言語での検索:** ユーザーが日常会話のような自然な言葉で質問やキーワードを入力すると、関連性の高い情報を探し出します。
- **生成AIによる回答・要約:** 検索結果を単にリスト表示するだけでなく、それらの情報に基づいて直接的な回答を生成したり、内容を要約して提示したりできます。

要するにPDFとかHTMLをぶち込んだらそれを元に、検索やRAGでの解答をよしなにしてくれるサービス

### AI Applications

これらを簡単に構築するマネージド・サービスとして `AI Applications` がある（Vertex AI Searchを基盤としたマネージドサービスと考えて良い）

```html
<!-- Widget JavaScript bundle -->
<script src="https://cloud.google.com/ai/gen-app-builder/client?hl=ja"></script>

<!-- Search widget element is not visible by default -->
<gen-search-widget
  configId="your_config_id"
  triggerId="searchWidgetTrigger">
</gen-search-widget>

<!-- Element that opens the widget on click. It does not have to be an input -->
<input placeholder="ここで検索" id="searchWidgetTrigger" />
```

![スクリーンショット_2025-05-09_12.35.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584851/582ba741-3959-43de-9d40-1898cbef5d06.png)


紐つけたCloud StorageにPDFをアップロードして、コンソールでポチポチするだけで簡単にRAGシステムを構築できる

上記コードを貼り付けるだけで、サクッと検索ウィジェットを自分のサイトに置くことができる

もちろんAPI化して、自分でプログラム的に制御することも可能

検索のみの `search` メソッドとGeminiと連携して解答してくれる `answer` メソッドが用意されている

[検索結果を取得する  |  AI Applications  |  Google Cloud](https://cloud.google.com/generative-ai-app-builder/docs/preview-search-results?hl=ja)

## 問題点

御存知の通り、Googleは頻繁にサービスには快適変更を加える上に、バンバン廃止してくる

生成AI関連は各社スピードが早いということもあり、既に名前の変更やらサービスの破壊的変更が相次いでいる（Vertex AIとGemini APIの２つがあることからも色々察してしまう）

ということで、他のベンダーで同様のマネージドサービスがないか調べる

各社とも、2023年末から2024年初頭にかけてこのあたりのRAGサービスの更新が活発

## AWS Bedrock Knowledge Base

> AWSの基盤モデルサービスであるAmazon Bedrockの機能拡張として、外部データソースを取り込んでLLMのプロンプトに関連情報を自動付加する**フルマネージドRAGシステム**
S3に置いたPDFやConfluence、SharePointなど各種データソースと連携し、自動で文書をクロール・テキスト分割し、ベクトル埋め込みを生成して指定のベクトルストアに格納する
開発者向けにはBedrock APIで検索＋回答生成を一度に行う `RetrieveAndGenerate` などが用意されておりLLMにはBedrock経由で提供されるTitanやAnthropic Claudeなど高性能モデルを利用できます
> 

[Knowledge bases for Amazon Bedrock - AWS Prescriptive Guidance](https://docs.aws.amazon.com/prescriptive-guidance/latest/retrieval-augmented-generation-options/rag-fully-managed-bedrock.html#:~:text=,to%20provide%20more%20contextual%20results)

ChatGPTにかけてもまだオフチョベット感が否めないので簡単にまとめると

S3とかにアップロードしたPDFやWordなどのデータを元にRAGで答えてくれるシステム。S3にアップロードされた文書をChunking/Embeddingすることでデータ基盤を作成できる。 `AWS Berock` で動くLLMでRAGが可能。

1. RAGデータベースは `AWS OpenSearch` が推奨される
2. Embedding Modelは AWS独自モデルとCohereのモデルが使える
3. 回答するLLMは `Claude`

![スクリーンショット_2025-05-09_12.58.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584851/6d43de01-354b-40ef-b608-685215457d4c.png)


ちなみに御存知の通り `OpenSearch` はElasticsearchをベースにAWSがフォークしたもの

元々は全文検索サービスだが、近年ではベクトル検索システムも使える（内部ざっくり見た感じ、また別のVectorDBがあるわけではなく、Elasticsearchなどのベクトル検索と近いシステムっぽい）

### 実際のアプリケーション

![ml-15933-archdiag-new2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584851/05195240-cd46-45fa-8e9a-cce617c3fe65.png)


基本的には `Amazon Bedrock (Knowledge)`  と `OpenSearch` についてはフルマネージドなのであまり気にしなくて良さそう

### Vector Database

使えるベクトルデータベースたち

基本的には `OpenSearch Serverless` が推奨される

- [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html)
- [Amazon Aurora PostgreSQL-Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)
- [Pinecone](https://docs.pinecone.io/docs/amazon-bedrock)
- [Redis Enterprise Cloud](https://docs.redis.com/latest/rc/cloud-integrations/aws-marketplace/aws-bedrock/)
- [MongoDB Atlas](https://dochub.mongodb.org/core/amazon-bedrock)

## Azure AI Search

AWSと同じようなサービス

裏側がほとんどOpenAI

Luceneベースの全文検索エンジンとのハイブリッドサーチも可能らしい（ただし日本語未対応？）

Luceneベースということはざっくりと、Elasticsearchとかと近しい感じかな

- Vector store: `AI search`
- Embedding Model: `OpenAI text-embedding-3-large`
- LLM: `OpenAI ChatGPT seriese`

## おわりに
以上、各ベンダーのRAGサービスの調べでした

ざっくりと、Azure = OpenAI, AWS = Claude(一部自前モデル)、Google Cloud = Geminiという元から知ってる図式が増強された感じ

ちなみに個人的にはRAGまたはベクトル検索するときは`Qdrant`などを立ち上げて自前ですることが多い

もともとElasticsearchでもHybrid検索していたので、今回調べた限りだと各ベンダーの使い勝手としてはこちらのほうが近そうという印象を受けた

Elasticsearch好きなんだけど、ちょっと最適化とかそのあたり難しんだよなというのと、ベクトル検索に向いてるかといえばちょっと微妙

というわけで、来年頃にはおそらく各社ともベクトル検索専用のDBと連携とかもありそうだけど今のところはなさそう