Halaman ini menunjukkan cara menyiapkan Vertex AI Feature Store sebagai database vektor yang akan digunakan dengan RAG Engine.
Anda juga dapat mengikutinya menggunakan notebook Mesin RAG dengan Vertex AI Feature Store ini.
RAG Engine menggunakan database vektor bawaan yang didukung oleh Spanner untuk menyimpan dan mengelola representasi vektor dokumen teks. Database vektor mengambil dokumen yang relevan berdasarkan kemiripan semantik dokumen dengan kueri tertentu.
Dengan mengintegrasikan Vertex AI Feature Store sebagai database vektor tambahan, RAG Engine dapat menggunakan Vertex AI Feature Store untuk menangani volume data yang besar dengan latensi rendah, yang membantu meningkatkan performa dan skalabilitas aplikasi RAG Anda.
Menyiapkan Vertex AI Feature Store
Vertex AI Feature Store, layanan native cloud terkelola, adalah komponen penting dari Vertex AI. Solusi ini menyederhanakan pengelolaan fitur machine learning (ML) dan penyaluran online dengan memungkinkan Anda mengelola data fitur dalam tabel atau tampilan BigQuery. Hal ini memungkinkan penayangan fitur online dengan latensi rendah.
Untuk instance FeatureOnlineStore
yang dibuat dengan penayangan online yang dioptimalkan, Anda
dapat memanfaatkan penelusuran kesamaan vektor untuk mengambil daftar
entity yang serupa atau terkait secara semantik, yang dikenal sebagai
perkiraan terdekat.
Bagian berikut menunjukkan cara menyiapkan instance Vertex AI Feature Store untuk aplikasi RAG Anda.
Membuat skema tabel BigQuery
Gunakan konsol Google Cloud untuk membuat skema tabel BigQuery. File ini harus berisi kolom berikut untuk berfungsi sebagai sumber data.
Nama kolom | Jenis data | Status |
---|---|---|
corpus_id |
String |
Wajib |
file_id |
String |
Wajib |
chunk_id |
String |
Wajib |
chunk_data_type |
String |
Nullable |
chunk_data |
String |
Nullable |
file_original_uri |
String |
Nullable |
embeddings |
Float |
Berulang |
Contoh kode ini menunjukkan cara menentukan skema tabel BigQuery.
SQL
CREATE TABLE `PROJECT_ID.input_us_central1.rag_source_new` (
`corpus_id` STRING NOT NULL,
`file_id` STRING NOT NULL,
`chunk_id` STRING NOT NULL,
`chunk_data_type` STRING,
`chunk_data` STRING,
`embeddings` ARRAY<FLOAT64>,
`file_original_uri` STRING
);
Menyediakan instance FeatureOnlineStore
Untuk mengaktifkan penyaluran fitur secara online, gunakan Vertex AI Feature Store
CreateFeatureOnlineStore
API untuk menyiapkan instance FeatureOnlineStore
. Jika Anda menyediakan FeatureOnlineStore
untuk pertama kalinya, operasi ini mungkin memerlukan waktu sekitar lima menit untuk selesai.
REST
Untuk membuat instance toko online, kirim permintaan POST
menggunakan
metode
featureOnlineStores.create
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LOCATION_ID: Region tempat Anda ingin membuat instance
FeatureOnlineStore
, sepertius-central1
. - PROJECT_ID: Project ID Anda.
- FEATUREONLINESTORE_NAME: Nama instance
FeatureOnlineStore
baru.
Metode HTTP dan URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME
Isi JSON permintaan:
{ "optimized": {} }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME" | Select-Object -Expand Content
Anda akan melihat respons JSON seperti berikut:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureOnlineStoreOperationMetadata", "genericMetadata": { "createTime": "2023-09-18T17:49:23.847496Z", "updateTime": "2023-09-18T17:49:23.847496Z" } } }
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.
project
: Project ID Anda.location
: Region tempat Anda ingin membuat instanceFeatureOnlineStore
, sepertius-central1
.feature_online_store_id
: Nama instanceFeatureOnlineStore
baru.
Membuat resource FeatureView
Untuk menghubungkan tabel BigQuery, yang menyimpan sumber data fitur, ke instance FeatureOnlineStore
, panggil CreateFeatureView
API untuk membuat resource FeatureView
. Saat membuat resource FeatureView
, pilih metrik jarak default DOT_PRODUCT_DISTANCE
, yang ditentukan sebagai negatif dari perkalian titik (DOT_PRODUCT_DISTANCE
yang lebih kecil menunjukkan kesamaan yang lebih tinggi).
Contoh kode ini menunjukkan cara membuat resource FeatureView
.
REST
# TODO(developer): Update and uncomment the following lines:
# Set feature_view_id
# Example: "feature_view_test"
# FEATURE_VIEW_ID = "your-feature-view-id"
#
# The big_query_uri generated in the above BigQuery table schema creation step
# The format should be "bq://" + BigQuery table ID
# Example: "bq://tester.ragtest1.rag_testdata"
# BIG_QUERY_URI=YOUR_BIG_QUERY_URI
# Call CreateFeatureView API to create a FeatureView
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/featureOnlineStores/${FEATURE_ONLINE_STORE_ID}/featureViews?feature_view_id=${FEATURE_VIEW_ID} \
-d '{
"vertex_rag_source": {
"uri": '\""${BIG_QUERY_URI}"\"'
}
}'
# Call ListFeatureViews API to verify the FeatureView is created successfully
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/featureOnlineStores/${FEATURE_ONLINE_STORE_ID}/featureViews
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.
Mengupload data dan penayangan online
RAG API menangani upload data dan penayangan online.
Menggunakan Vertex AI Feature Store di RAG Engine
Setelah instance Vertex AI Feature Store disiapkan, bagian berikut akan menunjukkan cara menyiapkannya sebagai database vektor yang akan digunakan dengan aplikasi RAG.
Menggunakan instance Vertex AI Feature Store sebagai database vektor untuk membuat korpus RAG
Untuk membuat korpus RAG, Anda harus menggunakan FEATURE_VIEW_RESOURCE_NAME
. Korpus
RAG dibuat dan otomatis dikaitkan dengan
instance Vertex AI Feature Store. RAG API menggunakan rag_corpus_id
yang dihasilkan untuk menangani upload data ke instance Vertex AI Feature Store
dan mengambil konteks yang relevan dari rag_corpus_id
.
Contoh kode ini menunjukkan cara menggunakan instance Vertex AI Feature Store sebagai database vektor untuk membuat korpus RAG.
REST
# TODO(developer): Update and uncomment the following lines:
# CORPUS_DISPLAY_NAME = "your-corpus-display-name"
#
# Full feature view resource name
# Format: projects/${PROJECT_ID}/locations/us-central1/featureOnlineStores/${FEATURE_ONLINE_STORE_ID}/featureViews/${FEATURE_VIEW_ID}
# FEATURE_VIEW_RESOURCE_NAME = "your-feature-view-resource-name"
# Call CreateRagCorpus API to create a new RAG corpus
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects//{PROJECT_ID}/locations/us-central1/ragCorpora -d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_vector_db_config" : {
"vertex_feature_store": {
"feature_view_resource_name":'\""${FEATURE_VIEW_RESOURCE_NAME}"\"'
}
}
}'
# Call ListRagCorpora API to verify the RAG corpus is created successfully
curl -sS -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.
Mengimpor file ke tabel BigQuery menggunakan RAG API
Gunakan ImportRagFiles
API untuk mengimpor file dari Google Cloud Storage atau
Google Drive ke tabel BigQuery dari instance Vertex AI Feature Store. File disematkan dan disimpan di tabel BigQuery.
Contoh kode ini menunjukkan cara mengimpor file ke dalam tabel BigQuery menggunakan RAG API.
REST
# TODO(developer): Update and uncomment the following lines:
# RAG_CORPUS_ID = "your-rag-corpus-id"
#
# Google Cloud Storage bucket/file location.
# For example, "gs://rag-fos-test/"
# GCS_URIS= "your-gcs-uris"
# Call ImportRagFiles API to embed files and store in the BigQuery table
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
"import_rag_files_config": {
"gcs_source": {
"uris": '\""${GCS_URIS}"\"'
},
"rag_file_chunking_config": {
"chunk_size": 512
}
}
}'
# Call ListRagFiles API to verify the files are imported successfully
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}/ragFiles
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.
Menjalankan proses sinkronisasi untuk membuat indeks FeatureOnlineStore
Setelah mengupload data ke tabel BigQuery, jalankan
proses sinkronisasi agar data tersedia untuk penayangan online. Anda harus membuat indeks FeatureOnlineStore
menggunakan FeatureView
, dan proses sinkronisasi mungkin memerlukan waktu 20 menit untuk diselesaikan.
Contoh kode ini menunjukkan cara menjalankan proses sinkronisasi untuk membuat
indeks FeatureOnlineStore
.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LOCATION_ID: Region tempat toko online berada, seperti
us-central1
. - PROJECT_ID: Project ID Anda.
- FEATUREONLINESTORE_NAME: Nama penyimpanan online yang berisi tampilan fitur.
- FEATUREVIEW_NAME: Nama tampilan fitur tempat Anda ingin memulai sinkronisasi data secara manual.
Metode HTTP dan URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync" | Select-Object -Expand Content
Anda akan melihat respons JSON seperti berikut:
{ "featureViewSync": "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/featureViewSyncs/OPERATION_ID" }
Mengambil konteks yang relevan menggunakan RAG API
Setelah proses sinkronisasi selesai, Anda dapat mengambil konteks yang relevan
dari indeks FeatureOnlineStore
melalui RetrieveContexts
API.
REST
# TODO(developer): Update and uncomment the following lines:
# RETRIEVAL_QUERY="your-retrieval-query"
#
# Full RAG corpus resource name
# Format:
# "projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}"
# RAG_CORPUS_RESOURCE="your-rag-corpus-resource"
# Call RetrieveContexts API to retrieve relevant contexts
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1:retrieveContexts \
-d '{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
},
"query": {
"text": '\""${RETRIEVAL_QUERY}"\"',
"similarity_top_k": 10
}
}'
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.
Membuat konten menggunakan Vertex AI Gemini API
Panggil Vertex AI GenerateContent
API untuk menggunakan model Gemini
guna membuat konten, dan tentukan RAG_CORPUS_RESOURCE
dalam permintaan untuk mengambil
data dari indeks FeatureOnlineStore
.
REST
# TODO(developer): Update and uncomment the following lines:
# MODEL_ID=gemini-1.5-flash-001
# GENERATE_CONTENT_PROMPT="your-generate-content-prompt"
# GenerateContent with contexts retrieved from the FeatureStoreOnline index
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": {
"role": "user",
"parts": {
"text": '\""${GENERATE_CONTENT_PROMPT}"\"'
}
},
"tools": {
"retrieval": {
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
"similarity_top_k": 8,
}
}
}
}'
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.
Langkah selanjutnya
- Untuk mempelajari grounding lebih lanjut, lihat Ringkasan grounding.
- Untuk mempelajari RAG Engine lebih lanjut, lihat Menggunakan RAG Engine.
- Untuk mempelajari lebih lanjut grounding dan RAG, lihat Melakukan grounding respons menggunakan RAG.