Auf dieser Seite erfahren Sie, wie Sie Ihren RAG-Korpus mit Ihrer Pinecone-Datenbank verbinden.
Sie können auch dieses Notebook Vertex AI RAG Engine mit Pinecone verwenden.
Sie können Ihre Pinecone-Datenbankinstanz mit der Vertex AI RAG Engine verwenden, um eine Indexierung und eine vektorbasierte Ähnlichkeitssuche durchzuführen. Bei einer Ähnlichkeitssuche wird nach Textstellen gesucht, die dem gesuchten Text ähneln. Dazu ist die Verwendung eines Einbettungsmodells erforderlich. Das Einbettungsmodell erzeugt Vektordaten für jeden zu vergleichenden Textabschnitt. Die Ähnlichkeitssuche wird verwendet, um semantische Kontexte für die Fundierung abzurufen und so die genauesten Inhalte von Ihrem LLM zurückzugeben.
Mit der Vertex AI RAG Engine können Sie Ihre vollständig verwaltete Vektordatenbankinstanz weiterhin verwenden. Sie sind für die Bereitstellung verantwortlich. Die Vertex AI-RAG-Engine verwendet Ihre Vektordatenbank zum Speichern, Indexieren und Suchen.
Überlegen, ob Pinecone mit der Vertex AI RAG Engine verwendet werden soll
Prüfen Sie anhand der folgenden Punkte, ob die Verwendung der Pinecone-Datenbank die beste Wahl für Ihre RAG-Anwendung ist:
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 durch andere Elemente geändert werden kann.
Sie müssen einen Pinecone-API-Schlüssel angeben, damit die Vertex AI RAG Engine mit der Pinecone-Datenbank interagieren kann. Ihre Pinecone-API-Schlüssel werden von der Vertex AI-RAG-Engine nicht gespeichert und verwaltet. Stattdessen müssen Sie so vorgehen:
- Speichern Sie den Schlüssel im Google Cloud Secret Manager.
- Erteilen Sie dem Dienstkonto Ihres Projekts die Berechtigung für den Zugriff auf Ihr Secret.
- Geben Sie den Ressourcennamen Ihres Secrets für den Zugriff auf die Vertex AI-RAG-Engine an.
- Wenn Sie mit Ihrem RAG-Korpus interagieren, greift die Vertex AI RAG Engine mit Ihrem Dienstkonto auf Ihre geheime Ressource zu.
Der RAG-Korpus und der Pinecone-Index haben eine 1:1-Zuordnung. Diese Zuordnung erfolgt im Rahmen des
CreateRagCorpusAPI-Aufrufs oder desUpdateRagCorpusAPI-Aufrufs.
Pinecone-Index erstellen
So erstellen Sie Ihren Pinecone-Index:
Im Pinecone-Schnellstartleitfaden finden Sie die Indexkonfigurationen, die für Ihren Index angegeben werden müssen, damit er mit dem RAG-Korpus kompatibel ist.
Sie sollten darauf achten, dass sich der Pinecone-Index am selben Ort oder in der Nähe des Ortes befindet, an dem Sie die Vertex AI RAG Engine verwenden. Das hat folgende Gründe:
- Sie möchten die Latenz weiterhin niedrig halten.
- Sie möchten die Anforderungen an den Datenstandort erfüllen, die durch anwendbare Gesetze festgelegt sind.
Geben Sie beim Erstellen des Pinecone-Index die Einbettungsdimension an, die mit der Vertex AI RAG Engine verwendet werden soll. Diese Tabelle enthält die Dimensionen oder den Speicherort der Dimensionen:
Modell Dimensionsgröße Eigene Gecko-Daten 768 Abgestimmte eigene Gecko-Engine 768 E5 Weitere Informationen finden Sie unter Open Source-Einbettungsmodelle verwenden. Wählen Sie einen der folgenden unterstützten Distanzmesswerte aus:
cosinedotproducteuclidean
Optional: Wenn Sie einen podbasierten Index erstellen, müssen Sie
file_idim Feldpod.metadata_config.indexedangeben. Weitere Informationen finden Sie unter Selektive Metadatenindexierung.
Pinecone-API-Schlüssel erstellen
Die Vertex AI RAG Engine kann nur über Ihren API-Schlüssel eine Verbindung zu Ihrem Pinecone-Index herstellen, um die Authentifizierung und Autorisierung durchzuführen. 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 in Secret Manager speichern
Ein API-Schlüssel enthält vertrauliche personenidentifizierbare Informationen, die rechtlichen Anforderungen unterliegen. Wenn die vertraulichen personenidentifizierbaren Informationen kompromittiert oder missbraucht werden, kann dies für die jeweilige Person ein erhebliches Risiko oder einen erheblichen Schaden bedeuten. Um Risiken für Einzelpersonen bei der Verwendung von 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 Ihrem Vertex AI RAG Engine-Dienstkonto die Berechtigungen für Ihre Secrets und verwalten Sie die Zugriffssteuerung auf der 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 Hauptkonten 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 den Namen der Secret-Ressource.
Wenn API-Anfragen an Ihre Pinecone-Indexe gesendet werden, verwendet die Vertex AI-RAG-Engine jedes Dienstkonto, um den API-Schlüssel zu lesen, der den geheimen Ressourcen in Secret Manager aus Ihren Projekten entspricht.
Vertex AI RAG Engine-Dienstkonto bereitstellen
Wenn Sie den ersten RAG-Korpus in Ihrem Projekt erstellen, erstellt Vertex AI RAG Engine ein dediziertes Dienstkonto. Sie finden Ihr Dienstkonto auf der Seite „Identitäts- und Zugriffsverwaltung“ Ihres Projekts.
Das Dienstkonto hat das folgende 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 einem RAG-Korpus zuordnen. Nachdem die Verknüpfung hergestellt wurde, ist diese Bindung für die gesamte Lebensdauer des RAG-Corpus dauerhaft. Die Verknüpfung kann entweder über CreateRagCorpus oder die UpdateRagCorpus API erfolgen.
Damit die Verknüpfung als abgeschlossen gilt, müssen Sie drei Schlüsselfelder im RAG-Corpus festlegen:
rag_vector_db_config.pinecone: Mit diesem Feld können Sie die Vektordatenbank auswählen, die Sie Ihrem RAG-Korpus zuordnen möchten. Es muss während desCreateRagCorpus-API-Aufrufs festgelegt werden. Wenn sie nicht festgelegt ist, wird Ihrem RAG-Korpus die StandardvektordatenbankRagManagedDbzugewiesen.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 desCreateRagCorpus-Aufrufs festlegen oder ihn beim Aufrufen derUpdateRagCorpus-API angeben.rag_vector_db_config.api_auth.api_key_config.api_key_secret_version: 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 desCreateRagCorpus-Aufrufs festlegen oder ihn beim Aufrufen derUpdateRagCorpus-API angeben. Solange Sie dieses Feld nicht angeben, können Sie keine Daten in den RAG-Korpus importieren.
Dieses Feld sollte 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 geheimen Ressource mit Ihren Berechtigungen haben, können Sie Ihren RAG-Korpus erstellen und ihn Ihrem Pinecone-Index zuordnen. Das wird in diesem Beispielcode gezeigt.
Wenn Sie zum ersten Mal ein RAG-Korpus erstellen, haben Sie die Dienstkonto-Informationen noch nicht. Die Felder sind jedoch optional und können dem RAG-Korpus über die UpdateRagCorpus API zugeordnet werden.
Ein Beispiel dafür, wie Sie den RAG-Korpus erstellen, ohne die Dienstkontoinformationen anzugeben, finden Sie unter RAG-Korpus ohne Indexname oder API-Schlüssel erstellen.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten 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 Indexname oder API-Schlüssel erstellen
Wenn dies Ihr erster RAG-Korpus ist und Sie keinen Zugriff auf die Details Ihres Dienstkontos haben oder die Bereitstellungsschritte für Ihren Pinecone-Index noch nicht abgeschlossen haben, können Sie Ihren RAG-Korpus trotzdem erstellen. Sie können das RAG-Corpus dann einer leeren Pinecone-Konfiguration zuordnen und die Details später hinzufügen.
Folgendes muss berücksichtigt werden:
- Wenn Sie den Indexnamen und den Namen des API-Schlüssel-Secrets nicht angeben, können Dateien nicht in das RAG-Corpus importiert werden.
- Wenn Sie Pinecone als Vektordatenbank für Ihren RAG-Korpus auswählen, kann diese später nicht mehr in eine andere Datenbank geändert werden.
In diesem Codebeispiel wird gezeigt, wie Sie einen RAG-Korpus mit Pinecone erstellen, ohne einen Pinecone-Indexnamen oder einen API-Secret-Namen anzugeben. Verwenden Sie die UpdateRagCorpus API, 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 UpdateRagCorpus API 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 Daten in den RAG-Korpus importieren.
| Feld | Änderbarkeit | Erforderlich oder optional |
|---|---|---|
rag_vector_db_config.vector_db |
Nach der Auswahl nicht mehr änderbar. | Erforderlich |
rag_vector_db_config.pinecone.index_name |
Kann nicht mehr geändert werden, nachdem Sie das Feld für den RAG-Korpus festgelegt haben. | 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}