旧称 Vertex AI の LlamaIndex、最新の Knowledge Engine である RAG Engine は、コンテキスト拡張大規模言語モデル(LLM)アプリケーションを開発するためのデータ フレームワークです。コンテキストの拡張は、LLM をデータに適用するときに行われます。これは、検索拡張生成(RAG)を実装します。
LLM の一般的な問題は、プライベート データ(組織のデータ)を理解していないことです。RAG Engine を使用すると、追加の非公開情報で LLM のコンテキストを拡充できます。これは、モデルがハルシネーションを低減し、質問に正確に答えることができるためです。
追加の情報源と LLM が持つ既存の知識を組み合わせることで、より優れたコンテキストが提供されます。クエリとともにコンテキストが改善されることで、LLM のレスポンスの品質が向上します。
RAG Engine を理解するうえで、次のコンセプトは重要です。これらのコンセプトは、検索拡張生成(RAG)プロセスの順序で記載されています。
データの取り込み: さまざまなデータソースからデータを取得します。たとえば、ローカル ファイル、Cloud Storage、Google ドライブが該当します。
データ変換: インデックス登録の準備としてデータを変換します。たとえば、データはチャンクに分割されます。
エンベディング: 単語やテキストの断片の数値表現。これらの数値は、テキストの意味論的意味とコンテキストを捉えています。類似または関連する単語やテキストは、エンベディングが類似する傾向があります。つまり、高次元ベクトル空間内で近接します。
データのインデックス登録: RAG Engine は、コーパスと呼ばれるインデックスを作成します。インデックスは、検索用に最適化されるようにナレッジベースを構造化します。たとえば、インデックスは、膨大な参考書の詳細な目次のようなものです。
検索: ユーザーが質問をするか、プロンプトを指定すると、RAG Engine の検索コンポーネントがナレッジベースを検索し、クエリに関連する情報を探します。
生成: 取得した情報は、生成 AI モデルが事実に基づいた関連性の高いレスポンスを生成するためのガイドとして、元のユーザークエリに追加されるコンテキストになります。
RAG をサポートする生成 AI モデル
このセクションでは、RAG をサポートするモデルについて説明します。
Gemini モデル
次の表に、RAG Engine をサポートする Gemini モデルとそれらのバージョンを示します。
モデル | バージョン |
---|---|
Gemini 1.5 Flash | gemini-1.5-flash-002 gemini-1.5-flash-001 |
Gemini 1.5 Pro | gemini-1.5-pro-002 gemini-1.5-pro-001 |
Gemini 1.0 Pro | gemini-1.0-pro-001 gemini-1.0-pro-002 |
Gemini 1.0 Pro Vision | gemini-1.0-pro-vision-001 |
Gemini | gemini-experimental |
セルフデプロイ モデル
RAG Engine は、Model Garden のすべてのモデルをサポートしています。
独自にデプロイしたオープンモデル エンドポイントで RAG Engine を使用します。
# Create a model instance with your self-deployed open model endpoint
rag_model = GenerativeModel(
"projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID",
tools=[rag_retrieval_tool]
)
Vertex AI のマネージド API を使用したモデル
Vertex AI で RAG Engine をサポートするマネージド API を使用するモデルには、次のようなものがあります。
次のコードサンプルは、Gemini GenerateContent
API を使用して生成モデル インスタンスを作成する方法を示しています。モデル ID /publisher/meta/models/llama-3.1-405B-instruct-maas
は、モデルカードにあります。
# Create a model instance with Llama 3.1 MaaS endpoint
rag_model = GenerativeModel(
"projects/PROJECT_ID/locations/REGION/publisher/meta/models/llama-3.1-405B-instruct-maas",
tools=[rag_retrieval_tool]
)
次のコードサンプルは、OpenAI 互換の ChatCompletions
API を使用してモデル レスポンスを生成する方法を示しています。
# Generate a response with Llama 3.1 MaaS endpoint
response = client.chat.completions.create(
model="meta/llama-3.1-405b-instruct-maas",
messages=[{"role": "user", "content": "your-query"}],
extra_body={
"extra_body": {
"google": {
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": rag_corpus_resource
},
"similarity_top_k": 10
}
}
}
},
)
埋め込みモデル
エンベディング モデルは、コーパスの作成と、レスポンスの生成時の検索と取得に使用されます。このセクションでは、サポートされているエンベディング モデルを示します。
textembedding-gecko@003
textembedding-gecko-multilingual@001
text-embedding-004
(デフォルト)text-multilingual-embedding-002
textembedding-gecko@002
(ファインチューニングされたバージョンのみ)textembedding-gecko@001
(ファインチューニングされたバージョンのみ)
エンベディング モデルのチューニングの詳細については、テキスト エンベディングをチューニングするをご覧ください。
次のオープン エンベディング モデルもサポートされています。Model Garden で確認できます。
e5-base-v2
e5-large-v2
e5-small-v2
multilingual-e5-large
multilingual-e5-small
RAG でサポートされているドキュメントの種類
テキスト ドキュメントのみがサポートされています。次の表に、ファイルの種類とファイルサイズの上限を示します。
ファイル形式 | ファイルサイズの上限 |
---|---|
Google ドキュメント | Google Workspace からエクスポートする場合: 10 MB |
Google 図形描画 | Google Workspace からエクスポートする場合: 10 MB |
Google スライド | Google Workspace からエクスポートする場合: 10 MB |
HTML ファイル | 10 MB |
JSON ファイル | 1 MB |
マークダウン ファイル | 10 MB |
Microsoft PowerPoint スライド(PPTX ファイル) | 10 MB |
Microsoft Word ドキュメント(DOCX ファイル) | 50 MB |
PDF ファイル | 50 MB |
テキスト ファイル | 10 MB |
RAG Engine を他のドキュメント タイプで使用することは可能ですが、生成されるレスポンスの品質が低下する可能性があります。
RAG でサポートされるデータソース
サポートされているデータソースは次のとおりです。
- ローカル ファイルをアップロードする:
upload_file
(最大 25 MB)を使用した単一ファイルのアップロード。これは同期呼び出しです。 - Cloud Storage: Cloud Storage からファイルをインポートします。
Google ドライブ: Google ドライブからディレクトリをインポートします。
サービス アカウントには、ファイルをインポートするための適切な権限が付与されている必要があります。それ以外の場合は、ファイルはインポートされず、エラー メッセージも表示されません。ファイルサイズの上限の詳細については、サポートされているドキュメント タイプをご覧ください。
認証と権限付与を行うには、次の手順を行います。
- Google Cloud プロジェクトの IAM ページに移動します。
- [Google 提供のロール付与を含む] を選択します。
- Vertex AI RAG データサービス エージェントのサービス アカウントを検索します。
- ドライブのフォルダで [共有] をクリックし、サービス アカウントと共有します。
- サービス アカウントに Google ドライブのフォルダまたはファイルに対する
Viewer
権限を付与します。Google ドライブのリソース ID は、ウェブ URL で確認できます。
Slack: データコネクタを使用して Slack からファイルをインポートします。
Jira: データコネクタを使用して Jira からファイルをインポートします。
詳細については、RAG API リファレンスをご覧ください。
RAG 変換を微調整する
ドキュメントが取り込まれると、RAG Engine が一連の変換を実行して、インデックス登録用のデータを準備します。次のパラメータを使用して、ユースケースを制御できます。
パラメータ | 説明 |
---|---|
chunk_size |
ドキュメントがインデックスに取り込まれると、チャンクに分割されます。(トークン内の)chunk_size パラメータはチャンクのサイズを指定します。デフォルトのチャンクサイズは 1,024 トークンです。 |
chunk_overlap |
デフォルトでは、ドキュメントは一定量の重複があるチャンクに分割され、関連性と検索品質が向上します。デフォルトのチャンク オーバーラップは 200 トークンです。 |
チャンクサイズが小さいほど、エンベディングの精度が高くなります。チャンクサイズを大きくすると、エンベディングはより一般的な内容になりますが、特定の詳細情報が欠落する可能性があります。
たとえば、1,000 語ではなく 200 語を同じディメンションのエンベディング配列に変換すると、詳細が失われる可能性があります。これは、モデルに関するコンテキストの長さの上限を考慮する際の良い例でもあります。テキストの大きなチャンクは、小さなウィンドウ モデルに収まらない可能性があります。
RAG の割り当て
RAG Engine を使用して検索拡張生成(RAG)を実行するサービスごとに、次の割り当てが適用されます。割り当ては 1 分あたりのリクエスト数(RPM)で測定されます。サービス | 割り当て | 指標 |
---|---|---|
RAG Engine データ マネジメント API | 60 RPM | VertexRagDataService requests per minute per region |
RetrievalContexts API |
1,500 RPM | VertexRagService retrieve requests per minute per region |
base_model: textembedding-gecko |
1,500 RPM | Online prediction requests per base model per minute per region per base_model 指定できる追加のフィルタは base_model: textembedding-gecko です。 |
サービス | 上限 | 指標 |
---|---|---|
同時実行される ImportRagFiles リクエスト |
3 RPM | VertexRagService concurrent import requests per region |
ImportRagFiles リクエストあたりの最大ファイル数 |
10,000 | VertexRagService import rag files requests per region |
その他のレート制限と割り当てについては、Vertex AI の生成 AI のレート制限をご覧ください。
取得パラメータ
次の表に、取得パラメータを示します。
パラメータ | 説明 |
---|---|
similarity_top_k |
取得するコンテキストの最大数を制御します。 |
vector_distance_threshold |
距離がしきい値より小さいコンテキストのみが考慮されます。 |
RAG ナレッジベース(コーパス)を管理する
このセクションでは、インデックス管理とファイル管理を実行して、RAG タスクのコーパスを管理する方法について説明します。
コーパス管理
コーパス(インデックスとも呼ばれます)は、ドキュメントまたは情報源の集合です。コーパスをクエリして、レスポンスの生成に関連するコンテキストを取得できます。コーパスを初めて作成する場合は、プロセスに要する時間が若干長くなる可能性があります。
次のコーパス オペレーションがサポートされています。
オペレーション | 説明 | パラメータ | 例 |
---|---|---|---|
RAG コーパスを作成します。 | ドキュメントをインポートまたはアップロードするためのインデックスを作成します。 | パラメータを作成する | サンプルの作成 |
RAG コーパスを更新する。 | ドキュメントをインポートまたはアップロードするために、以前に作成したインデックスを更新します。 | パラメータを更新する | 更新例 |
RAG コーパスの一覧を取得します。 | すべてのインデックスを一覧表示します。 | パラメータを一覧表示する | リストの例 |
RAG コーパスを取得します。 | インデックスを記述するメタデータを取得します。 | パラメータを取得する | サンプルを取得する |
RAG コーパスを削除します。 | インデックスを削除します。 | パラメータを削除する | 削除例 |
コーパスに対する同時オペレーションはサポートされていません。詳細については、RAG API リファレンスをご覧ください。
ファイル管理
次のファイル オペレーションがサポートされています。
オペレーション | 説明 | パラメータ | 例 |
---|---|---|---|
RAG ファイルをアップロードします。 | より正確なレスポンスを生成するために、LLM にコンテキストを提供するための追加情報を含むファイルをローカル ストレージからアップロードします。 | アップロード パラメータ | アップロード例 |
RAG ファイルをインポートします。 | 他のストレージからファイルセットを保存先にインポートします。 | インポート パラメータ | インポート例 |
RAG ファイルを取得します。 | LLM で使用する RAG ファイルの詳細を取得します。 | パラメータを取得する | サンプルを取得する |
RAG ファイルを削除する。 | より正確なレスポンスを生成するために、LLM にコンテキストを提供するための追加情報を含むファイルをローカル ストレージからアップロードします。 | パラメータを削除する | 削除例 |
詳細については、RAG API リファレンスをご覧ください。
次のステップ
- ファイルサイズの上限については、サポートされているドキュメント タイプをご覧ください。
- RAG Engine に関連する割り当てについては、RAG Engine の割り当てをご覧ください。
- パラメータのカスタマイズについては、取得パラメータをご覧ください。
- RAG API の詳細については、RAG Engine API をご覧ください。
- グラウンディングの詳細を確認する。グラウンディングの概要をご覧ください。
- グラウンディングと RAG の相違点について詳しくは、RAG を使用してレスポンスをグラウンディングするをご覧ください。
- Vertex AI の生成 AI の詳細については、Vertex AI の生成 AI の概要をご覧ください。
- RAG アーキテクチャの詳細については、Vertex AI を使用した RAG 対応生成 AI アプリケーション用インフラストラクチャをご覧ください。