Auf dieser Seite wird beschrieben, wie die Vertex AI RAG Engine RagManagedDb
verwendet. RagManagedDb
ist eine unternehmenstaugliche Vektordatenbank, in der Vektordarstellungen Ihrer Dokumente gespeichert und verwaltet werden. Die Vektordatenbank wird dann verwendet, um relevante Dokumente basierend auf der semantischen Ähnlichkeit des Dokuments mit einer bestimmten Anfrage abzurufen.
Außerdem wird auf dieser Seite beschrieben, wie Sie CMEK implementieren.
Abrufstrategie verwalten
RagManagedDb
bietet die folgenden Abrufstrategien zur Unterstützung Ihrer RAG-Anwendungsfälle:
Abrufstrategie | Beschreibung | |
---|---|---|
k-Nearest Neighbors (KNN) (Standard) | Findet die genauen nächsten Nachbarn, indem alle Datenpunkte in Ihrem RAG-Korpus verglichen werden. Wenn Sie beim Erstellen Ihres RAG-Korpus keine Strategie angeben, wird KNN als Standardstrategie für den Abruf verwendet. |
|
Annäherung an den nächsten Nachbarn (ANN) | Verwendet Näherungstechniken, um ähnliche Nachbarn schneller zu finden als die KNN-Technik. |
|
RAG-Korpus mit KNN RagManagedDb
erstellen
Dieses Codebeispiel zeigt, wie Sie einen RAG-Korpus mit KNN RagManagedDb
erstellen.
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
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- CORPUS_DISPLAY_NAME: Der Anzeigename des RAG-Korpus.
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": {}
}
}
}'
RAG-Korpus mit ANN RagManagedDb
erstellen
Für die ANN-Funktion verwendet RagManagedDb
eine baumartige Struktur, um Daten zu partitionieren und schnellere Suchvorgänge zu ermöglichen. Um die bestmögliche Erinnerung und Latenz zu erzielen, sollte die Struktur dieses Baums durch Tests an Ihre Datengröße und -verteilung angepasst werden. Mit RagManagedDb
können Sie die tree_depth
und die leaf_count
des Baums konfigurieren.
Mit tree_depth
wird die Anzahl der Ebenen im Baum festgelegt.
Befolgen Sie diese Richtlinien:
- Wenn Sie etwa 10.000 RAG-Dateien im RAG-Corpus haben, legen Sie den Wert auf 2 fest.
- Wenn Sie mehr RAG-Dateien haben, legen Sie diesen Wert auf 3 fest.
- Wenn
tree_depth
nicht angegeben ist, weist die Vertex AI RAG Engine diesem Parameter den Standardwert 2 zu.
Der leaf_count
bestimmt die Anzahl der Blattknoten in der baumbasierten Struktur. Jeder Blattknoten enthält Gruppen von eng verwandten Vektoren zusammen mit dem entsprechenden Schwerpunkt. Befolgen Sie diese Richtlinien:
- Der empfohlene Wert ist
10 * sqrt(num of RAG files in your RAG corpus)
. Wenn nicht angegeben, weist die Vertex AI RAG-Engine diesem Parameter den Standardwert 500 zu.
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
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- CORPUS_DISPLAY_NAME: Der Anzeigename des RAG-Korpus.
- TREE_DEPTH: Ihre Baumtiefe.
- LEAF_COUNT: Die Anzahl der Blätter.
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}"'
}
}
}
}'
Daten in ANN RagManagedDb
importieren
Sie können entweder die ImportRagFiles
API oder die UploadRagFile
API verwenden, um Ihre Daten in die ANN RagManagedDb
zu importieren. Im Gegensatz zur KNN-Abrufstrategie muss der zugrunde liegende baumbasierte Index beim ANN-Ansatz jedoch mindestens einmal und optional nach dem Importieren großer Datenmengen neu erstellt werden, um einen optimalen Recall zu erzielen. Wenn Sie möchten, dass die Vertex AI-RAG-Engine Ihren ANN-Index neu erstellt, setzen Sie rebuild_ann_index
in Ihrer ImportRagFiles
API-Anfrage auf „true“.
Folgendes ist wichtig:
- Bevor Sie den RAG-Korpus abfragen können, müssen Sie den ANN-Index mindestens einmal neu erstellen.
- Pro Projekt und Standort wird nur ein gleichzeitiger Neuaufbau des Index unterstützt.
Informationen zum Hochladen einer lokalen Datei in Ihren RAG-Korpus finden Sie unter RAG-Datei hochladen. Informationen zum Importieren von Daten in Ihr RAG-Korpus und zum Auslösen eines ANN-Index-Neubuilds finden Sie im folgenden Codebeispiel, in dem gezeigt wird, wie Daten aus Cloud Storage importiert werden. Informationen zu den unterstützten Datenquellen finden Sie unter Für RAG unterstützte Datenquellen.
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}'
}
}'
Verschlüsselung verwalten
Die Vertex AI RAG Engine bietet robuste Optionen zum Verwalten der Verschlüsselung Ihrer inaktiven Daten. Standardmäßig werden alle Nutzerdaten in RagManagedDb
mit einem Google-owned and Google-managed encryption keyverschlüsselt. Das ist die Standardeinstellung. Mit dieser Standardeinstellung können Sie ohne spezielle Konfiguration überprüfen, ob Ihre Daten sicher sind.
Wenn Sie mehr Kontrolle über die für die Verschlüsselung verwendeten Schlüssel benötigen, unterstützt die Vertex AI RAG Engine vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK). Mit CMEK können Sie Ihre kryptografischen Schlüssel, die in Cloud Key Management Service (KMS) verwaltet werden, zum Schutz Ihrer RAG-Korpusdaten verwenden.
Informationen zu CMEK-Einschränkungen für RAG-Korpora finden Sie unter CMEK-Einschränkungen für die Vertex AI RAG Engine.
KMS-Schlüssel einrichten und Berechtigungen erteilen
Bevor Sie einen mit CMEK verschlüsselten RAG-Korpus erstellen können, müssen Sie einen kryptografischen Schlüssel in Google Cloud KMS einrichten und dem Dienstkonto der Vertex AI RAG Engine die erforderlichen Berechtigungen zum Verwenden dieses Schlüssels erteilen.
Vorbereitung
Prüfen Sie, ob Ihr Nutzerkonto die entsprechenden IAM-Berechtigungen (Identity and Access Management) für das Google Cloud -Projekt hat, in dem Sie den KMS-Schlüssel und den RAG-Korpus erstellen möchten, um die folgenden Einrichtungsschritte auszuführen. Normalerweise ist eine Rolle wie die Cloud KMS-Administratorrolle (roles/cloudkms.admin
) erforderlich.
API aktivieren
So aktivieren Sie die Cloud KMS API:
- Rufen Sie die Google Cloud -Konsole auf.
- Wählen Sie das Projekt aus, in dem Sie Ihre Schlüssel verwalten und Ihren RAG-Korpus erstellen möchten.
- Geben Sie in der Suchleiste „Key Management“ ein und wählen Sie den Dienst „Key Management“ aus.
- Wenn die API nicht aktiviert ist, klicken Sie auf Aktivieren. Es kann einige Minuten dauern, bis die API vollständig bereitgestellt ist.
KMS-Schlüsselbund und -Schlüssel erstellen
So erstellen Sie ein Schlüsselbund:
Klicken Sie im Abschnitt Schlüsselverwaltung auf Schlüsselbund erstellen.
Geben Sie Folgendes ein:
- Schlüsselbundname: Geben Sie einen eindeutigen Namen für den Schlüsselbund ein, z. B. rag-engine-cmek-keys.
- Standorttyp: Wählen Sie „Region“ aus.
- Standort: Wählen Sie die ausgewählte Region aus, z. B.
us-central1
. Diese Region sollte idealerweise mit der Region übereinstimmen, in der sich Ihre RAG Engine-Ressourcen befinden.
Klicken Sie auf Erstellen.
So erstellen Sie einen Schlüssel im Schlüsselbund:
Nachdem Sie den Schlüsselbund erstellt haben, werden Sie aufgefordert, einen Schlüssel zu erstellen. Alternativ können Sie auch zu Schlüssel erstellen navigieren.
Geben Sie Folgendes ein:
- Schlüsselname: Geben Sie einen eindeutigen Namen für den Schlüssel ein, z. B.
my-rag-corpus-key
. - Schutzniveau: Wählen Sie ein Schutzniveau aus (Software oder HSM). Wenn Sie hardwaregestützte Schlüssel benötigen, wählen Sie HSM aus.
- Zweck: Wählen Sie Symmetrisches Ver-/Entschlüsseln aus. Dies ist für CMEK erforderlich.
- Quelle für Schlüsselmaterial: Wählen Sie Generierter Schlüssel aus.
- Rotationszeitraum: Optional. Recommended. Konfigurieren Sie einen Schlüsselrotationsplan gemäß den Sicherheitsrichtlinien Ihrer Organisation, z. B. alle 90 Tage.
- Schlüsselname: Geben Sie einen eindeutigen Namen für den Schlüssel ein, z. B.
Klicken Sie auf Erstellen.
So kopieren Sie den Namen der Schlüsselressource:
Rufen Sie nach dem Erstellen des Schlüssels die zugehörige Detailseite auf.
Suchen Sie den Ressourcennamen. Das Format dafür ist
projects/YOUR_PROJECT_ID/locations/YOUR_REGION/keyRings/YOUR_KEY_RING_NAME/cryptoKeys/YOUR_KEY_NAME/cryptoKeyVersions/1
.Kopieren Sie den Ressourcennamen und entfernen Sie den Teil
/cryptoKeyVersions/VERSION_NUMBER
. Der richtig formatierte Ressourcenname lautetprojects/YOUR_PROJECT_ID/locations/YOUR_REGION/keyRings/YOUR_KEY_RING_NAME/cryptoKeys/YOUR_KEY_NAME
.
Berechtigungen für den Vertex AI RAG Engine-Dienst-Agent erteilen
Damit die Vertex AI RAG-Engine Daten mit Ihrem KMS-Schlüssel verschlüsseln und entschlüsseln kann, benötigt der zugehörige Dienst-Agent die entsprechenden Berechtigungen für diesen bestimmten Schlüssel.
So ermitteln Sie Ihren Vertex AI RAG Engine-Dienst-Agent:
Rufen Sie in der Google Cloud Console für Ihr Projekt die Seite IAM & Verwaltung > IAM auf.
Aktivieren Sie auf der Seite „Identity and Access Management“ das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen.
Suchen Sie in der Filter- oder Suchleiste für die Liste der Hauptkonten nach dem Dienst-Agent für die Vertex AI RAG Engine. Sie folgt dem Muster
service-YOUR_PROJECT_NUMBER@gcp-sa-vertex-rag.iam.gserviceaccount.com
.
So erteilen Sie Berechtigungen für den KMS-Schlüssel:
Kehren Sie in der Google Cloud Console zum Key Management Service zurück.
Wählen Sie den Schlüsselbund mit dem von Ihnen erstellten Schlüssel aus.
Wählen Sie den von Ihnen erstellten Schlüssel aus.
Rufen Sie auf der Seite mit den Schlüsseldetails den Tab Berechtigungen auf.
Klicken Sie auf Hauptkonto hinzufügen.
Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Dienst-Agents der Vertex AI RAG Engine ein.
Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle „Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler“ (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) aus. Diese Rolle gewährt dem Dienst-Agent die erforderlichen Berechtigungen, um den Schlüssel für Verschlüsselungs- und Entschlüsselungsvorgänge zu verwenden.Klicken Sie auf Speichern.
RAG-Korpus mit vom Kunden verwalteter Verschlüsselung erstellen
In diesem Codebeispiel wird gezeigt, wie Sie einen RAG-Korpus erstellen, der mit einem vom Kunden verwalteten Verschlüsselungsschlüssel (Customer-Managed Encryption Key, CMEK) verschlüsselt ist.
Ersetzen Sie die Variablen in den folgenden Codebeispielen:
Python
import vertexai
from google.cloud import aiplatform
from vertexai import rag
from google.cloud.aiplatform_v1.types.encryption_spec import EncryptionSpec
PROJECT_ID = YOUR_PROJECT_ID
LOCATION = YOUR_RAG_ENGINE_LOCATION
DISPLAY_NAME = YOUR_RAG_CORPUS_DISPLAY_NAME
KMS_KEY_NAME = YOUR_KMS_KEY_NAME
vertexai.init(project=PROJECT_ID)
rag_corpus = rag.create_corpus(display_name=DISPLAY_NAME, encryption_spec=EncryptionSpec(kms_key_name=KMS_KEY_NAME))
REST
PROJECT_ID = YOUR_PROJECT_ID
LOCATION = YOUR_RAG_ENGINE_LOCATION
DISPLAY_NAME = YOUR_RAG_CORPUS_DISPLAY_NAME
KMS_KEY_NAME = YOUR_KMS_KEY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"encryption_spec" : {
"kms_key_name" : '\""${KMS_KEY_NAME}"\"'
}
}'
Nächste Schritte
- Weitere Informationen zu RagManagedDb finden Sie unter RagManagedDb.
- Informationen zum Importieren von Dateien und Ordnern aus Google Drive oder Cloud Storage finden Sie im Beispiel zum Importieren von RAG-Dateien.
- Informationen zum Auflisten von RAG-Dateien finden Sie im Beispiel zum Auflisten von RAG-Dateien.