Vertex AI RAG Engine は、検索拡張生成(RAG)を容易にする Vertex AI プラットフォームのコンポーネントです。RAG Engine を使用すると、大規模言語モデル(LLM)はドキュメントやデータベースなどの外部ナレッジソースにアクセスしてデータを組み込むことができます。RAG を使用すると、LLM はより正確で有益な LLM レスポンスを生成できます。
構文の例
このセクションでは、RAG コーパスを作成するための構文について説明します。
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora\ -d '{ "display_name" : "...", "description": "...", "rag_embedding_model_config": { "vertex_prediction_endpoint": { "endpoint": "..." } } }'
Python
corpus = rag.create_corpus(display_name=..., description=...) print(corpus)
パラメータ リスト
このセクションでは、次のことを説明します。
パラメータ | 例 |
---|---|
コーパス管理パラメータをご覧ください。 | コーパス管理の例をご覧ください。 |
ファイル管理パラメータをご覧ください。 | ファイル管理の例をご覧ください。 |
コーパス管理パラメータ
RAG コーパスの詳細については、コーパス管理をご覧ください。
RAG コーパスを作成する
次の表に、RAG コーパスの作成に使用されるパラメータを示します。
パラメータ | |
---|---|
|
省略可: RAG コーパスの表示名。 |
|
省略可: RAG コーパスの説明。 |
|
省略可: RAG コーパスに使用するエンベディング モデル。 |
|
省略可: Weaviate インスタンスの HTTPS または HTTP エンドポイント。 |
|
省略可: RAG コーパスがマッピングされる Weaviate コレクション。 |
|
省略可: RAG コーパスがマッピングされる Vertex AI Feature Store 形式: |
|
省略可: API キーを保存する Secret Manager シークレット バージョン リソース名。 形式: |
|
このフィールドは、RAG コーパスに関連付けるベクトル データベースを選択するために使用します。このフィールドは、 |
|
これは、RAG コーパスで使用される Pinecone インデックスの作成に使用される名前です。名前は |
|
これは、Secret Manager に保存されているシークレットの完全なリソース名で、Pinecone API キーが含まれています。名前は |
|
このフィールドは、RAG コーパスに関連付けるベクトル データベースを選択するために使用します。このフィールドは、 |
|
これは、RAG コーパスで使用されるベクトル検索のリソース名です。名前は |
|
これは、RAG コーパスで使用されるベクトル検索インデックス エンドポイントのリソース名です。名前は |
RAG コーパスを更新する
この表に、RAG コーパスの更新に使用されるパラメータを示します。
名前 | 説明 |
---|---|
display_name |
省略可: string RAG コーパスの表示名。 |
description |
省略可: string RAG コーパスの表示。 |
rag_vector_db_config.weaviate.http_endpoint |
省略可: string Weaviate インスタンスの HTTPS または HTTP エンドポイント。 |
rag_vector_db_config.weaviate.collection_name |
省略可: string RAG コーパスがマッピングされる Weaviate コレクション。 |
rag_vector_db_config.vertex_feature_store.feature_view_resource_name |
省略可: string RAG コーパスがマッピングされる Vertex AI Feature Store の特徴ビュー。 形式: projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view} |
api_auth.api_key_config.api_key_secret_version |
省略可: string API キーを保存する Secret Manager シークレット バージョン リソース名。 形式: projects/{project}/secrets/{secret}/versions/{version} |
|
このフィールドは、RAG コーパスに関連付けるベクトル データベースを選択するために使用します。このフィールドは、 |
|
これは、RAG コーパスで使用される Pinecone インデックスの作成に使用される名前です。名前は |
|
これは、Secret Manager に保存されているシークレットの完全なリソース名で、Pinecone API キーが含まれています。名前は |
|
このフィールドは、RAG コーパスに関連付けるベクトル データベースを選択するために使用します。このフィールドは、 |
|
これは、RAG コーパスで使用されるベクトル検索のリソース名です。名前は |
|
これは、RAG コーパスで使用されるベクトル検索インデックス エンドポイントのリソース名です。名前は |
RAG コーパスのリストを取得する
次の表に、RAG コーパスを一覧表示するために使用されるパラメータを示します。
パラメータ | |
---|---|
|
省略可: 標準的なリストのページサイズ。 |
|
省略可: 標準的なリストのページトークン。通常は、前の |
RAG コーパスを取得する
この表に、RAG コーパスの取得に使用されるパラメータを示します。
パラメータ | |
---|---|
|
|
RAG コーパスを削除する
この表に、RAG コーパスの削除に使用されるパラメータを示します。
パラメータ | |
---|---|
|
|
ファイル管理パラメータ
RAG ファイルの詳細については、ファイル管理をご覧ください。
RAG ファイルをアップロードする
次の表に、RAG ファイルのアップロードに使用されるパラメータを示します。
パラメータ | |
---|---|
|
|
|
省略可: RagCorpus の表示名。 |
|
省略可: RagCorpus の説明。 |
RAG ファイルをインポートする
この表に、RAG ファイルのインポートに使用されるパラメータを示します。
パラメータ | |
---|---|
|
|
|
アップロード ファイルを含む Cloud Storage URI。 |
|
省略可: Google ドライブのリソースのタイプ。 |
|
省略可: Google ドライブのリソースの ID。 |
|
省略可: 省略可。各チャンクに必要なトークンの数。 |
|
省略可: 2 つのチャンク間で重複するトークンの数。 |
|
省略可: RAG Engine がインデックス登録プロセス中にエンベディング モデルを呼び出すレートを制限する上限値。デフォルトの上限は |
|
|
|
省略可: 標準的なリストのページサイズ。 |
|
省略可: 標準的なリストのページトークン。通常は、前の |
RAG ファイルを取得する
この表に、RAG ファイルの取得に使用されるパラメータを示します。
パラメータ | |
---|---|
|
|
RAG ファイルを削除する
この表に、RAG ファイルの削除に使用されるパラメータを示します。
パラメータ | |
---|---|
|
|
取得と予測
このセクションでは、取得と予測のパラメータについて説明します。
取得パラメータ
次の表に、取得パラメータを示します。
パラメータ | 説明 |
---|---|
similarity_top_k |
取得するコンテキストの最大数を制御します。 |
vector_distance_threshold |
距離がしきい値より小さいコンテキストのみが考慮されます。 |
予測パラメータ
次の表に、予測パラメータを示します。
パラメータ | |
---|---|
|
コンテンツ生成用の LLM モデル。 |
|
RagCorpus リソースの名前。形式: |
|
コンテンツ生成のために LLM に送信されるテキスト。最大値: |
|
省略可: ベクトル距離がしきい値より小さいコンテキストのみが返されます。 |
|
省略可: 取得する上位コンテキストの数。 |
コーパス管理の例
このセクションでは、API を使用して RAG コーパスを管理する方法の例を示します。
RAG コーパスの例を作成する
このコードサンプルは、RAG コーパスを作成する方法を示しています。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- CORPUS_DISPLAY_NAME:
RagCorpus
の表示名。 - CORPUS_DESCRIPTION:
RagCorpus
の説明。 - RAG_EMBEDDING_MODEL_CONFIG_ENDPOINT:
RagCorpus
のエンベディング モデル。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora
リクエストの本文(JSON):
{ "display_name" : "CORPUS_DISPLAY_NAME", "description": "CORPUS_DESCRIPTION", "rag_embedding_model_config_endpoint": "RAG_EMBEDDING_MODEL_CONFIG_ENDPOINT" }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora" | Select-Object -Expand Content
次の例は、REST API を使用して RAG コーパスを作成する方法を示しています。
// Either your first party publisher model or fine-tuned endpoint
// Example: projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/textembedding-gecko@003
// or
// Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/12345
ENDPOINT_NAME=${RAG_EMBEDDING_MODEL_CONFIG_ENDPOINT}
// Corpus display name
// Such as "my_test_corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, CORPUS_DISPLAY_NAME
// Output: CreateRagCorpusOperationMetadata
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
// Poll the operation status.
// The last component of the RagCorpus "name" field is the server-generated
// rag_corpus_id: (only Bold part)
// projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/7454583283205013504.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
RAG コーパスの例を更新する
RAG コーパスを更新して、新しい表示名、説明、ベクトル データベース構成を指定できます。ただし、RAG コーパスの次のパラメータは変更できません。
- ベクトル データベースのタイプ。たとえば、ベクトル データベースを Weaviate から Vertex AI Feature Store に変更することはできません。
- マネージド データベース オプションを使用している場合、ベクトル データベースの構成を更新することはできません。
次の例は、RAG コーパスを更新する方法を示しています。
Python
Vertex AI SDK のインストールまたは更新方法については、Vertex AI SDK をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。
from vertexai.preview import rag
import vertexai
# TODO(developer): Update and un-comment on the following lines:
# PROJECT_ID = "YOUR_PROJECT_ID"
# corpus_name = "YOUR_CORPUS_NAME"
# e.g. "projects/1234567890/locations/us-central1/ragCorpora/1234567890'"
# display_name = "test_corpus"
# description = "Corpus Description"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")
corpus = rag.update_corpus(
corpus_name=corpus_name,
display_name=display_name,
description=description,
)
print(corpus)
REST
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: Your project ID.
LOCATION: The region to process the request.
CORPUS_ID: The corpus ID of your RAG corpus.
CORPUS_DISPLAY_NAME: The display name of the RAG corpus.
CORPUS_DESCRIPTION: The description of the RAG corpus.
HTTP メソッドと URL:
PATCH https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${CORPUS_ID}
JSON 本文のリクエスト:
{
"display_name" : ${CORPUS_DISPLAY_NAME},
"description": ${CORPUS_DESCRIPTION}
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
request.json という名前のファイルにリクエスト本文を保存し、次のコマンドを実行します。
curl -X PATH \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \ "https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${CORPUS_ID}"
```
* { Powershell }
Save the request body in a file named request.json, and execute the following command:
```sh
$headers = @{ }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${CORPUS_ID}
" | Select-Object -Expand Content
```
RAG コーパスの一覧を取得する例
このコードサンプルは、すべての RAG コーパスを一覧表示する方法を示しています。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- PAGE_SIZE: 標準的なリストのページサイズ。
page_size
パラメータを更新して、ページごとに返されるRagCorpora
の数を調整できます。 - PAGE_TOKEN: 標準的なリストのページトークン。通常は、前の
VertexRagDataService.ListRagCorpora
呼び出しのListRagCorporaResponse.next_page_token
を使用して取得します。
HTTP メソッドと URL:
GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora?page_size=PAGE_SIZE&page_token=PAGE_TOKEN
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"
PowerShell
次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content
PROJECT_ID
の下にある RagCorpora
のリストが返されます。Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
RAG コーパスの例を取得する
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- RAG_CORPUS_ID:
RagCorpus
リソースの ID。
HTTP メソッドと URL:
GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"
PowerShell
次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID" | Select-Object -Expand Content
RagCorpus
リソースが返されます。get
コマンドと list
コマンドは、RagCorpus
が選択したエンベディング モデルを指す rag_embedding_model_config
フィールドをどのように使用するのかを示す例で使用されています。
// Server-generated rag_corpus_id in CreateRagCorpus
RAG_CORPUS_ID=RAG_CORPUS_ID
// GetRagCorpus
// Input: ENDPOINT, PROJECT_ID, RAG_CORPUS_ID
// Output: RagCorpus
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}
// ListRagCorpora
curl -sS -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora"
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
RAG コーパスの削除例
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- RAG_CORPUS_ID:
RagCorpus
リソースの ID。
HTTP メソッドと URL:
DELETE https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X DELETE \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"
PowerShell
次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID" | Select-Object -Expand Content
DeleteOperationMetadata
が返されます。Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
ファイル管理の例
このセクションでは、API を使用して RAG ファイルを管理する方法の例を示します。
RAG ファイルの例をアップロードする
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- RAG_CORPUS_ID:
RagCorpus
リソースの ID。 - INPUT_FILE: ローカル ファイルのパス。
- FILE_DISPLAY_NAME:
RagFile
の表示名。 - RAG_FILE_DESCRIPTION:
RagFile
の説明。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload
リクエストの本文(JSON):
{ "rag_file": { "display_name": "FILE_DISPLAY_NAME", "description": "RAG_FILE_DESCRIPTION" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を INPUT_FILE
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @INPUT_FILE \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload"
PowerShell
リクエスト本文を INPUT_FILE
という名前のファイルに保存して、次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile INPUT_FILE `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload" | Select-Object -Expand Content
RagFile
リソースが返されます。RagFile.name
フィールドの最後のコンポーネントは、サーバー生成の rag_file_id
です。Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
RAG ファイルのインポート例
ファイルとフォルダは、ドライブまたは Cloud Storage からインポートできます。response.metadata
を使用すると、SDK の response
オブジェクトで部分的な失敗、リクエスト時間、レスポンス時間を確認できます。
response.skipped_rag_files_count
は、インポート中にスキップされたファイルの数です。ファイルは、次の条件が満たされるとスキップされます。
- ファイルはすでにインポートされています。
- ファイルは変更されていません。
- ファイルのチャンク構成が変更されていない。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- RAG_CORPUS_ID:
RagCorpus
リソースの ID。 - GCS_URIS: Cloud Storage ロケーションのリスト。例:
gs://my-bucket1, gs://my-bucket2
- DRIVE_RESOURCE_ID: ドライブ リソースの ID。例:
https://drive.google.com/file/d/ABCDE
https://drive.google.com/corp/drive/u/0/folders/ABCDEFG
- DRIVE_RESOURCE_TYPE: ドライブ リソースのタイプ。オプション:
RESOURCE_TYPE_FILE
- ファイルRESOURCE_TYPE_FOLDER
- フォルダ- CHUNK_SIZE: 省略可。各チャンクに必要なトークンの数。
- CHUNK_OVERLAP: 省略可: チャンク間で重複するトークンの数。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import
リクエストの本文(JSON):
{ "import_rag_files_config": { "gcs_source": { "uris": GCS_URIS }, "google_drive_source": { "resource_ids": { "resource_id": DRIVE_RESOURCE_ID, "resource_type": DRIVE_RESOURCE_TYPE }, } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content
ImportRagFilesOperationMetadata
リソースが返されます。次のサンプルは、Cloud Storage からファイルをインポートする方法を示しています。max_embedding_requests_per_min
制御フィールドを使用して、RAG Engine が ImportRagFiles
インデックス登録プロセス中にエンベディング モデルを呼び出すレートを制限します。このフィールドのデフォルト値は、1 分あたり 1000
回の呼び出しです。
// Cloud Storage bucket/file location.
// Such as "gs://rag-e2e-test/"
GCS_URIS=YOUR_GCS_LOCATION
// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT
// ImportRagFiles
// Import a single Cloud Storage file or all files in a Cloud Storage bucket.
// Input: ENDPOINT, PROJECT_ID, RAG_CORPUS_ID, GCS_URIS
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
"import_rag_files_config": {
"gcs_source": {
"uris": '\""${GCS_URIS}"\"'
},
"rag_file_chunking_config": {
"chunk_size": 512
},
"max_embedding_requests_per_min": '"${EMBEDDING_MODEL_QPM_RATE}"'
}
}'
// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}
次のサンプルは、ドライブからファイルをインポートする方法を示しています。max_embedding_requests_per_min
制御フィールドを使用して、RAG Engine が ImportRagFiles
インデックス登録プロセス中にエンベディング モデルを呼び出すレートを制限します。このフィールドのデフォルト値は、1 分あたり 1000
回の呼び出しです。
// Google Drive folder location.
FOLDER_RESOURCE_ID=YOUR_GOOGLE_DRIVE_FOLDER_RESOURCE_ID
// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT
// ImportRagFiles
// Import all files in a Google Drive folder.
// Input: ENDPOINT, PROJECT_ID, RAG_CORPUS_ID, FOLDER_RESOURCE_ID
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
"import_rag_files_config": {
"google_drive_source": {
"resource_ids": {
"resource_id": '\""${FOLDER_RESOURCE_ID}"\"',
"resource_type": "RESOURCE_TYPE_FOLDER"
}
},
"max_embedding_requests_per_min": '"${EMBEDDING_MODEL_QPM_RATE}"'
}
}'
// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
RAG ファイルの例を取得する
このコードサンプルは、RAG ファイルを取得する方法を示しています。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- RAG_CORPUS_ID:
RagCorpus
リソースの ID。 - RAG_FILE_ID:
RagFile
リソースの ID。
HTTP メソッドと URL:
GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"
PowerShell
次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
RagFile
リソースが返されます。Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
RAG ファイルの一覧を取得する例
このコードサンプルは、RAG ファイルを一覧表示する方法を示しています。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- RAG_CORPUS_ID:
RagCorpus
リソースの ID。 - PAGE_SIZE: 標準的なリストのページサイズ。
page_size
パラメータを更新して、ページごとに返されるRagFiles
の数を調整できます。 - PAGE_TOKEN: 標準的なリストのページトークン。通常は、前の
VertexRagDataService.ListRagFiles
呼び出しのListRagFilesResponse.next_page_token
を使用して取得します。
HTTP メソッドと URL:
GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"
PowerShell
次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content
RAG_CORPUS_ID
の下で、成功ステータス コード(2xx)と RagFiles
のリストが返されます。Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
RAG ファイルの例を削除する
このコードサンプルは、RAG ファイルを削除する方法を示しています。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- RAG_CORPUS_ID:
RagCorpus
リソースの ID。 - RAG_FILE_ID:
RagFile
リソースの ID。 形式:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file_id}
。
HTTP メソッドと URL:
DELETE https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X DELETE \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"
PowerShell
次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
DeleteOperationMetadata
リソースが返されます。Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
取得クエリ
ユーザーが質問をするか、プロンプトを指定すると、RAG の検索コンポーネントがナレッジベースを検索し、クエリに関連する情報を探します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: リクエストを処理するリージョン。
- PROJECT_ID: 実際のプロジェクト ID。
- RAG_CORPUS_RESOURCE:
RagCorpus
リソースの名前。形式:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
。 - VECTOR_DISTANCE_THRESHOLD: ベクトル距離がしきい値より小さいコンテキストのみが返されます。
- TEXT: 関連するコンテキストを取得するクエリテキスト。
- SIMILARITY_TOP_K: 取得する上位コンテキストの数。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts
リクエストの本文(JSON):
{ "vertex_rag_store": { "rag_resources": { "rag_corpus": "RAG_CORPUS_RESOURCE", }, "vector_distance_threshold": 0.8 }, "query": { "text": "TEXT", "similarity_top_k": SIMILARITY_TOP_K } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" | Select-Object -Expand Content
RagFiles
のリストが返されます。Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
予測
予測は、取得されたコンテキストを使用して根拠のある回答を生成します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理するリージョン。
- MODEL_ID: コンテンツ生成用の LLM モデル。例:
gemini-1.5-pro-002
- GENERATION_METHOD: コンテンツ生成の LLM メソッド。オプション:
generateContent
、streamGenerateContent
- INPUT_PROMPT: コンテンツ生成のために LLM に送信されるテキスト。アップロードされた Rag ファイルに関連するプロンプトを使用するようにしてください。
- RAG_CORPUS_RESOURCE:
RagCorpus
リソースの名前。形式:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
。 - SIMILARITY_TOP_K: 省略可。取得する上位コンテキストの数。
- VECTOR_DISTANCE_THRESHOLD: 省略可。ベクトル距離がしきい値より小さいコンテキストが返されます。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD
リクエストの本文(JSON):
{ "contents": { "role": "user", "parts": { "text": "INPUT_PROMPT" } }, "tools": { "retrieval": { "disable_attribution": false, "vertex_rag_store": { "rag_resources": { "rag_corpus": "RAG_CORPUS_RESOURCE", }, "similarity_top_k": SIMILARITY_TOP_K, "vector_distance_threshold": VECTOR_DISTANCE_THRESHOLD } } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$headers = @{ }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" | Select-Object -Expand Content
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
次のステップ
- サポートされている生成モデルの詳細については、RAG をサポートする生成 AI モデルをご覧ください。
- サポートされているエンベディング モデルの詳細を確認する。エンベディング モデルをご覧ください。
- オープンモデルの詳細については、オープンモデルをご覧ください。
- RAG Engine の詳細については、RAG Engine の概要をご覧ください。