Halaman ini memperkenalkan RagManagedDb
dan menunjukkan cara mengelola konfigurasi tingkatnya serta strategi pengambilan tingkat korpus RAG.
Vertex AI RAG Engine menggunakan RagManagedDb
, yang merupakan database vektor
siap perusahaan yang digunakan untuk menyimpan dan mengelola representasi
vektor dokumen Anda. Database vektor kemudian digunakan untuk mengambil dokumen yang relevan berdasarkan kemiripan semantik dokumen dengan kueri tertentu.
Mengelola strategi pengambilan
RagManagedDb
menawarkan strategi pengambilan berikut untuk mendukung kasus penggunaan
RAG Anda:
Strategi pengambilan | Deskripsi | |
---|---|---|
K-Nearest Neighbors (KNN) (Default) | Menemukan tetangga terdekat yang tepat dengan membandingkan semua titik data dalam korpus RAG Anda. Jika Anda tidak menentukan strategi selama pembuatan korpus RAG, KNN adalah strategi pengambilan default yang digunakan. |
|
Approximate Nearest Neighbors (ANN) | Menggunakan teknik perkiraan untuk menemukan tetangga yang serupa lebih cepat daripada teknik KNN. |
|
Membuat korpus RAG dengan KNN RagManagedDb
Contoh kode ini menunjukkan cara membuat korpus RAG menggunakan RagManagedDb
KNN.
Python
from vertexai import rag
import vertexai
PROJECT_ID = YOUR_PROJECT_ID
LOCATION = YOUR_RAG_ENGINE_LOCATION
DISPLAY_NAME = YOUR_RAG_CORPUS_DISPLAY_NAME
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location=LOCATION)
vector_db = rag.RagManagedDb(retrieval_strategy=rag.KNN())
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, backend_config=rag.RagVectorDbConfig(vector_db=vector_db))
REST
Ganti variabel berikut:
- PROJECT_ID: Project ID Anda.
- LOCATION: Region untuk memproses permintaan.
- CORPUS_DISPLAY_NAME: Nama tampilan korpus RAG.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
CORPUS_DISPLAY_NAME=CORPUS_DISPLAY_NAME
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" : '\""${CORPUS_DISPLAY_NAME}"\"',
"vector_db_config": {
"ragManagedDb": {
"knn": {}
}
}
}'
Membuat korpus RAG dengan ANN RagManagedDb
Untuk menawarkan fitur ANN, RagManagedDb
menggunakan struktur berbasis hierarki untuk
mempartisi data dan memfasilitasi penelusuran yang lebih cepat. Untuk mengaktifkan recall dan latensi terbaik, struktur hierarki ini harus dikonfigurasi dengan eksperimen agar sesuai dengan ukuran dan distribusi data Anda. RagManagedDb
memungkinkan Anda mengonfigurasi
tree_depth
dan leaf_count
hierarki.
tree_depth
menentukan jumlah lapisan atau tingkat dalam hierarki.
Ikuti pedoman berikut:
- Jika Anda memiliki sekitar 10.000 file RAG dalam korpus RAG, tetapkan nilainya ke 2.
- Jika Anda memiliki lebih banyak file RAG, tetapkan ke 3.
- Jika
tree_depth
tidak ditentukan, Vertex AI RAG Engine akan menetapkan nilai default 2 untuk parameter ini.
leaf_count
menentukan jumlah node daun dalam struktur berbasis
hierarki. Setiap node daun berisi grup vektor yang terkait erat beserta
centroid yang sesuai. Ikuti pedoman berikut:
- Nilai yang direkomendasikan adalah
10 * sqrt(num of RAG files in your RAG corpus)
. Jika tidak ditentukan, Vertex AI RAG Engine akan menetapkan nilai default 500 untuk parameter ini.
Python
from vertexai import rag
import vertexai
PROJECT_ID = YOUR_PROJECT_ID
LOCATION = YOUR_RAG_ENGINE_LOCATION
DISPLAY_NAME = YOUR_RAG_CORPUS_DISPLAY_NAME
TREE_DEPTH = YOUR_TREE_DEPTH # Optional: Acceptable values are 2 or 3. Default is 2.
LEAF_COUNT = YOUR_LEAF_COUNT # Optional: Default is 500.
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location=LOCATION)
ann_config = rag.ANN(tree_depth=TREE_DEPTH, leaf_count=LEAF_COUNT)
vector_db = rag.RagManagedDb(retrieval_strategy=ann_config)
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, backend_config=rag.RagVectorDbConfig(vector_db=vector_db))
REST
Ganti variabel berikut:
- PROJECT_ID: Project ID Anda.
- LOCATION: Region untuk memproses permintaan.
- CORPUS_DISPLAY_NAME: Nama tampilan korpus RAG.
- TREE_DEPTH: Kedalaman hierarki Anda.
- LEAF_COUNT: Jumlah node daun Anda.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
CORPUS_DISPLAY_NAME=CORPUS_DISPLAY_NAME
TREE_DEPTH=TREE_DEPTH
LEAF_COUNT=LEAF_COUNT
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" : '\""${CORPUS_DISPLAY_NAME}"\"',
"vector_db_config": {
"ragManagedDb": {
"ann": {
"tree_depth": '"${TREE_DEPTH}"',
"leaf_count": '"${LEAF_COUNT}"'
}
}
}
}'
Mengimpor data ke ANN RagManagedDb
Anda dapat menggunakan ImportRagFiles
API atau UploadRagFile
API untuk mengimpor
data ke ANN RagManagedDb
. Namun, tidak seperti strategi pengambilan
KNN, pendekatan ANN mengharuskan indeks berbasis hierarki yang mendasarinya
dibangun ulang setidaknya sekali dan secara opsional setelah mengimpor data dalam jumlah besar
untuk recall yang optimal. Agar Vertex AI RAG Engine mem-build ulang indeks ANN Anda, tetapkan rebuild_ann_index
ke true dalam permintaan API ImportRagFiles
.
Hal berikut ini penting:
- Sebelum membuat kueri korpus RAG, Anda harus membuat ulang indeks ANN setidaknya sekali.
- Hanya satu pembuatan ulang indeks serentak yang didukung pada project di setiap lokasi.
Untuk mengupload file lokal ke korpus RAG, lihat Mengupload file RAG. Untuk mengimpor data ke korpus RAG dan memicu pembuatan ulang indeks ANN, lihat contoh kode berikut yang menunjukkan cara mengimpor dari Cloud Storage. Untuk mempelajari sumber data yang didukung, lihat Sumber data yang didukung untuk RAG.
Python
from vertexai import rag
import vertexai
PROJECT_ID = YOUR_PROJECT_ID
LOCATION = YOUR_RAG_ENGINE_LOCATION
CORPUS_ID = YOUR_CORPUS_ID
PATHS = ["gs://my_bucket/my_files_dir"]
REBUILD_ANN_INDEX = REBUILD_ANN_INDEX # Choose true or false.
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location=LOCATION)
corpus_name = f"projects/{PROJECT_ID}/locations/{LOCATION}/ragCorpora/{CORPUS_ID}"
# This is a non blocking call.
response = await rag.import_files_async(
corpus_name=corpus_name,
paths=PATHS,
rebuild_ann_index=REBUILD_ANN_INDEX
)
# Wait for the import to complete.
await response.result()
REST
GCS_URI=GCS_URI
REBUILD_ANN_INDEX=<true/false>
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/${CORPUS_ID}/ragFiles:import \
-d '{
"import_rag_files_config": {
"gcs_source": {
"uris": '\""${GCS_URI}"\"',
},
"rebuild_ann_index": '${REBUILD_ANN_INDEX}'
}
}'
Mengelola tingkat
Vertex AI RAG Engine memungkinkan pengguna menskalakan instance RagManagedDb
mereka berdasarkan penggunaan dan persyaratan performa menggunakan pilihan dua tingkat:
Paket Enterprise (default): Paket ini menawarkan performa skala produksi bersama dengan fungsi penskalaan otomatis. Solusi ini cocok untuk pelanggan dengan data dalam jumlah besar atau beban kerja yang sensitif terhadap performa.
Paket dasar: Paket ini menawarkan paket hemat biaya dan komputasi rendah, yang mungkin cocok untuk beberapa kasus berikut:
- Bereksperimen dengan
RagManagedDb
. - Ukuran data kecil.
- Beban kerja yang tidak sensitif terhadap latensi.
- Hanya gunakan Vertex AI RAG Engine dengan database vektor lainnya.
- Bereksperimen dengan
Tingkat adalah setelan tingkat project yang tersedia di resource RagEngineConfig
dan memengaruhi korpus RAG yang menggunakan RagManagedDb
. Untuk mendapatkan atau memperbarui tingkat, gunakan GetRagEngineConfig
API dan UpdateRagEngineConfig
API.
Baca RagEngineConfig
Anda
Kode contoh berikut menunjukkan cara membaca RagEngineConfig
:
Python
from vertexai import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location=LOCATION)
rag_engine_config = rag.rag_data.get_rag_engine_config(
name=f"projects/{PROJECT_ID}/locations/{LOCATION}/ragEngineConfig"
)
print(rag_engine_config)
REST
Ganti variabel berikut:
- PROJECT_ID: Project ID Anda.
- LOCATION: Region untuk memproses permintaan.
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragEngineConfig
Mengupdate RagEngineConfig
ke tingkat Enterprise
Contoh kode berikut menunjukkan cara menetapkan RagEngineConfig
ke tingkat Enterprise:
Python
from vertexai import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location=LOCATION)
rag_engine_config_name=f"projects/{PROJECT_ID}/locations/{LOCATION}/ragEngineConfig"
new_rag_engine_config = rag.RagEngineConfig(
name=rag_engine_config_name,
rag_managed_db_config=rag.RagManagedDbConfig(tier=rag.Enterprise()),
)
updated_rag_engine_config = rag.rag_data.update_rag_engine_config(
rag_engine_config=new_rag_engine_config
)
print(updated_rag_engine_config)
REST
Ganti variabel berikut:
- PROJECT_ID: Project ID Anda.
- LOCATION: Region untuk memproses permintaan.
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragEngineConfig -d "{'ragManagedDbConfig': {'enterprise': {}}}"
Mengupdate RagEngineConfig
ke tingkat Dasar
Jika Anda memiliki data dalam jumlah besar di RagManagedDb
di semua korpus
RAG, downgrade ke tingkat Dasar mungkin akan gagal. Anda harus memiliki kapasitas komputasi dan penyimpanan minimum yang menyimpan resource Anda.
Python
from vertexai import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location=LOCATION)
rag_engine_config_name=f"projects/{PROJECT_ID}/locations/{LOCATION}/ragEngineConfig"
new_rag_engine_config = rag.RagEngineConfig(
name=rag_engine_config_name,
rag_managed_db_config=rag.RagManagedDbConfig(tier=rag.Basic()),
)
updated_rag_engine_config = rag.rag_data.update_rag_engine_config(
rag_engine_config=new_rag_engine_config
)
print(updated_rag_engine_config)
REST
Ganti variabel berikut:
- PROJECT_ID: Project ID Anda.
- LOCATION: Region untuk memproses permintaan.
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragEngineConfig -d "{'ragManagedDbConfig': {'basic': {}}}"
Langkah berikutnya
- Untuk mengimpor file dan folder dari Google Drive atau Cloud Storage, lihat Contoh mengimpor file RAG.
- Untuk mencantumkan file RAG, lihat Contoh file RAG.