Auf dieser Seite erfahren Sie, wie Sie Ihren RAG-Korpus mit Ihrer Pinecone Datenbank verbinden.
Sie können auch dieses Notebook verwenden: Vertex AI RAG Engine with Pinecone.
Sie können Ihre Pinecone-Datenbankinstanz mit der Vertex AI RAG Engine verwenden, um eine vektorbasierte Ähnlichkeitssuche durchzuführen und zu indexieren. Bei einer Ähnlichkeitssuche werden Textteile gesucht, die dem gesuchten Text ähneln. Dazu ist ein Einbettungsmodell erforderlich. Das Einbettungsmodell erzeugt Vektordaten für jeden zu vergleichenden Textteil. Die Ähnlichkeitssuche wird verwendet, um semantische Kontexte für Fundierung abzurufen, damit das LLM die genauesten Inhalte zurückgeben kann.
Mit der Vertex AI RAG Engine können Sie Ihre vollständig verwaltete Vektordatenbankinstanz weiterhin verwenden, für deren Bereitstellung Sie verantwortlich sind. Die Vertex AI RAG Engine verwendet Ihre Vektordatenbank für die Speicherung, Indexverwaltung und Suche.
Überlegungen zur Verwendung von Pinecone mit der Vertex AI RAG Engine
Überlegen Sie, ob die Verwendung der Pinecone-Datenbank die beste Wahl für Ihre RAG-Anwendung ist. Berücksichtigen Sie dabei Folgendes:
Sie müssen die Skalierung Ihrer Pinecone-Datenbankinstanz erstellen, konfigurieren und verwalten.
Die Vertex AI RAG Engine verwendet den Standard-Namespace in Ihrem Index. Achten Sie darauf, dass dieser Namespace nicht von anderen Elementen geändert werden kann.
Sie müssen einen Pinecone-API-Schlüssel angeben, mit dem die Vertex AI RAG Engine mit der Pinecone-Datenbank interagieren kann. Die Vertex AI RAG Engine speichert und verwaltet Ihren Pinecone-API-Schlüssel nicht. Stattdessen müssen Sie Folgendes tun:
- Speichern Sie Ihren Schlüssel im Google Cloud Secret Manager.
- Gewähren Sie dem Dienstkonto Ihres Projekts Berechtigungen für den Zugriff auf Ihr Secret.
- Gewähren Sie der Vertex AI RAG Engine Zugriff auf den Ressourcennamen Ihres Secrets.
- Wenn Sie mit Ihrem RAG-Korpus interagieren, greift die Vertex AI RAG Engine mit Ihrem Dienstkonto auf Ihre Secret-Ressource zu.
Es gibt eine 1:1-Zuordnung zwischen dem RAG-Korpus und dem Pinecone-Index. Diese Zuordnung erfolgt im Rahmen des
CreateRagCorpusAPI Aufrufs oder desUpdateRagCorpusAPI-Aufrufs.
Pinecone-Index erstellen
So erstellen Sie Ihren Pinecone-Index:
Im Pinecone-Schnellstart leitfaden finden Sie die Indexkonfigurationen, die für Ihren Index angegeben werden müssen, damit er mit dem Index RAG-Korpus kompatibel ist.
Der Speicherort des Pinecone Index sollte aus folgenden Gründen mit dem Speicherort übereinstimmen oder in der Nähe des Speicherorts liegen, an dem Sie die Vertex AI RAG Engine verwenden:
- Sie möchten die Latenzzeiten reduzieren.
- Sie möchten die Anforderungen an den Datenstandort erfüllen, die durch geltende Gesetze festgelegt sind.
Geben Sie beim Erstellen des Pinecone-Index die Einbettungsdimension an, die mit der Vertex AI RAG Engine verwendet werden soll. In dieser Tabelle finden Sie die Dimensionsgrößen oder den Speicherort der Dimensionsgrößen:
Modell Dimensionsgröße Selbst erhobene Daten – Gecko 768 Optimiertes Gecko-Modell mit selbst erhobenen Daten 768 E5 Weitere Informationen finden Sie unter Open Source-Einbettungsmodelle verwenden. Wählen Sie eine der folgenden unterstützten Distanzmetriken aus:
cosinedotproducteuclidean
Optional: Wenn Sie einen podbasierten Index erstellen, müssen Sie die
file_idim Feldpod.metadata_config.indexedangeben. Weitere Informationen finden Sie unter Selektive Metadaten indexierung.
Pinecone-API-Schlüssel erstellen
Die Vertex AI RAG Engine kann nur mit Ihrem API-Schlüssel für die Authentifizierung und Autorisierung eine Verbindung zu Ihrem Pinecone-Index herstellen. Sie müssen der offiziellen Pinecone-Anleitung zur Authentifizierung folgen, um die API-Schlüssel-basierte Authentifizierung in Ihrem Pinecone Projekt zu konfigurieren.
API-Schlüssel im Secret Manager speichern
Ein API-Schlüssel enthält vertrauliche personenidentifizierbare Informationen (Sensitive Personally Identifiable Information, SPII), die gesetzlichen Anforderungen unterliegen. Wenn die SPII-Daten kompromittiert oder missbraucht werden, kann dies für eine Person ein erhebliches Risiko oder Schaden bedeuten. Um die Risiken für eine Person bei der Verwendung der Vertex AI RAG Engine zu minimieren, sollten Sie Ihren API-Schlüssel nicht speichern und verwalten und den unverschlüsselten API-Schlüssel nicht weitergeben.
Zum Schutz von SPII müssen Sie Folgendes tun:
Speichern Sie Ihren API-Schlüssel in Secret Manager.
Gewähren Sie dem Dienstkonto der Vertex AI RAG Engine die Berechtigungen für Ihre Secrets und verwalten Sie die Zugriffssteuerung auf Ebene der Secret-Ressource.
Rufen Sie die Berechtigungen Ihres Projekts auf.
Aktivieren Sie die Option Von Google bereitgestellte Rollenzuweisungen einschließen.
Suchen Sie nach dem Dienstkonto im folgenden Format:
service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.comBearbeiten Sie die Prinzipale des Dienstkontos.
Fügen Sie dem Dienstkonto die Rolle
Secret Manager Secret Accessorhinzu.
Übergeben Sie beim Erstellen oder Aktualisieren des RAG-Korpus den Namen der Secret-Ressource an die Vertex AI RAG Engine und speichern Sie ihn.
Bei API-Anfragen an Ihre Pinecone-Indizes verwendet die Vertex AI RAG Engine jedes Dienstkonto, um den API-Schlüssel zu lesen, der Ihren Secret-Ressourcen im Secret Manager in Ihren Projekten entspricht.
Dienstkonto der Vertex AI RAG Engine bereitstellen
Wenn Sie den ersten RAG-Korpus in Ihrem Projekt erstellen, erstellt die Vertex AI RAG Engine ein dediziertes Dienstkonto. Sie finden Ihr Dienstkonto auf der Seite „ Identitäts- und Zugriffsverwaltung“ Ihres Projekts.
Das Dienstkonto hat dieses feste Format:
service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com
Beispiel:
service-123456789@gcp-sa-vertex-rag.iam.gserviceaccount.com
RAG-Korpus vorbereiten
Wenn Sie Ihren Pinecone-Index mit der Vertex AI RAG Engine verwenden möchten, müssen Sie den Index während der Erstellung mit einem RAG-Korpus verknüpfen. Nach der Verknüpfung ist diese Bindung für die gesamte Lebensdauer des RAG-Korpus dauerhaft. Die Verknüpfung kann entweder mit der API CreateRagCorpus oder UpdateRagCorpus erfolgen.
Damit die Verknüpfung als abgeschlossen gilt, müssen Sie drei Schlüsselfelder im RAG-Korpus festlegen:
rag_vector_db_config.pinecone: Mit diesem Feld können Sie eine Vektordatenbank auswählen, die Sie mit Ihrem RAG-Korpus verknüpfen möchten. Es muss während des API-AufrufsCreateRagCorpusfestgelegt werden. Wenn es nicht festgelegt ist, wird Ihrem RAG-Korpus die Standardauswahl für die VektordatenbankRagManagedDbzugewiesen.rag_vector_db_config.pinecone.index_name: Dies ist der Name, der zum Erstellen des Pinecone-Index verwendet wird, der mit dem RAG-Korpus verwendet wird. Sie können den Namen während des AufrufsCreateRagCorpusfestlegen oder ihn angeben, wenn Sie die APIUpdateRagCorpusaufrufen.rag_vector_db_config.api_auth.api_key_config.api_key_secret_version: Dies ist der vollständige Ressourcenname des Secrets, das im Secret Manager gespeichert ist und Ihren Pinecone-API-Schlüssel enthält. Sie können den Namen während des AufrufsCreateRagCorpusfestlegen oder ihn angeben, wenn Sie die APIUpdateRagCorpusaufrufen. Solange Sie dieses Feld nicht angeben, können Sie keine Daten in den RAG-Korpus importieren.
Dieses Feld muss das folgende Format haben:
projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}
RAG-Korpus erstellen
Wenn Sie Zugriff auf den Namen Ihres Pinecone-Index und den Namen der Secret-Ressource haben und Ihre Berechtigungen festgelegt sind, können Sie Ihren RAG-Korpus erstellen und ihn mit Ihrem Pinecone-Index verknüpfen. Dies wird in diesem Beispielcode gezeigt.
Wenn Sie zum ersten Mal einen RAG-Korpus erstellen, sind die Dienstkontoinformationen noch nicht verfügbar. Die Felder sind jedoch optional und können mit der API UpdateRagCorpus mit dem RAG-Korpus verknüpft werden.
Ein Beispiel für das Erstellen des RAG-Korpus ohne Angabe der Dienst kontoinformationen finden Sie unter RAG-Korpus ohne Indexnamen oder API Schlüssel erstellen.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie der Python Einrichtungsanleitung in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
REST
# Set your project ID under which you want to create the corpus
PROJECT_ID = "YOUR_PROJECT_ID"
# Choose a display name for your corpus
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
# Set your Pinecone index name
PINECONE_INDEX_NAME=YOUR_INDEX_NAME
# Set the full resource name of your secret. Follows the format
# projects/{PROJECT_NUMER}/secrets/{SECRET_ID}/versions/{VERSION_ID}
SECRET_RESOURCE_NAME=YOUR_SECRET_RESOURCE_NAME
# Call CreateRagCorpus API with all the Vector DB information.
# You can also add the embedding model choice or set other RAG corpus parameters on
# this call per your choice.
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" : {
"pinecone": {"index_name": '\""${PINECONE_INDEX_NAME}"\"'},
"api_auth": {"api_key_config":
{"api_key_secret_version": '\""${SECRET_RESOURCE_NAME}"\"'}
}
}
}'
# To poll the status of your RAG corpus creation, get the operation_id returned in
# response of your CreateRagCorpus call.
OPERATION_ID="YOUR_OPERATION_ID"
# Poll Operation status until done = true in the response.
# The response to this call will contain the ID for your created RAG corpus
curl -X GET \
-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/operations/${OPERATION_ID}
RAG-Korpus ohne Indexnamen oder API-Schlüssel erstellen
Wenn dies Ihr erster RAG-Korpus ist und Sie keinen Zugriff auf Ihre Dienst kontodetails haben oder die Bereitstellungsschritte für Ihren Pinecone-Index noch nicht abgeschlossen haben, können Sie trotzdem einen RAG-Korpus erstellen. Anschließend können Sie den RAG-Korpus mit einer leeren Pinecone-Konfiguration verknüpfen und die Details später hinzufügen.
Folgendes ist zu beachten:
- Wenn Sie den Indexnamen und den Namen des API-Schlüssel-Secrets nicht angeben, können keine Dateien in den RAG-Korpus importiert werden.
- Wenn Sie Pinecone als Vektordatenbank für Ihren RAG-Korpus auswählen, kann sie später nicht mehr in eine andere Datenbank geändert werden.
Dieses Codebeispiel zeigt, wie Sie einen RAG-Korpus mit Pinecone erstellen, ohne einen Pinecone-Indexnamen oder einen Namen für das API-Secret anzugeben. Verwenden Sie die API UpdateRagCorpus, um die fehlenden Informationen später anzugeben.
Python
import vertexai
from vertexai.preview import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=PROJECT_ID, location="us-central1")
# Configure the Pinecone vector DB information
vector_db = rag.Pinecone()
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_NAME"
rag_corpus = rag.create_corpus(display_name=DISPLAY_NAME, vector_db=vector_db)
REST
# Set your project ID under which you want to create the corpus
PROJECT_ID = "YOUR_PROJECT_ID"
# Choose a display name for your corpus
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
# Call CreateRagCorpus API with all the Vector DB information.
# You can also add the embedding model choice or set other RAG corpus parameters on
# this call per your choice.
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" : {
"pinecone": {}
}
}'
# To poll the status of your RAG corpus creation, get the operation_id returned in
# response of your CreateRagCorpus call.
OPERATION_ID="YOUR_OPERATION_ID"
# Poll Operation status until done = true in the response.
# The response to this call will contain the ID for your created RAG corpus
curl -X GET \
-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/operations/${OPERATION_ID}
RAG-Korpus aktualisieren
Mit der API UpdateRagCorpus können Sie die Konfiguration der Vektordatenbank aktualisieren.
Wenn der Pinecone-Indexname und die Secret-Version des API-Schlüssels noch nicht festgelegt sind, können Sie die Felder mit der Pinecone API aktualisieren. Die Auswahl einer Vektordatenbank kann nicht aktualisiert werden. Die Angabe des API-Schlüssel-Secrets ist optional. Wenn Sie das API-Schlüssel-Secret jedoch nicht angeben, können Sie keine Daten in den RAG-Korpus importieren.
| Feld | Veränderlichkeit | Erforderlich oder optional |
|---|---|---|
rag_vector_db_config.vector_db |
Nach der Auswahl nicht mehr veränderbar. | Erforderlich |
rag_vector_db_config.pinecone.index_name |
Nachdem Sie das Feld im RAG-Korpus festgelegt haben, nicht mehr veränderbar. | Erforderlich |
rag_vector_db_config.api_auth.api_key_config.api_key_secret_version |
Veränderlich. Nachdem Sie den API-Schlüssel festgelegt haben, können Sie ihn nicht mehr entfernen. | Optional |
Python
import vertexai
from vertexai.preview import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=PROJECT_ID, location="us-central1")
# Configure the Pinecone vector DB information
vector_db = rag.Pinecone(index_name=)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_NAME"
rag_corpus = rag.create_corpus(display_name=DISPLAY_NAME, vector_db=vector_db)
REST
# Set your project ID for the corpus that you want to create.
PROJECT_ID = "YOUR_PROJECT_ID"
# Set your Pinecone index name
PINECONE_INDEX_NAME=YOUR_INDEX_NAME
# Set the full resource name of your secret. Follows the format
# projects/{PROJECT_NUMER}/secrets/{SECRET_ID}/versions/{VERSION_ID}
SECRET_RESOURCE_NAME=YOUR_SECRET_RESOURCE_NAME
# Call UpdateRagCorpus API with the Vector DB information.
curl -X PATCH \
-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 '{
"rag_vector_db_config" : {
"pinecone": {"index_name": '\""${PINECONE_INDEX_NAME}"\"'},
"api_auth": {"api_key_config":
{"api_key_secret_version": '\""${SECRET_RESOURCE_NAME}"\"'}
}
}
}'
# To poll the status of your RAG corpus creation, get the operation_id returned in
# response of your CreateRagCorpus call.
OPERATION_ID="YOUR_OPERATION_ID"
# Poll Operation status until done = true in the response.
# The response to this call will contain the ID for your created RAG corpus
curl -X GET \
-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/operations/${OPERATION_ID}