Auf dieser Seite erfahren Sie, wie Sie Ihren RAG-Corpus mit Ihrer Pinecone-Datenbank verbinden.
Sie können auch mit diesem Notebook RAG Engine mit Pinecone weitermachen.
Sie können Ihre Pinecone-Datenbankinstanz mit der RAG Engine verwenden, um zu indexieren und eine vektorbasierte Ähnlichkeitssuche durchzuführen. Bei einer Ähnlichkeitssuche werden Textstücke gefunden, die dem gesuchten Text ähneln. Dazu ist ein Embedding-Modell erforderlich. Das Einbettungsmodell generiert Vektordaten für jeden zu vergleichenden Text. Mit der Ähnlichkeitssuche werden semantische Kontexte für die Wahrheitsabgleich abgerufen, um die genauesten Inhalte aus Ihrem LLM zurückzugeben.
Mit der RAG Engine können Sie Ihre vollständig verwaltete Vektordatenbankinstanz weiterhin verwenden, für deren Bereitstellung Sie verantwortlich sind. Die RAG-Engine verwendet Ihre Vektordatenbank für die Speicherung, Indexverwaltung und Suche.
Pinecone mit der RAG-Engine verwenden
Ü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 RAG Engine verwendet den Standard-Namespace Ihres Index. Achten Sie darauf, dass dieser Namespace nicht von anderen geändert werden kann.
Sie müssen einen Pinecone API-Schlüssel angeben, mit dem die RAG Engine mit der Pinecone-Datenbank interagieren kann. Die RAG Engine speichert und verwaltet Ihren Pinecone API-Schlüssel nicht. Gehen Sie stattdessen so vor:
- Speichern Sie den 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 RAG Engine Zugriff auf den Ressourcennamen Ihres Secrets.
- Wenn Sie mit Ihrem RAG-Corpus interagieren, greift die RAG Engine über Ihr Dienstkonto auf Ihre geheime Ressource zu.
Der RAG-Korpus und der Pinecone-Index sind 1:1 zugeordnet. Diese Verknüpfung erfolgt im Rahmen des
CreateRagCorpus
API-Aufrufs oder desUpdateRagCorpus
API-Aufrufs.
Pinecone-Index erstellen
So erstellen Sie einen Pinecone-Index:
In der Schnellstartanleitung für Pinecone finden Sie die Indexkonfigurationen, die für Ihren Index angegeben werden müssen, damit er mit dem RAG-Korpus kompatibel ist.
Der Speicherort des Pinecone-Index sollte sich aus folgenden Gründen am selben Ort oder in der Nähe des Speicherorts befinden, an dem Sie die RAG Engine verwenden:
- Sie möchten niedrige Latenzen beibehalten.
- Sie möchten die Anforderungen an den Datenstandort erfüllen, die durch anwendbare Gesetze festgelegt sind.
Geben Sie beim Erstellen des Pinecone-Indexes die Einbettungsdimension an, die mit der RAG-Engine verwendet werden soll. In dieser Tabelle finden Sie die Dimensionen und deren Größe:
Modell Dimensionsgröße Eigene Gecko-Daten 768 Optimiertes Gecko-Erstanbieter-Script 768 E5 Weitere Informationen finden Sie unter Open Source-Einbettungsmodelle verwenden. Wählen Sie einen der folgenden unterstützten Entfernungsmesswerte aus:
cosine
dotproduct
euclidean
Optional: Wenn Sie einen podbasierten Index erstellen, müssen Sie das
file_id
im Feldpod.metadata_config.indexed
angeben. Weitere Informationen finden Sie unter Selektive Metadatenindexierung.
Pinecone API-Schlüssel erstellen
Die RAG Engine kann nur mit Ihrem Pinecone-Index eine Verbindung herstellen, wenn Sie Ihren API-Schlüssel für die Authentifizierung und Autorisierung verwenden. Folgen Sie der offiziellen Anleitung von Pinecone zur Authentifizierung, um die API-Schlüssel-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 vertrauliche personenidentifizierbare Informationen manipuliert oder missbraucht werden, kann das für eine Person ein erhebliches Risiko oder einen erheblichen Schaden bedeuten. Um die Risiken für eine Person bei der Verwendung der RAG Engine zu minimieren, sollten Sie Ihren API-Schlüssel nicht speichern und verwalten und den unverschlüsselten API-Schlüssel nicht weitergeben.
Um SPII zu schützen, müssen Sie Folgendes tun:
Speichern Sie Ihren API-Schlüssel in Secret Manager.
Gewähren Sie Ihrem RAG Engine-Dienstkonto die Berechtigungen für Ihre Secrets und verwalten Sie die Zugriffssteuerung auf Secret-Ressourcenebene.
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.com
Bearbeiten Sie die Hauptkonten des Dienstkontos.
Fügen Sie dem Dienstkonto die Rolle
Secret Manager Secret Accessor
hinzu.
Geben Sie beim Erstellen oder Aktualisieren des RAG-Corpus den Namen der Secret-Ressource an die RAG Engine weiter und speichern Sie den Namen der Secret-Ressource.
Wenn API-Anfragen an Ihre Pinecone-Indexe gesendet werden, verwendet die RAG Engine jedes Dienstkonto, um den API-Schlüssel zu lesen, der Ihren geheimen Ressourcen in Secret Manager aus Ihren Projekten entspricht.
RAG Engine-Dienstkonto bereitstellen
Wenn Sie den ersten RAG-Corpus in Ihrem Projekt erstellen, erstellt die RAG Engine ein spezielles Dienstkonto. Sie finden Ihr Dienstkonto auf der Seite „Identitäts- und Zugriffsverwaltung“ Ihres Projekts.
Das Dienstkonto hat folgendes 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 RAG Engine verwenden möchten, müssen Sie ihn während der Erstellung mit einem RAG-Korpus verknüpfen. Nach der Verknüpfung ist diese Bindung für die gesamte Lebensdauer des RAG-Corpus dauerhaft. Die Verknüpfung kann entweder über die CreateRagCorpus
- oder die UpdateRagCorpus
API erfolgen.
Damit die Verknüpfung als vollständig betrachtet wird, müssen Sie drei Schlüsselfelder im RAG-Corpus festlegen:
rag_vector_db_config.pinecone
: Mit diesem Feld können Sie eine Vektordatenbank auswählen, die Sie Ihrem RAG-Corpus zuordnen möchten. Es muss während desCreateRagCorpus
API-Aufrufs festgelegt werden. Andernfalls wird Ihrem RAG-Corpus die StandardvektordatenbankRagManagedDb
zugewiesen.rag_vector_db_config.pinecone.index_name
: Dies ist der Name, mit dem der Pinecone-Index erstellt wurde, der mit dem RAG-Korpus verwendet wird. Sie können den Namen beimCreateRagCorpus
-Aufruf festlegen oder beim Aufrufen derUpdateRagCorpus
API angeben.rag_vector_db_config.api_auth.api_key_config.api_key_secret_version
: Das 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 beimCreateRagCorpus
-Aufruf festlegen oder beim Aufrufen derUpdateRagCorpus
API angeben. Solange Sie dieses Feld nicht angegeben haben, können Sie keine Daten in den RAG-Corpus 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-Indexes und den Namen der geheimen Ressource mit festgelegten Berechtigungen haben, können Sie Ihren RAG-Korpus erstellen und mit Ihrem Pinecone-Index verknüpfen. Das wird in diesem Beispielcode veranschaulicht.
Wenn Sie zum ersten Mal einen RAG-Corpus erstellen, haben Sie noch keine Informationen zum Dienstkonto. Die Felder sind jedoch optional und können über die UpdateRagCorpus
API mit dem RAG-Corpus verknüpft werden.
Ein Beispiel zum Erstellen des RAG-Korpus ohne Angabe der Informationen zum Dienstkonto finden Sie unter RAG-Korpus ohne Indexnamen 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 Indexnamen 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 den RAG-Corpus dann mit einer leeren Pinecone-Konfiguration verknüpfen und die Details später hinzufügen.
Beachten Sie dabei Folgendes:
- Wenn Sie den Indexnamen und den geheimen Namen des API-Schlüssels 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 später nicht zu einer anderen Datenbank gewechselt werden.
In diesem Codebeispiel wird gezeigt, wie Sie einen RAG-Korpus mit Pinecone erstellen, ohne einen Pinecone-Indexnamen oder 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 Name des Pinecone-Indexes und die Secret-Version des API-Schlüssels noch nicht festgelegt wurden, können Sie die Felder mit der Pinecone API aktualisieren. Die Auswahl einer Vektordatenbank kann nicht aktualisiert werden. Das Secret des API-Schlüssels ist optional. Wenn Sie das API-Schlüssel-Secret jedoch nicht angeben, können Sie Daten in den RAG-Corpus importieren.
Feld | Veränderlichkeit | Erforderlich oder optional |
---|---|---|
rag_vector_db_config.vector_db |
Sie können Ihre Auswahl nicht mehr ändern. | Erforderlich |
rag_vector_db_config.pinecone.index_name |
Kann nach dem Festlegen des Felds im RAG-Korpus nicht mehr geändert werden. | 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 löschen. | 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}
Nächste Schritte
- Weitere Informationen zur Auswahl von Einbettungsmodellen finden Sie unter Einbettungsmodelle mit der RAG Engine verwenden.
- Weitere Informationen zum Importieren von Dateien finden Sie unter RAG-Dateien importieren.