目的
- 当初は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.) | 検索結果にドキュメントIDやメタデータを付与し、回答に出典として含められる (AWS ドキュメント) |
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) | 結果メタデータにファイルURI(GCSパス)を含められ、ウィジェットやAPIレスポンスでリンク表示可能 (Google Cloud) |
Azure | Azure AI Search | Azure AI Search | OpenAI 埋め込みモデル(text-embedding-ada-003 等) |
Azure OpenAI のGPTシリーズ | Azure Blob StorageにPDFをアップロード後、Cognitive Searchでインデックス (Azure) | インデックスフィールド(ファイル名やBlob URL)を回答に含めて、リンクとして表示できる (Azure) |
Vertex AI Search
Vertex AI Search は、企業が保有する様々なデータ(ウェブサイト、ドキュメント、データベースなど)に対して、Google検索のような高度な検索機能と、生成AIによるインテリジェントな回答生成機能を簡単に構築できるフルマネージドサービスです。
機能
- 自社データからの検索: PDF、HTML、ドキュメント、ウェブサイト、構造化データ(BigQueryなど)といった多様な企業内データソースを横断して検索対象にできます。
- 自然言語での検索: ユーザーが日常会話のような自然な言葉で質問やキーワードを入力すると、関連性の高い情報を探し出します。
- 生成AIによる回答・要約: 検索結果を単にリスト表示するだけでなく、それらの情報に基づいて直接的な回答を生成したり、内容を要約して提示したりできます。
要するにPDFとかHTMLをぶち込んだらそれを元に、検索やRAGでの解答をよしなにしてくれるサービス
AI Applications
これらを簡単に構築するマネージド・サービスとして AI Applications
がある(Vertex AI Searchを基盤としたマネージドサービスと考えて良い)
<!-- 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" />
紐つけたCloud StorageにPDFをアップロードして、コンソールでポチポチするだけで簡単にRAGシステムを構築できる
上記コードを貼り付けるだけで、サクッと検索ウィジェットを自分のサイトに置くことができる
もちろんAPI化して、自分でプログラム的に制御することも可能
検索のみの search
メソッドとGeminiと連携して解答してくれる answer
メソッドが用意されている
検索結果を取得する | AI Applications | Google Cloud
問題点
御存知の通り、Googleは頻繁にサービスには快適変更を加える上に、バンバン廃止してくる
生成AI関連は各社スピードが早いということもあり、既に名前の変更やらサービスの破壊的変更が相次いでいる(Vertex AIとGemini APIの2つがあることからも色々察してしまう)
ということで、他のベンダーで同様のマネージドサービスがないか調べる
各社とも、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
ChatGPTにかけてもまだオフチョベット感が否めないので簡単にまとめると
S3とかにアップロードしたPDFやWordなどのデータを元にRAGで答えてくれるシステム。S3にアップロードされた文書をChunking/Embeddingすることでデータ基盤を作成できる。 AWS Berock
で動くLLMでRAGが可能。
- RAGデータベースは
AWS OpenSearch
が推奨される - Embedding Modelは AWS独自モデルとCohereのモデルが使える
- 回答するLLMは
Claude
ちなみに御存知の通り OpenSearch
はElasticsearchをベースにAWSがフォークしたもの
元々は全文検索サービスだが、近年ではベクトル検索システムも使える(内部ざっくり見た感じ、また別のVectorDBがあるわけではなく、Elasticsearchなどのベクトル検索と近いシステムっぽい)
実際のアプリケーション
基本的には Amazon Bedrock (Knowledge)
と OpenSearch
についてはフルマネージドなのであまり気にしなくて良さそう
Vector Database
使えるベクトルデータベースたち
基本的には OpenSearch Serverless
が推奨される
- Amazon OpenSearch Serverless
- Amazon Aurora PostgreSQL-Compatible Edition
- Pinecone
- Redis Enterprise Cloud
- MongoDB Atlas
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と連携とかもありそうだけど今のところはなさそう