RAG 用 Vertex AI の LlamaIndex は、コンテキスト拡張大規模言語モデル(LLM)アプリケーションを開発するためのデータ フレームワークです。コンテキストの拡張は、LLM をデータに適用するときに行われます。これは、検索拡張生成(RAG)を実装します。
LLM の一般的な問題は、プライベート データ(組織のデータ)を理解していないことです。RAG 用 Vertex AI の LlamaIndex を使用すると、追加の非公開情報で LLM のコンテキストを拡充できます。これは、モデルがハルシネーションを低減し、質問に正確に答えることができるためです。
追加の情報源と LLM が持つ既存の知識を組み合わせることで、より優れたコンテキストが提供されます。クエリとともにコンテキストが改善されることで、LLM のレスポンスの品質が向上します。
RAG 用 Vertex AI の LlamaIndex を理解するうえで、次のコンセプトは重要です。これらのコンセプトは、検索拡張生成(RAG)プロセスの順序で記載されています。
データの取り込み: さまざまなデータソースからデータを取得します。たとえば、ローカル ファイル、Cloud Storage、Google ドライブが該当します。
データ変換: インデックス登録の準備としてデータを変換します。たとえば、データはチャンクに分割されます。
エンベディング: 単語やテキストの断片の数値表現。これらの数値は、テキストの意味論的意味とコンテキストを捉えています。類似または関連する単語やテキストは、エンベディングが類似する傾向があります。つまり、高次元ベクトル空間内で近接します。
データのインデックス登録: RAG 用 Vertex AI の LlamaIndex は、コーパスと呼ばれるインデックスを作成します。インデックスは、検索用に最適化されるようにナレッジベースを構造化します。たとえば、インデックスは、膨大な参考書の詳細な目次のようなものです。
検索: ユーザーが質問をする、またはプロンプトを指定すると、RAG 用 Vertex AI の LlamaIndex の検索コンポーネントがナレッジベースを検索し、クエリに関連する情報を探します。
生成: 取得した情報は、生成 AI モデルが事実に基づいた関連性の高いレスポンスを生成するためのガイドとして、元のユーザークエリに追加されるコンテキストになります。
サポートされているモデル
このセクションには、RAG 用 Vertex AI の LlamaIndex をサポートする Google モデルとオープンモデルについて記載されています。
Gemini モデル
次の表に、RAG 用 Vertex AI の LlamaIndex をサポートする Gemini モデルとそれらのバージョンを示します。
モデル | バージョン |
---|---|
Gemini 1.5 Flash | gemini-1.5-flash-001 |
Gemini 1.5 Pro | 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 |
オープンモデル
Google が運用するサービスとしての Llama 3.1 モデル(MaaS)エンドポイントと、お客様が独自にデプロイしたオープンモデルのエンドポイントは、RAG 用 Vertex AI の LlamaIndex をサポートしています。
次のコードサンプルは、Gemini API を使用してオープンモデル インスタンスを作成する方法を示しています。
# Create a model instance with Llama 3.1 MaaS endpoint
rag_model = GenerativeModel(
"projects/PROJECT_ID/locations/REGION/publisher/meta/models/llama3-405B-instruct-maas",
tools=[rag_retrieval_tool]
)
# 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]
)
サポートされているエンベディング モデル
エンベディング モデルは、コーパスの作成と、レスポンスの生成時の検索と取得に使用されます。このセクションでは、サポートされているエンベディング モデルを示します。
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
サポートされているドキュメントの種類
テキスト ドキュメントのみがサポートされています。次の表に、ファイルの種類とファイルサイズの上限を示します。
ファイル形式 | ファイルサイズの上限 |
---|---|
Google ドキュメント | Google Workspace からエクスポートする場合: 50 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 用 Vertex AI の LlamaIndex を他のドキュメント タイプで使用することは可能ですが、生成されるレスポンスの品質が低下する可能性があります。
サポートされるデータソース
サポートされているデータソースは次のとおりです。
- ローカル ファイルをアップロードする:
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 用 Vertex AI の LlamaIndex が一連の変換を実行して、インデックス登録用のデータを準備します。次のパラメータを使用して、ユースケースを制御できます。
パラメータ | 説明 |
---|---|
chunk_size |
ドキュメントがインデックスに取り込まれると、チャンクに分割されます。(トークン内の)chunk_size パラメータはチャンクのサイズを指定します。デフォルトのチャンクサイズは 1,024 トークンです。 |
chunk_overlap |
デフォルトでは、ドキュメントは一定量の重複があるチャンクに分割され、関連性と検索品質が向上します。デフォルトのチャンク オーバーラップは 200 トークンです。 |
チャンクサイズが小さいほど、エンベディングの精度が高くなります。チャンクサイズを大きくすると、エンベディングはより一般的な内容になりますが、特定の詳細情報が欠落する可能性があります。
たとえば、1,000 語ではなく 200 語を同じディメンションのエンベディング配列に変換すると、詳細が失われる可能性があります。これは、モデルに関するコンテキストの長さの上限を考慮する際の良い例でもあります。テキストの大きなチャンクは、小さなウィンドウ モデルに収まらない可能性があります。
取得パラメータ
次の表に、取得パラメータを示します。
パラメータ | 説明 |
---|---|
similarity_top_k |
取得するコンテキストの最大数を制御します。 |
vector_distance_threshold |
距離がしきい値より小さいコンテキストのみが考慮されます。 |
コーパスを管理する
このセクションでは、インデックス管理とファイル管理を実行して、RAG タスクのコーパスを管理する方法について説明します。
コーパス管理
コーパス(インデックスとも呼ばれます)は、ドキュメントまたは情報源の集合です。コーパスをクエリして、レスポンスの生成に関連するコンテキストを取得できます。コーパスを初めて作成する場合は、プロセスに要する時間が若干長くなる可能性があります。
コーパスを作成するときに、次のことを指定できます。
- コーパスを作成する: ドキュメントをインポートまたはアップロードするためのインデックスを作成します。
- コーパスを削除する: インデックスを削除します。
- コーパスの詳細情報を取得する: インデックスを記述するメタデータを取得します。
- 指定されたプロジェクトのコーパスを一覧表示する: 指定されたプロジェクト内の複数のインデックスを一覧表示します。
コーパスに対する同時オペレーションはサポートされていません。詳細については、RAG API リファレンスをご覧ください。
ファイル管理
次のファイル オペレーションがサポートされています。
- ローカル ストレージからコーパスにファイルをアップロードする: より正確なレスポンスを生成するために、LLM にコンテキストを提供するための追加情報を含むファイルをアップロードします。
- 他のストレージからファイルを取り込んでコーパスに追加する: ストレージ ロケーションからファイルセットをインポートします。
- ファイルの詳細情報を取得する: インデックスまたはインデックス内の指定されたファイルから、特定のクエリに関連するコンテキストを取得します。
- コーパス内のファイルを一覧表示する: インデックス内のファイルのリストを生成します。
- コーパスからファイルを削除する: インデックスからファイルを削除します。
詳細については、RAG API リファレンスをご覧ください。
次のステップ
- ファイルサイズの上限については、サポートされているドキュメント タイプをご覧ください。
- RAG 用 Vertex AI の LlamaIndex に関連する割り当てについては、RAG 用 Vertex AI の LlamaIndex の割り当てをご覧ください。
- パラメータのカスタマイズについては、取得パラメータをご覧ください。
- RAG API の詳細については、RAG API 用 Vertex AI の LlamaIndex をご覧ください。
- グラウンディングの詳細については、グラウンディングの概要をご覧ください。
- グラウンディングと RAG の相違点について詳しくは、RAG を使用してレスポンスをグラウンディングするをご覧ください。
- Vertex AI の生成 AI の詳細については、Vertex AI の生成 AI の概要をご覧ください。
- RAG アーキテクチャの詳細については、Vertex AI を使用した RAG 対応生成 AI アプリケーション用インフラストラクチャをご覧ください。