Weaviate-Datenbank mit Vertex AI RAG Engine verwenden

Auf dieser Seite wird beschrieben, wie Sie Ihren RAG Engine-Corpus mit Ihrer Weaviate-Datenbank verbinden.

Sie können auch dieses Notebook RAG Engine with Weaviate verwenden.

Sie können Ihre Weaviate-Datenbankinstanz, eine Open-Source-Datenbank, mit 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 das Grounding abzurufen und so die genauesten Inhalte von Ihrem LLM zurückzugeben.

Mit RAG Engine können Sie Ihre vollständig verwaltete Vektordatenbankinstanz weiterhin verwenden. Sie sind für die Bereitstellung verantwortlich. Die RAG Engine verwendet die Vektordatenbank zum Speichern, Verwalten von Indexen und Suchen.

Hinweise

Beachten Sie die folgenden Schritte, bevor Sie die Weaviate-Datenbank verwenden:

  1. Sie müssen Ihre Weaviate-Datenbankinstanz und -Sammlung erstellen, konfigurieren und bereitstellen. Folgen Sie der Anleitung unter Weaviate-Sammlung erstellen, um eine Sammlung basierend auf Ihrem Schema einzurichten.
  2. Sie müssen einen Weaviate-API-Schlüssel angeben, damit RAG Engine mit der Weaviate-Datenbank interagieren kann. Die RAG Engine unterstützt die API-schlüsselbasierten AuthN- und AuthZ-APIs, die eine Verbindung zu Ihrer Weaviate-Datenbank herstellen und eine HTTPS-Verbindung unterstützen.
  3. RAG Engine speichert und verwaltet Ihren Weaviate-API-Schlüssel nicht. Stattdessen müssen Sie so vorgehen:
    1. Speichern Sie den Schlüssel im Google Cloud Secret Manager.
    2. Gewähren Sie dem Dienstkonto Ihres Projekts die Berechtigung, auf Ihr Secret zuzugreifen.
    3. Geben Sie den Ressourcennamen Ihres Secrets für den RAG Engine-Zugriff an.
    4. Wenn Sie mit Ihrer Weaviate-Datenbank interagieren, greift die RAG Engine mit Ihrem Dienstkonto auf Ihre geheime Ressource zu.
  4. Der RAG Engine-Korpus und die Weaviate-Sammlung haben eine Eins-zu-eins-Zuordnung. RAG-Dateien werden in einer Weaviate-Datenbank-Sammlung gespeichert. Wenn ein Aufruf an die CreateRagCorpus API oder die UpdateRagCorpus API erfolgt, wird der RAG-Korpus mit der Datenbank-Collection verknüpft.
  5. Zusätzlich zu semantischen Suchen auf Grundlage von dichten Einbettungen wird die Hybridsuche mit RAG Engine über eine Weaviate-Datenbank unterstützt. Sie können auch die Gewichtung zwischen der Ähnlichkeit von dichten und dünnbesetzten Vektoren in einer Hybridsuche anpassen.

Weaviate-Datenbank bereitstellen

Bevor Sie die Weaviate-Datenbank mit der RAG Engine verwenden können, müssen Sie Folgendes tun:

  1. Konfigurieren und stellen Sie Ihre Weaviate-Datenbankinstanz bereit.
  2. Bereiten Sie den HTTPS-Endpunkt vor.
  3. Erstellen Sie Ihre Weaviate-Sammlung.
  4. Stellen Sie Weaviate mit Ihrem API-Schlüssel über AuthN und AuthZ bereit.
  5. Stellen Sie Ihr RAG Engine-Dienstkonto bereit.

Weaviate-Datenbankinstanz konfigurieren und bereitstellen

Sie müssen der offiziellen Weaviate-Kurzanleitung folgen. Sie können jedoch den optionalen Google Cloud Marketplace-Leitfaden verwenden.

Sie können Ihre Weaviate-Instanz überall einrichten, solange der Weaviate-Endpunkt für die Konfiguration und Bereitstellung in Ihrem Projekt zugänglich ist. Anschließend können Sie Ihre Weaviate-Datenbankinstanz vollständig verwalten.

Da RAG Engine in keiner Phase des Lebenszyklus Ihrer Weaviate-Datenbankinstanz beteiligt ist, müssen Sie RAG Engine Berechtigungen erteilen, damit Daten in Ihrer Weaviate-Datenbank gespeichert und durchsucht werden können. Sie sind auch dafür verantwortlich, dass die Daten in Ihrer Datenbank von der RAG Engine verwendet werden können. Wenn Sie beispielsweise Ihre Daten ändern, ist die RAG-Engine nicht für unerwartete Verhaltensweisen verantwortlich, die sich aus diesen Änderungen ergeben.

HTTPS-Endpunkt vorbereiten

Achten Sie beim Bereitstellen von Weaviate darauf, dass Sie einen HTTPS-Endpunkt erstellen. Obwohl HTTP-Verbindungen unterstützt werden, bevorzugen wir, dass der Traffic der RAG-Engine und der Weaviate-Datenbank eine HTTPS-Verbindung verwendet.

Weaviate-Sammlung erstellen

Da der RAG Engine-Korpus und die Weaviate-Sammlung eine 1:1-Zuordnung haben, müssen Sie eine Sammlung in Ihrer Weaviate-Datenbank erstellen, bevor Sie Ihre Sammlung dem RAG Engine-Korpus zuordnen. Diese einmalige Verknüpfung wird hergestellt, wenn Sie die CreateRagCorpus API oder die UpdateRagCorpus API aufrufen.

Wenn Sie eine Sammlung in Weaviate erstellen, müssen Sie das folgende Schema verwenden:

Eigenschaft Datentyp
fileId text
corpusId text
chunkId text
chunkDataType text
chunkData text
fileOriginalUri text

API-Schlüssel verwenden, um Weaviate mit AuthN und AuthZ bereitzustellen

Die Bereitstellung des Weaviate-API-Schlüssels umfasst die folgenden Schritte:

  1. Erstellen Sie den Weaviate-API-Schlüssel.
  2. Konfigurieren Sie Weaviate mit Ihrem Weaviate-API-Schlüssel.
  3. Speichern Sie Ihren Weaviate-API-Schlüssel in Secret Manager.

API-Schlüssel erstellen

Die RAG Engine kann nur über Ihren API-Schlüssel für die Authentifizierung und Autorisierung eine Verbindung zu Ihren Weaviate-Datenbankinstanzen herstellen. Sie müssen der offiziellen Weaviate-Anleitung zur Authentifizierung folgen, um die API-Schlüssel-basierte Authentifizierung in Ihrer Weaviate-Datenbankinstanz zu konfigurieren.

Wenn zum Erstellen des Weaviate-API-Schlüssels Identitätsinformationen erforderlich sind, die mit der RAG Engine verknüpft werden sollen, müssen Sie Ihr erstes Korpus erstellen und Ihr RAG Engine-Dienstkonto als Identität verwenden.

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 der RAG Engine zu minimieren, sollten Sie Ihren API-Schlüssel nicht speichern und verwalten und den unverschlüsselten API-Schlüssel nicht weitergeben.

So schützen Sie vertrauliche personenbezogene Informationen:

  1. Speichern Sie Ihren API-Schlüssel in Secret Manager.
  2. Gewähren Sie Ihrem RAG Engine-Dienstkonto die Berechtigungen für Ihre Secrets und verwalten Sie die Zugriffssteuerung auf der Ebene der Secret-Ressource.
    1. Rufen Sie die Berechtigungen Ihres Projekts auf.
    2. Aktivieren Sie die Option Von Google bereitgestellte Rollenzuweisungen einschließen.
    3. Suchen Sie nach dem Dienstkonto im folgenden Format:

      service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

    4. Bearbeiten Sie die Hauptkonten des Dienstkontos.
    5. Fügen Sie dem Dienstkonto die Rolle Secret Manager Secret Accessor hinzu.
  3. Übergeben Sie bei der Erstellung oder Aktualisierung des RAG-Korpus den Namen der Secret-Ressource an die RAG Engine und speichern Sie den Namen der Secret-Ressource.

Wenn Sie API-Anfragen an Ihre Weaviate-Datenbankinstanzen senden, verwendet 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 die erste Ressource in Ihrem Projekt erstellen, erstellt RAG Engine ein dediziertes Dienstkonto. Sie finden Ihr Dienstkonto auf der IAM-Seite Ihres Projekts. Das Dienstkonto hat das folgende Format:

service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

Beispiel: service-123456789@gcp-sa-vertex-rag.iam.gserviceaccount.com.

Bei der Integration in die Weaviate-Datenbank wird Ihr Dienstkonto in den folgenden Szenarien verwendet:

  • Sie können Ihr Dienstkonto verwenden, um Ihren Weaviate-API-Schlüssel für die Authentifizierung zu generieren. In einigen Fällen sind zum Generieren des API-Schlüssels keine Nutzerinformationen erforderlich. Das bedeutet, dass beim Generieren des API-Schlüssels kein Dienstkonto erforderlich ist.
  • Sie können Ihr Dienstkonto mit dem API-Schlüssel in Ihrer Weaviate-Datenbank verknüpfen, um die Authentifizierung (AuthN) und Autorisierung (AuthZ) zu konfigurieren. Ihr Dienstkonto ist jedoch nicht erforderlich.
  • Sie können den API-Schlüssel in Secret Manager in Ihrem Projekt speichern und Ihrem Dienstkonto Berechtigungen für diese Secret-Ressourcen erteilen.
  • RAG Engine verwendet Dienstkonten, um auf den API-Schlüssel aus Secret Manager in Ihren Projekten zuzugreifen.

Google Cloud -Konsolenumgebung einrichten

Klicken Sie hier, um zu erfahren, wie Sie Ihre Umgebung einrichten.

Wählen Sie einen der folgenden Tabs aus, um zu erfahren, wie Sie Ihre Umgebung einrichten:

Python

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  8. Installieren oder aktualisieren Sie das Vertex AI SDK für Python, indem Sie den folgenden Befehl ausführen:

    pip3 install --upgrade "google-cloud-aiplatform>=1.38"
        

Node.js

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  8. Installieren oder aktualisieren Sie das Vertex AI SDK für Node.js, indem Sie den folgenden Befehl ausführen:

    npm install @google-cloud/vertexai
        

Java

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  8. Wenn Sie google-cloud-vertexai als Abhängigkeit hinzufügen möchten, fügen Sie den entsprechenden Code für Ihre Umgebung hinzu:

    Maven mit BOM

    Fügen Sie Ihrem pom.xml folgenden HTML-Code hinzu:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.32.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-vertexai</artifactId>
      </dependency>
    </dependencies>
                

    Maven ohne BOM

    Fügen Sie Ihrem pom.xml folgenden HTML-Code hinzu:

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-vertexai</artifactId>
      <version>0.4.0</version>
    </dependency>
              

    Gradle without BOM

    Add the following to your build.gradle

    implementation 'com.google.cloud:google-cloud-vertexai:0.4.0'

Go

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  8. Prüfen Sie die verfügbaren Go-Pakete für die Vertex AI API, um festzustellen, welches Paket die Anforderungen Ihres Projekts am besten erfüllt:

    • Paket cloud.google.com/go/vertexai (empfohlen)

      vertexai ist ein von Menschen erstelltes Paket, das Zugriff auf gängige Funktionen und Features bietet.

      Dieses Paket wird als Ausgangspunkt für die meisten Entwickler empfohlen, die mit der Vertex AI API erstellen. Verwenden Sie stattdessen das automatisch generierte aiplatform, um auf Funktionen und zuzugreifen, die noch nicht von diesem Paket abgedeckt sind.

    • Paket cloud.google.com/go/aiplatform

      aiplatform ist ein automatisch generiertes Paket.

      Dieses Paket ist für Projekte gedacht, die Zugriff auf die Funktionen und Features der Vertex AI API benötigen, die noch nicht vom menschlichen vertexai-Paket bereitgestellt werden.

  9. Führen Sie einen der folgenden Befehle aus, um das gewünschte Go-Paket entsprechend den Anforderungen Ihres Projekts zu installieren:

    # Human authored package. Recommended for most developers.
    go get cloud.google.com/go/vertexai
        
    # Auto-generated package. go get cloud.google.com/go/aiplatform

C#

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

REST

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  7. Konfigurieren Sie Umgebungsvariablen. Dazu geben Sie Folgendes ein. Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts. Google Cloud
    MODEL_ID="gemini-2.0-flash-001"
    PROJECT_ID="PROJECT_ID"
        
  8. Stellen Sie den Endpunkt bereit:
    gcloud beta services identity create --service=aiplatform.googleapis.com --project=${PROJECT_ID}
        
  9. Optional: Wenn Sie Cloud Shell verwenden und aufgefordert werden, Cloud Shell zu autorisieren, klicken Sie auf Autorisieren.

RAG-Korpus vorbereiten

Damit die RAG Engine auf Daten aus Ihrer Weaviate-Datenbank zugreifen kann, muss sie Zugriff auf einen RAG-Korpus haben. In diesem Abschnitt wird beschrieben, wie Sie einen einzelnen RAG-Korpus und zusätzliche RAG-Korpora erstellen.

CreateRagCorpus- und UpdateRagCorpus-APIs verwenden

Sie müssen die folgenden Felder angeben, wenn Sie die APIs CreateRagCorpus und UpdateRagCorpus aufrufen:

  • rag_vector_db_config.weaviate: Nachdem Sie die CreateRagCorpus API aufgerufen haben, wird die Konfiguration der Vektordatenbank ausgewählt. Die Konfiguration der Vektordatenbank enthält alle Konfigurationsfelder. Wenn das Feld rag_vector_db_config.weaviate nicht festgelegt ist, wird standardmäßig rag_vector_db_config.rag_managed_db verwendet.
  • weaviate.http_endpoint: Der HTTPS- oder HTTP-Weaviate-Endpunkt wird bei der Bereitstellung der Weaviate-Datenbankinstanz erstellt.
  • weaviate.collection_name: Der Name der Sammlung, die bei der Bereitstellung der Weaviate-Instanz erstellt wird. Der Name muss mit einem Großbuchstaben beginnen.
  • api_auth.api_key_config: In der Konfiguration wird angegeben, dass ein API-Schlüssel verwendet werden soll, um den Zugriff auf die Vektordatenbank zu autorisieren.
  • api_key_config.api_key_secret_version: Der Ressourcenname des Secrets, das in Secret Manager gespeichert ist und Ihren Weaviate-API-Schlüssel enthält.

Sie können Ihren RAG-Korpus erstellen und der Weaviate-Sammlung in Ihrer Datenbankinstanz zuordnen. Möglicherweise benötigen Sie das Dienstkonto jedoch, um Ihren API-Schlüssel zu generieren und Ihre Weaviate-Datenbankinstanz zu konfigurieren. Das Dienstkonto wird erstellt, wenn Sie Ihren ersten RAG-Korpus erstellen. Nachdem Sie Ihren ersten RAG-Korpus erstellt haben, ist die Verknüpfung zwischen der Weaviate-Datenbank und dem API-Schlüssel möglicherweise noch nicht für die Erstellung eines weiteren RAG-Korpus bereit.

Falls Ihre Datenbank und Ihr Schlüssel noch nicht mit Ihrem RAG-Korpus verknüpft werden können, gehen Sie so vor:

  1. Setzen Sie das Feld weaviate in rag_vector_db_config.

    • Sie können die zugehörige Vektordatenbank nicht ändern.
    • Lassen Sie die Felder http_endpoint und collection_name leer. Beide Felder können später aktualisiert werden.
  2. Wenn Sie Ihren API-Schlüssel nicht in Secret Manager gespeichert haben, können Sie das Feld api_auth leer lassen. Wenn Sie die UpdateRagCorpus API aufrufen, können Sie das Feld api_auth aktualisieren. Für Weaviate muss Folgendes erledigt werden:

    1. Legen Sie api_key_config im Feld api_auth fest.
    2. Legen Sie den api_key_secret_version Ihres Weaviate-API-Schlüssels in Secret Manager fest. Das Feld api_key_secret_version hat das folgende Format:

      projects/{project}/secrets/{secret}/versions/{version}

  3. Wenn Sie Felder angeben, die nur einmal festgelegt werden können, z. B. http_endpoint oder collection_name, können Sie sie nur ändern, wenn Sie Ihren RAG-Korpus löschen und neu erstellen. Andere Felder wie das API-Schlüsselfeld api_key_secret_version können aktualisiert werden.

  4. Wenn Sie UpdateRagCorpus aufrufen, können Sie das Feld vector_db festlegen. Der vector_db sollte durch Ihren CreateRagCorpus API-Aufruf auf weaviate gesetzt werden. Andernfalls wählt das System die Option RAG Managed Database aus, die die Standardeinstellung ist. Diese Option kann beim Aufrufen der UpdateRagCorpus-API nicht geändert werden. Wenn Sie UpdateRagCorpus aufrufen und das Feld vector_db teilweise festgelegt ist, können Sie die Felder aktualisieren, die als Änderbar (auch als mutable bezeichnet) gekennzeichnet sind.

In dieser Tabelle sind die veränderlichen und unveränderlichen Felder aufgeführt, die in Ihrem Code verwendet werden.WeaviateConfig

Feldname Veränderlich oder unveränderlich
http_endpoint Nach der Einrichtung nicht mehr veränderbar
collection_name Nach der Einrichtung nicht mehr veränderbar
api_key_authentication Veränderlich

Ersten RAG-Korpus erstellen

Wenn das RAG Engine-Dienstkonto nicht vorhanden ist, gehen Sie so vor:

  1. Erstellen Sie einen RAG-Korpus in RAG Engine mit einer leeren Weaviate-Konfiguration. Dadurch wird die Bereitstellung von RAG Engine initiiert, um ein Dienstkonto zu erstellen.
  2. Wählen Sie einen Namen für Ihr RAG Engine-Dienstkonto aus, der diesem Format entspricht:

    service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

    Beispiel: service-123456789@gcp-sa-vertex-rag.iam.gserviceaccount.com.

  3. Greifen Sie mit Ihrem Dienstkonto auf das Secret zu, das in Secret Manager Ihres Projekts gespeichert ist und Ihren Weaviate-API-Schlüssel enthält.
  4. Nachdem die Bereitstellung von Weaviate abgeschlossen ist, erhalten Sie die folgenden Informationen:
    • Ihr Weaviate-HTTPS- oder -HTTP-Endpunkt.
    • Der Name Ihrer Weaviate-Sammlung.
  5. Rufen Sie die CreateRagCorpus API auf, um einen RAG-Corpus mit einer leeren Weaviate-Konfiguration zu erstellen, und rufen Sie die UpdateRagCorpus API auf, um den RAG-Corpus mit den folgenden Informationen zu aktualisieren:
    • Ihr Weaviate-HTTPS- oder -HTTP-Endpunkt.
    • Der Name Ihrer Weaviate-Sammlung.
    • Der Ressourcenname des API-Schlüssels.

Einen weiteren RAG-Korpus erstellen

Wenn das RAG Engine-Dienstkonto vorhanden ist, gehen Sie so vor:

  1. Rufen Sie das RAG Engine-Dienstkonto aus den Berechtigungen Ihres Projekts ab.
  2. Aktivieren Sie die Option „Von Google bereitgestellte Rollenzuweisungen einschließen“.
  3. Wählen Sie einen Namen für Ihr RAG Engine-Dienstkonto aus, der diesem Format entspricht:

    service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

  4. Greifen Sie mit Ihrem Dienstkonto auf das Secret zu, das in Secret Manager Ihres Projekts gespeichert ist und Ihren Weaviate-API-Schlüssel enthält.
  5. Rufen Sie beim Bereitstellen von Weaviate die folgenden Informationen ab:
    • Der HTTPS- oder HTTP-Endpunkt von Weaviate.
    • Der Name Ihrer Weaviate-Sammlung.
  6. Erstellen Sie einen RAG-Korpus in RAG Engine und stellen Sie eine Verbindung zu Ihrer Weaviate-Sammlung her, indem Sie einen der folgenden Schritte ausführen:
    1. Führen Sie einen CreateRagCorpus-API-Aufruf aus, um einen RAG-Korpus mit einer ausgefüllten Weaviate-Konfiguration zu erstellen. Dies ist die bevorzugte Option.
    2. Führen Sie einen CreateRagCorpus-API-Aufruf aus, um einen RAG-Korpus mit einer leeren Weaviate-Konfiguration zu erstellen, und einen UpdateRagCorpus-API-Aufruf, um den RAG-Korpus mit den folgenden Informationen zu aktualisieren:
      • HTTP-Endpunkt der Weaviate-Datenbank
      • Name der Weaviate-Sammlung
      • API-Schlüssel

Beispiele

In diesem Abschnitt finden Sie Beispielcode, der zeigt, wie Sie Ihre Weaviate-Datenbank, Secret Manager, den RAG-Korpus und die RAG-Datei einrichten. Außerdem wird Beispielcode bereitgestellt, der zeigt, wie Sie Dateien importieren, Kontext abrufen, Inhalte generieren und den RAG-Korpus und die RAG-Dateien löschen.

Informationen zur Verwendung des Model Garden RAG API-Notebooks finden Sie unter Weaviate mit Llama 3 verwenden.

Weaviate-Datenbank einrichten

Dieses Codebeispiel zeigt, wie Sie Ihre Weaviate-Daten und den Secret Manager einrichten.

REST

# TODO(developer): Update the variables.
# The HTTPS/HTTP Weaviate endpoint you created during provisioning.
HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

# Your Weaviate API Key.
WEAVIATE_API_KEY="example-api-key"

# Select your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
# For example, "MyCollectionName"
# Note that the first letter needs to be capitalized.
# Otherwise, Weavaite will capitalize it for you.
WEAVIATE_COLLECTION_NAME="MyCollectionName"

# Create a collection in Weaviate which includes the required schema fields shown below.
echo '{
  "class": "'${WEAVIATE_COLLECTION_NAME}'",
  "properties": [
    { "name": "fileId", "dataType": [ "string" ] },
    { "name": "corpusId", "dataType": [ "string" ] },
    { "name": "chunkId", "dataType": [ "string" ] },
    { "name": "chunkDataType", "dataType": [ "string" ] },
    { "name": "chunkData", "dataType": [ "string" ] },
    { "name": "fileOriginalUri", "dataType": [ "string" ] }
  ]
}' | curl \
    -X POST \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer "${WEAVIATE_API_KEY} \
    -d @- \
    ${HTTP_ENDPOINT_NAME}/v1/schema

Secret Manager einrichten

Um Secret Manager einzurichten, müssen Sie Secret Manager aktivieren und Berechtigungen festlegen.

Secret erstellen

So aktivieren Sie Secret Manager:

Console

  1. Rufen Sie die Seite Secret Manager auf.

    Zu Secret Manager

  2. Klicken Sie auf + Secret erstellen.

  3. Geben Sie den Namen Ihres Secrets ein. Secret-Namen dürfen nur Buchstaben (A–Z), Ziffern (0–9), Bindestriche (-) und Unterstriche (_) enthalten.

  4. Die Angabe der folgenden Felder ist optional:

    1. Klicken Sie auf Durchsuchen, um die Datei mit Ihrem Secret hochzuladen.
    2. Replikationsrichtlinie lesen
    3. Wenn Sie die Speicherorte für Ihr Secret manuell verwalten möchten, setzen Sie ein Häkchen bei Speicherorte für dieses Secret manuell verwalten. Es muss mindestens eine Region ausgewählt werden.
    4. Wählen Sie eine Verschlüsselungsoption aus.
    5. Wenn Sie den Rotationszeitraum manuell festlegen möchten, aktivieren Sie Rotationszeitraum festlegen.
    6. Wenn Sie Themen zum Veröffentlichen oder Abonnieren angeben möchten, um Ereignisbenachrichtigungen zu erhalten, klicken Sie auf Themen hinzufügen.
    7. Standardmäßig läuft das Secret nie ab. Wenn Sie ein Ablaufdatum festlegen möchten, setzen Sie ein Häkchen bei Ablaufdatum festlegen.
    8. Standardmäßig werden Secret-Versionen auf Anfrage gelöscht. Wenn Sie das Löschen von Secret-Versionen verzögern möchten, aktivieren Sie Dauer für verzögertes Löschen festlegen.
    9. Wenn Sie Ihre Secrets mit Labels organisieren und kategorisieren möchten, klicken Sie auf + Label hinzufügen.
    10. Wenn Sie Annotationen verwenden möchten, um nicht identifizierbare Metadaten an Ihre Secrets anzuhängen, klicken Sie auf + Annotation hinzufügen.
  5. Klicken Sie auf Secret erstellen.

REST

# Create a secret in SecretManager.
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets?secretId=${SECRET_NAME}" \
    --request "POST" \
    --header "authorization: Bearer $(gcloud auth print-access-token)" \
    --header "content-type: application/json" \
    --data "{\"replication\": {\"automatic\": {}}}"

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.

# Import the Secret Manager client library.
from google.cloud import secretmanager


def create_secret(
    project_id: str, secret_id: str, ttl: Optional[str] = None
) -> secretmanager.Secret:
    """
    Create a new secret with the given name. A secret is a logical wrapper
    around a collection of secret versions. Secret versions hold the actual
    secret material.

     Args:
        project_id (str): The project ID where the secret is to be created.
        secret_id (str): The ID to assign to the new secret. This ID must be unique within the project.
        ttl (Optional[str]): An optional string that specifies the secret's time-to-live in seconds with
                             format (e.g., "900s" for 15 minutes). If specified, the secret
                             versions will be automatically deleted upon reaching the end of the TTL period.

    Returns:
        secretmanager.Secret: An object representing the newly created secret, containing details like the
                              secret's name, replication settings, and optionally its TTL.

    Example:
        # Create a secret with automatic replication and no TTL
        new_secret = create_secret("my-project", "my-new-secret")

        # Create a secret with a TTL of 30 days
        new_secret_with_ttl = create_secret("my-project", "my-timed-secret", "7776000s")
    """

    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the parent project.
    parent = f"projects/{project_id}"

    # Create the secret.
    response = client.create_secret(
        request={
            "parent": parent,
            "secret_id": secret_id,
            "secret": {"replication": {"automatic": {}}, "ttl": ttl},
        }
    )

    # Print the new secret name.
    print(f"Created secret: {response.name}")

Berechtigungen festlegen

Sie müssen Ihrem Dienstkonto Secret Manager-Berechtigungen erteilen.

Console

  1. Suchen Sie in der Google Cloud Console im Bereich IAM & Verwaltung nach Ihrem Dienstkonto und klicken Sie auf das Stiftsymbol, um es zu bearbeiten.

  2. Wählen Sie im Feld Rolle die Option Zugriffsperson für Secret Manager-Secret aus.

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.

def iam_grant_access(
    project_id: str, secret_id: str, member: str
) -> iam_policy_pb2.SetIamPolicyRequest:
    """
    Grant the given member access to a secret.
    """

    # Import the Secret Manager client library.
    from google.cloud import secretmanager

    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the secret.
    name = client.secret_path(project_id, secret_id)

    # Get the current IAM policy.
    policy = client.get_iam_policy(request={"resource": name})

    # Add the given member with access permissions.
    policy.bindings.add(role="roles/secretmanager.secretAccessor", members=[member])

    # Update the IAM Policy.
    new_policy = client.set_iam_policy(request={"resource": name, "policy": policy})

    # Print data about the secret.
    print(f"Updated IAM policy on {secret_id}")

Secret-Version hinzufügen

REST

# TODO(developer): Update the variables.
# Select a resource name for your Secret, which contains your API Key.
SECRET_NAME="MyWeaviateApiKeySecret"

# Your Weaviate API Key.
WEAVIATE_API_KEY="example-api-key"
# Encode your WEAVIATE_API_KEY using base 64.
SECRET_DATA=$(echo ${WEAVIATE_API_KEY} | base64)

# Create a new version of your secret which uses SECRET_DATA as payload
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_NAME}:addVersion" \
    --request "POST" \
    --header "authorization: Bearer $(gcloud auth print-access-token)" \
    --header "content-type: application/json" \
    --data "{\"payload\": {\"data\": \"${SECRET_DATA}\"}}"

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.

from google.cloud import secretmanager
import google_crc32c  # type: ignore


def add_secret_version(
    project_id: str, secret_id: str, payload: str
) -> secretmanager.SecretVersion:
    """
    Add a new secret version to the given secret with the provided payload.
    """

    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the parent secret.
    parent = client.secret_path(project_id, secret_id)

    # Convert the string payload into a bytes. This step can be omitted if you
    # pass in bytes instead of a str for the payload argument.
    payload_bytes = payload.encode("UTF-8")

    # Calculate payload checksum. Passing a checksum in add-version request
    # is optional.
    crc32c = google_crc32c.Checksum()
    crc32c.update(payload_bytes)

    # Add the secret version.
    response = client.add_secret_version(
        request={
            "parent": parent,
            "payload": {
                "data": payload_bytes,
                "data_crc32c": int(crc32c.hexdigest(), 16),
            },
        }
    )

    # Print the new secret version name.
    print(f"Added secret version: {response.name}")

Weaviate mit Llama 3 verwenden

Im Model Garden-Notebook zur RAG API wird gezeigt, wie Sie das Vertex AI SDK für Python mit einem Weaviate-Korpus und einem Llama 3-Modell verwenden. So verwenden Sie das Notebook:

  1. Weaviate-Datenbank einrichten

  2. Secret Manager einrichten

  3. Verwenden Sie das Model Garden RAG API-Notebook.

Weitere Beispiele finden Sie unter Beispiele.

RAG-Korpus erstellen

In diesem Codebeispiel wird gezeigt, wie Sie einen RAG-Korpus erstellen und die Weaviate-Instanz als Vektordatenbank festlegen.

REST

  # TODO(developer): Update the variables.
  PROJECT_ID = "YOUR_PROJECT_ID"
  # The HTTPS/HTTP Weaviate endpoint you created during provisioning.
  HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

  # Your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
  # For example, "MyCollectionName"
  # Note that the first letter needs to be capitalized.
  # Otherwise, Weaviate will capitalize it for you.
  WEAVIATE_COLLECTION_NAME="MyCollectionName"

  # The resource name of your Weaviate API Key your Secret.
  SECRET_NAME="MyWeaviateApiKeySecret"
  # The Secret Manager resource name containing the API Key for your Weaviate endpoint.
  # For example, projects/{project}/secrets/{secret}/versions/latest
  APIKEY_SECRET_VERSION="projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/latest"

  # Select a Corpus display name.
  CORPUS_DISPLAY_NAME="SpecialCorpus"

  # Call CreateRagCorpus API and set all Vector DB Config parameters for Weaviate to create a new corpus associated to your selected Weaviate collection.
  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" : {
                "weaviate": {
                      "http_endpoint": '\""${HTTP_ENDPOINT_NAME}"\"',
                      "collection_name": '\""${WEAVIATE_COLLECTION_NAME}"\"'
                },
          "api_auth" : {
                  "api_key_config": {
                        "api_key_secret_version": '\""${APIKEY_SECRET_VERSION}"\"'
                  }
          }
        }
    }'

  # TODO(developer): Update the variables.
  # Get operation_id returned in CreateRagCorpus.
  OPERATION_ID="your-operation-id"

  # Poll Operation status until done = true in the response.
  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}

  # Call ListRagCorpora API to verify the RAG corpus is created successfully.
  curl -sS -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"

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.


from vertexai.preview import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# weaviate_http_endpoint = "weaviate-http-endpoint"
# weaviate_collection_name = "weaviate-collection-name"
# weaviate_api_key_secret_manager_version = "projects/{PROJECT_ID}/secrets/{SECRET_NAME}/versions/latest"
# display_name = "test_corpus"
# description = "Corpus Description"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

# Configure embedding model (Optional)
embedding_model_config = rag.EmbeddingModelConfig(
    publisher_model="publishers/google/models/text-embedding-004"
)

# Configure Vector DB
vector_db = rag.Weaviate(
    weaviate_http_endpoint=weaviate_http_endpoint,
    collection_name=weaviate_collection_name,
    api_key=weaviate_api_key_secret_manager_version,
)

corpus = rag.create_corpus(
    display_name=display_name,
    description=description,
    embedding_model_config=embedding_model_config,
    vector_db=vector_db,
)
print(corpus)
# Example response:
# RagCorpus(name='projects/1234567890/locations/us-central1/ragCorpora/1234567890',
# display_name='test_corpus', description='Corpus Description', embedding_model_config=...
# ...

RAG-Datei verwenden

Die RAG API übernimmt das Hochladen, Importieren, Auflisten und Löschen von Dateien.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • RAG_CORPUS_ID: Die ID der Ressource RagCorpus.
  • INPUT_FILE: der Pfad einer lokalen Datei.
  • FILE_DISPLAY_NAME: Der Anzeigename von RagFile.
  • RAG_FILE_DESCRIPTION: Die Beschreibung von RagFile.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload

JSON-Text der Anfrage:

{
 "rag_file": {
  "display_name": "FILE_DISPLAY_NAME",
  "description": "RAG_FILE_DESCRIPTION"
 }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen INPUT_FILE und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @INPUT_FILE \
"https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen INPUT_FILE und führen Sie den folgenden Befehl aus:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile INPUT_FILE `
-Uri "https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload" | Select-Object -Expand Content
Eine erfolgreiche Antwort gibt die Ressource RagFile zurück. Die letzte Komponente des Feldes RagFile.name ist der vom Server generierte rag_file_id.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python-API-Referenzdokumentation.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"
# path = "path/to/local/file.txt"
# display_name = "file_display_name"
# description = "file description"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag_file = rag.upload_file(
    corpus_name=corpus_name,
    path=path,
    display_name=display_name,
    description=description,
)
print(rag_file)
# RagFile(name='projects/[PROJECT_ID]/locations/us-central1/ragCorpora/1234567890/ragFiles/09876543',
#  display_name='file_display_name', description='file description')

RAG-Dateien importieren

Dateien und Ordner können aus Google Drive oder Cloud Storage importiert werden.

REST

Mit response.metadata können Sie sich Informationen zu Teilausfällen, zur Anfragezeit und zur Antwortzeit im response-Objekt des SDKs ansehen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • RAG_CORPUS_ID: Die ID der Ressource RagCorpus.
  • GCS_URIS: Eine Liste der Cloud Storage-Standorte. Beispiel: gs://my-bucket1, gs://my-bucket2.
  • DRIVE_RESOURCE_ID: Die ID der Drive-Ressource. Beispiele:
    • https://drive.google.com/file/d/ABCDE
    • https://drive.google.com/corp/drive/u/0/folders/ABCDEFG
  • DRIVE_RESOURCE_TYPE: Typ der Drive-Ressource. Optionen:
    • RESOURCE_TYPE_FILE - Datei
    • RESOURCE_TYPE_FOLDER - Ordner
  • CHUNK_SIZE: Optional: Anzahl der Tokens, die jeder Block haben sollte.
  • CHUNK_OVERLAP: Optional: Die Anzahl der Tokens überschneiden sich zwischen Blöcken.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

JSON-Text der Anfrage:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": GCS_URIS
    },
    "google_drive_source": {
      "resource_ids": {
        "resource_id": DRIVE_RESOURCE_ID,
        "resource_type": DRIVE_RESOURCE_TYPE
      },
    }
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content
Eine erfolgreiche Antwort gibt die Ressource ImportRagFilesOperationMetadata zurück.

Im folgenden Beispiel wird gezeigt, wie eine Datei aus Cloud Storage importiert wird. Mit dem Steuerfeld max_embedding_requests_per_min können Sie die Rate begrenzen, mit der die RAG-Engine das Einbettungsmodell während des ImportRagFiles-Indexierungsvorgangs aufruft. Der Standardwert für das Feld ist 1000 Aufrufe pro Minute.

// Cloud Storage bucket/file location.
// Such as "gs://rag-e2e-test/"
GCS_URIS=YOUR_GCS_LOCATION

// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT

// ImportRagFiles
// Import a single Cloud Storage file or all files in a Cloud Storage bucket.
// Input: ENDPOINT, PROJECT_ID, RAG_CORPUS_ID, GCS_URIS
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": '\""${GCS_URIS}"\"'
    },
    "rag_file_chunking_config": {
      "chunk_size": 512
    },
    "max_embedding_requests_per_min": '"${EMBEDDING_MODEL_QPM_RATE}"'
  }
}'

// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}

Im folgenden Beispiel wird gezeigt, wie Sie eine Datei aus Google Drive importieren. Mit dem Steuerfeld max_embedding_requests_per_min können Sie die Rate begrenzen, mit der die RAG-Engine das Einbettungsmodell während des ImportRagFiles-Indexierungsvorgangs aufruft. Der Standardwert für das Feld ist 1000 Aufrufe pro Minute.

// Google Drive folder location.
FOLDER_RESOURCE_ID=YOUR_GOOGLE_DRIVE_FOLDER_RESOURCE_ID

// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT

// ImportRagFiles
// Import all files in a Google Drive folder.
// Input: ENDPOINT, PROJECT_ID, RAG_CORPUS_ID, FOLDER_RESOURCE_ID
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "google_drive_source": {
      "resource_ids": {
        "resource_id": '\""${FOLDER_RESOURCE_ID}"\"',
        "resource_type": "RESOURCE_TYPE_FOLDER"
      }
    },
    "max_embedding_requests_per_min": '"${EMBEDDING_MODEL_QPM_RATE}"'
  }
}'

// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python-API-Referenzdokumentation.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"
# paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]  # Supports Google Cloud Storage and Google Drive Links

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

response = rag.import_files(
    corpus_name=corpus_name,
    paths=paths,
    transformation_config=rag.TransformationConfig(
        rag.ChunkingConfig(chunk_size=512, chunk_overlap=100)
    ),
    import_result_sink="gs://sample-existing-folder/sample_import_result_unique.ndjson",  # Optional, this has to be an existing storage bucket folder, and file name has to be unique (non-existent).
    max_embedding_requests_per_min=900,  # Optional
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.

RAG-Datei abrufen

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • RAG_CORPUS_ID: Die ID der Ressource RagCorpus.
  • RAG_FILE_ID: Die ID der Ressource RagFile.

HTTP-Methode und URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

PowerShell

Führen Sie folgenden Befehl aus:

$headers = @{  }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
Eine erfolgreiche Antwort gibt die Ressource RagFile zurück.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python-API-Referenzdokumentation.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# file_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}/ragFiles/{rag_file_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag_file = rag.get_file(name=file_name)
print(rag_file)
# Example response:
# RagFile(name='projects/1234567890/locations/us-central1/ragCorpora/11111111111/ragFiles/22222222222',
# display_name='file_display_name', description='file description')

RAG-Dateien auflisten

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • RAG_CORPUS_ID: Die ID der Ressource RagCorpus.
  • PAGE_SIZE: Die Standardgröße der Listenseite Sie können die Anzahl der RagFiles anpassen, die pro Seite zurückgegeben werden sollen, indem Sie den Parameter page_size aktualisieren.
  • PAGE_TOKEN: Das Standardtoken der Listenseite Wird normalerweise mit ListRagFilesResponse.next_page_token des vorherigen VertexRagDataService.ListRagFiles-Aufrufs abgerufen.

HTTP-Methode und URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"

PowerShell

Führen Sie folgenden Befehl aus:

$headers = @{  }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content
Sie sollten einen erfolgreichen Statuscode (2xx) zusammen mit einer Liste von RagFiles unter dem angegebenen RAG_CORPUS_ID erhalten.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python-API-Referenzdokumentation.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

files = rag.list_files(corpus_name=corpus_name)
for file in files:
    print(file.display_name)
    print(file.name)
# Example response:
# g-drive_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/222222222222
# g_cloud_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/333333333333

RAG-Datei löschen

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • RAG_CORPUS_ID: Die ID der Ressource RagCorpus.
  • RAG_FILE_ID: Die ID der Ressource RagFile. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file_id}.

HTTP-Methode und URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X DELETE \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

PowerShell

Führen Sie folgenden Befehl aus:

$headers = @{  }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
Eine erfolgreiche Antwort gibt die Ressource DeleteOperationMetadata zurück.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python-API-Referenzdokumentation.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# file_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}/ragFiles/{rag_file_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag.delete_file(name=file_name)
print(f"File {file_name} deleted.")
# Example response:
# Successfully deleted the RagFile.
# File projects/1234567890/locations/us-central1/ragCorpora/1111111111/ragFiles/2222222222 deleted.

Kontext abrufen

Wenn ein Nutzer eine Frage stellt oder einen Prompt bereitstellt, durchsucht die Abrufkomponente in RAG in ihrer Wissensdatenbank nach relevanten Informationen.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • PROJECT_ID: Ihre Projekt-ID.
  • RAG_CORPUS_RESOURCE: Name der RagCorpus-Ressource. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • VECTOR_DISTANCE_THRESHOLD: Es werden nur Kontexte mit einer Vektordistanz zurückgegeben, die kleiner als der Grenzwert ist.
  • TEXT: Der Abfragetext, um relevante Kontexte abzurufen.
  • SIMILARITY_TOP_K: Die Anzahl der Top-Kontexte, die abgerufen werden sollen.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts

JSON-Text der Anfrage:

{
 "vertex_rag_store": {
    "rag_resources": {
      "rag_corpus": "RAG_CORPUS_RESOURCE",
    },
    "vector_distance_threshold": 0.8
  },
  "query": {
   "text": "TEXT",
   "similarity_top_k": SIMILARITY_TOP_K
  }
 }

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" | Select-Object -Expand Content
Sie sollten einen erfolgreichen Statuscode (2xx) und eine Liste der zugehörigen RagFiles erhalten.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python-API-Referenzdokumentation.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/[PROJECT_ID]/locations/us-central1/ragCorpora/[rag_corpus_id]"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=corpus_name,
            # Optional: supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="Hello World!",
    rag_retrieval_config=rag.RagRetrievalConfig(
        top_k=10,
        filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
    ),
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Inhalte generieren

Eine Vorhersage steuert die LLM-Methode, die Inhalte generiert.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • MODEL_ID: LLM-Modell für die Inhaltsgenerierung. Beispiel: gemini-2.5-flash
  • GENERATION_METHOD: LLM-Methode zum Generieren von Inhalten. Optionen: generateContent, streamGenerateContent
  • INPUT_PROMPT: Der Text, der zur Inhaltsgenerierung an das LLM gesendet wird. Versuchen Sie, einen Prompt zu verwenden, der für die hochgeladenen Rap-Dateien relevant ist.
  • RAG_CORPUS_RESOURCE: Name der RagCorpus-Ressource. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Optional: Die Anzahl der Top-Kontexte, die abgerufen werden sollen.
  • VECTOR_DISTANCE_THRESHOLD: Optional: Kontexte mit einer Vektorentfernung, die kleiner als der Grenzwert ist, werden zurückgegeben.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD

JSON-Text der Anfrage:

{
 "contents": {
  "role": "user",
  "parts": {
    "text": "INPUT_PROMPT"
  }
 },
 "tools": {
  "retrieval": {
   "disable_attribution": false,
   "vertex_rag_store": {
    "rag_resources": {
      "rag_corpus": "RAG_CORPUS_RESOURCE",
    },
    "similarity_top_k": SIMILARITY_TOP_K,
    "vector_distance_threshold": VECTOR_DISTANCE_THRESHOLD
   }
  }
 }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" | Select-Object -Expand Content
Eine erfolgreiche Antwort gibt den generierten Inhalt mit Zitationen zurück.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python-API-Referenzdokumentation.


from vertexai import rag
from vertexai.generative_models import GenerativeModel, Tool
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=corpus_name,
                    # Optional: supply IDs from `rag.list_files()`.
                    # rag_file_ids=["rag-file-1", "rag-file-2", ...],
                )
            ],
            rag_retrieval_config=rag.RagRetrievalConfig(
                top_k=10,
                filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
            ),
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-2.0-flash-001", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

Die Hybridsuche wird mit der Weaviate-Datenbank unterstützt, die sowohl semantische als auch Stichwortsuchen kombiniert, um die Relevanz der Suchergebnisse zu verbessern. Beim Abrufen von Suchergebnissen werden die endgültigen sortierten Ergebnisse aus einer Kombination von Ähnlichkeitswerten aus semantischem (ein dichter Vektor) und Keyword-Abgleich (ein spärlicher Vektor) generiert.

Hybridsuche mit der RAG Engine Retrieval API

Dies ist ein Beispiel dafür, wie Sie eine Hybridsuche mit der RAG Engine-Abruf-API aktivieren.

REST

  # TODO(developer): Update the variables.
  PROJECT_ID = "YOUR_PROJECT_ID"
  # The HTTPS/HTTP Weaviate endpoint you created during provisioning.
  HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

  # Your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
  # For example, "MyCollectionName"
  # Note that the first letter needs to be capitalized.
  # Otherwise, Weaviate will capitalize it for you.
  WEAVIATE_COLLECTION_NAME="MyCollectionName"

  # The resource name of your Weaviate API Key your Secret.
  SECRET_NAME="MyWeaviateApiKeySecret"
  # The Secret Manager resource name containing the API Key for your Weaviate endpoint.
  # For example, projects/{project}/secrets/{secret}/versions/latest
  APIKEY_SECRET_VERSION="projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/latest"

  # Select a Corpus display name.
  CORPUS_DISPLAY_NAME="SpecialCorpus"

  # Call CreateRagCorpus API and set all Vector DB Config parameters for Weaviate to create a new corpus associated to your selected Weaviate collection.
  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" : {
                "weaviate": {
                      "http_endpoint": '\""${HTTP_ENDPOINT_NAME}"\"',
                      "collection_name": '\""${WEAVIATE_COLLECTION_NAME}"\"'
                },
          "api_auth" : {
                  "api_key_config": {
                        "api_key_secret_version": '\""${APIKEY_SECRET_VERSION}"\"'
                  }
          }
        }
    }'

  # TODO(developer): Update the variables.
  # Get operation_id returned in CreateRagCorpus.
  OPERATION_ID="your-operation-id"

  # Poll Operation status until done = true in the response.
  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}

  # Call ListRagCorpora API to verify the RAG corpus is created successfully.
  curl -sS -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python-API-Referenzdokumentation.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/[PROJECT_ID]/locations/us-central1/ragCorpora/[rag_corpus_id]"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=corpus_name,
            # Optional: supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="Hello World!",
    rag_retrieval_config=rag.RagRetrievalConfig(
        top_k=10,
        filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
    ),
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Hybridsuche und RAG Engine für fundierte Generierung verwenden

Hier sehen Sie ein Beispiel für die Verwendung der Hybridsuche und der RAG-Engine für die fundierte Generierung.

REST

  # TODO(developer): Update the variables.
  PROJECT_ID = "YOUR_PROJECT_ID"
  # The HTTPS/HTTP Weaviate endpoint you created during provisioning.
  HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

  # Your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
  # For example, "MyCollectionName"
  # Note that the first letter needs to be capitalized.
  # Otherwise, Weaviate will capitalize it for you.
  WEAVIATE_COLLECTION_NAME="MyCollectionName"

  # The resource name of your Weaviate API Key your Secret.
  SECRET_NAME="MyWeaviateApiKeySecret"
  # The Secret Manager resource name containing the API Key for your Weaviate endpoint.
  # For example, projects/{project}/secrets/{secret}/versions/latest
  APIKEY_SECRET_VERSION="projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/latest"

  # Select a Corpus display name.
  CORPUS_DISPLAY_NAME="SpecialCorpus"

  # Call CreateRagCorpus API and set all Vector DB Config parameters for Weaviate to create a new corpus associated to your selected Weaviate collection.
  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" : {
                "weaviate": {
                      "http_endpoint": '\""${HTTP_ENDPOINT_NAME}"\"',
                      "collection_name": '\""${WEAVIATE_COLLECTION_NAME}"\"'
                },
          "api_auth" : {
                  "api_key_config": {
                        "api_key_secret_version": '\""${APIKEY_SECRET_VERSION}"\"'
                  }
          }
        }
    }'

  # TODO(developer): Update the variables.
  # Get operation_id returned in CreateRagCorpus.
  OPERATION_ID="your-operation-id"

  # Poll Operation status until done = true in the response.
  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}

  # Call ListRagCorpora API to verify the RAG corpus is created successfully.
  curl -sS -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python-API-Referenzdokumentation.


from vertexai import rag
from vertexai.generative_models import GenerativeModel, Tool
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=corpus_name,
                    # Optional: supply IDs from `rag.list_files()`.
                    # rag_file_ids=["rag-file-1", "rag-file-2", ...],
                )
            ],
            rag_retrieval_config=rag.RagRetrievalConfig(
                top_k=10,
                filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
            ),
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-2.0-flash-001", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

Nächste Schritte