Weaviate-Datenbank mit RAG Engine verwenden

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

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

Sie können Ihre Weaviate-Datenbankinstanz, eine Open-Source-Datenbank, mit der RAG Engine verwenden, um eine vektorbasierte Ähnlichkeitssuche zu indexieren und durchzuführen. Eine Ähnlichkeitssuche ist eine Möglichkeit, Textteile zu finden, die dem gesuchten Text ähneln. Dazu ist ein Einbettungsmodell erforderlich. Das Einbettungsmodell erzeugt Vektordaten für jeden Text, der verglichen wird. Die Ähnlichkeitssuche wird verwendet, um semantische Kontexte für die Fundierung abzurufen, damit Ihr LLM die genauesten Inhalte zurückgibt.

Mit der 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 für die Speicherung, Indexverwaltung und Suche.

Hinweise

Beachten Sie Folgendes, 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 die RAG Engine mit der Weaviate-Datenbank interagieren kann. Die RAG Engine unterstützt die API-Schlüssel-basierten AuthN und AuthZ, die eine Verbindung zu Ihrer Weaviate-Datenbank herstellen und eine HTTPS-Verbindung unterstützen.
  3. Die RAG Engine speichert und verwaltet Ihren Weaviate-API-Schlüssel nicht. Stattdessen müssen Sie so vorgehen:
    1. Speichern Sie Ihren Schlüssel im Google Cloud Secret Manager.
    2. Gewähren Sie dem Dienstkonto Ihres Projekts die Berechtigung, auf Ihr Secret zuzugreifen.
    3. Gewähren Sie der RAG Engine Zugriff auf den Ressourcennamen Ihres Secrets.
    4. Wenn Sie mit Ihrer Weaviate-Datenbank interagieren, greift die RAG Engine über Ihr Dienstkonto auf Ihre Secret-Ressource zu.
  4. Der RAG Engine-Korpus und die Weaviate-Sammlung haben eine 1:1-Zuordnung. RAG-Dateien werden in einer Weaviate-Datenbanksammlung gespeichert. Wenn die CreateRagCorpus API oder die UpdateRagCorpus API aufgerufen wird, wird der RAG-Korpus mit der Datenbanksammlung verknüpft.
  5. Neben semantischen Suchen, die auf dichten Einbettungen basieren, wird die Hybridsuche auch mit der RAG Engine über eine Weaviate-Datenbank unterstützt. Sie können auch die Gewichtung zwischen dichter und dünnbesetzter Vektorähnlichkeit 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. Weaviate-Datenbankinstanz konfigurieren und bereitstellen
  2. Bereiten Sie den HTTPS-Endpunkt vor.
  3. Erstellen Sie Ihre Weaviate-Sammlung.
  4. Verwenden Sie Ihren API-Schlüssel, um Weaviate mit AuthN und AuthZ bereitzustellen.
  5. Stellen Sie Ihr RAG Engine-Dienstkonto bereit.

Weaviate-Datenbankinstanz konfigurieren und bereitstellen

Folgen Sie der offiziellen Kurzanleitung für Weaviate. 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 die RAG Engine in keiner Phase des Lebenszyklus Ihrer Weaviate-Datenbankinstanz involviert ist, sind Sie dafür verantwortlich, der RAG Engine Berechtigungen zu erteilen, damit sie Daten in Ihrer Weaviate-Datenbank speichern und darin suchen kann. 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 unerwartetes Verhalten aufgrund dieser Änderungen verantwortlich.

HTTPS-Endpunkt vorbereiten

Achten Sie bei der Bereitstellung von Weaviate darauf, einen HTTPS-Endpunkt zu erstellen. HTTP-Verbindungen werden zwar unterstützt, wir empfehlen jedoch, für den Traffic der RAG Engine und der Weaviate-Datenbank eine HTTPS-Verbindung zu verwenden.

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 mit dem RAG Engine-Korpus verknüpfen. 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

Verwenden Sie Ihren API-Schlüssel, 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 zur Authentifizierung und Autorisierung eine Verbindung zu Ihren Weaviate-Datenbankinstanzen herstellen. Folgen Sie dem offiziellen Weaviate-Leitfaden zur Authentifizierung, um die API-Schlüssel-basierte Authentifizierung in Ihrer Weaviate-Datenbankinstanz zu konfigurieren.

Wenn für das Erstellen des Weaviate-API-Schlüssels Identitätsinformationen erforderlich sind, die von der RAG Engine stammen, müssen Sie Ihren ersten 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 vertrauliche personenidentifizierbare Informationen kompromittiert oder missbraucht werden, kann dies für eine Person ein erhebliches Risiko oder einen Schaden bedeuten. Um die 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 SPII:

  1. Speichern Sie Ihren API-Schlüssel in Secret Manager.
  2. Gewähren Sie Ihrem RAG Engine-Dienstkonto die Berechtigungen für das oder die 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 das Dienstkonto, das das folgende Format hat:

      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 beim Erstellen oder Aktualisieren 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 die RAG Engine jedes Dienstkonto, um den API-Schlüssel zu lesen, der den Secret-Ressourcen in Secret Manager aus Ihren Projekten entspricht.

RAG Engine-Dienstkonto bereitstellen

Wenn Sie die erste Ressource in Ihrem Projekt erstellen, erstellt die RAG Engine ein dediziertes Dienstkonto. Sie finden Ihr Dienstkonto auf der IAM-Seite 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.

Bei der Einbindung 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 binden, um die Authentifizierung (AuthN) und Autorisierung (AuthZ) zu konfigurieren. Ihr Dienstkonto ist jedoch nicht erforderlich.
  • Sie können den Secret Manager-API-Schlüssel in Ihrem Projekt speichern und Ihrem Dienstkonto Berechtigungen für diese Secret-Ressourcen gewähren.
  • Die RAG Engine verwendet Dienstkonten, um auf den API-Schlüssel aus Secret Manager in Ihren Projekten zuzugreifen.

Google Cloud -Console-Umgebung 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. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  6. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  7. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Authentifizierungsdaten für Ihr Nutzerkonto:

    gcloud auth application-default login

    Wenn Sie Cloud Shell verwenden, ist dies nicht erforderlich.

    Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

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

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

Node.js

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  6. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  7. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Authentifizierungsdaten für Ihr Nutzerkonto:

    gcloud auth application-default login

    Wenn Sie Cloud Shell verwenden, ist dies nicht erforderlich.

    Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

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

    npm install @google-cloud/vertexai
        

Java

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  6. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  7. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Authentifizierungsdaten für Ihr Nutzerkonto:

    gcloud auth application-default login

    Wenn Sie Cloud Shell verwenden, ist dies nicht erforderlich.

    Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

  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 den folgenden HTML-Code in Ihre pom.xml ein:

    <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 den folgenden HTML-Code in Ihre pom.xml ein:

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

    Gradle ohne BOM

    Fügen Sie der Datei build.gradle Folgendes hinzu:

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

Go

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  6. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  7. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Authentifizierungsdaten für Ihr Nutzerkonto:

    gcloud auth application-default login

    Wenn Sie Cloud Shell verwenden, ist dies nicht erforderlich.

    Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

  8. Prüfen Sie die verfügbaren Go-Pakete für die Agent Platform 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 Agent Platform 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 Agent Platform 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. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  6. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  7. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Authentifizierungsdaten für Ihr Nutzerkonto:

    gcloud auth application-default login

    Wenn Sie Cloud Shell verwenden, ist dies nicht erforderlich.

    Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

REST

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  6. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  7. Konfigurieren Sie Umgebungsvariablen. Dazu geben Sie Folgendes ein. Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts von Google Cloud .
    MODEL_ID="gemini-3.5-flash"
    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 werden die Schritte zum Erstellen eines einzelnen RAG-Korpus und zusätzlicher RAG-Korpora beschrieben.

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 festgelegt.
  • weaviate.http_endpoint: Der HTTPS- oder HTTP-Weaviate-Endpunkt wird während der Bereitstellung der Weaviate-Datenbankinstanz erstellt.
  • weaviate.collection_name: Der Name der Sammlung, die während der Bereitstellung der Weaviate-Instanz erstellt wird. Der Name muss mit einem Großbuchstaben beginnen.
  • api_auth.api_key_config: In der Konfiguration wird festgelegt, dass ein API-Schlüssel verwendet werden soll, um Ihren 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 mit der Weaviate-Sammlung in Ihrer Datenbankinstanz verknüpfen. Möglicherweise benötigen Sie das Dienstkonto jedoch, um Ihren API-Schlüssel zu generieren und Ihre Weaviate-Datenbankinstanz zu konfigurieren. Wenn Sie Ihren ersten RAG-Korpus erstellen, wird das Dienstkonto generiert. 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. Legen Sie das Feld weaviate in rag_vector_db_config fest.

    • Sie können die verknüpfte 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. Weaviate erfordert Folgendes:

    1. Legen Sie im Feld api_auth den Wert api_key_config 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 den CreateRagCorpus-API-Aufruf auf weaviate gesetzt werden. Andernfalls wählt das System die Standardoption RAG Managed Database aus. Diese Option kann nicht geändert werden, wenn Sie die UpdateRagCorpus API aufrufen. Wenn Sie UpdateRagCorpus aufrufen und das Feld vector_db teilweise festgelegt ist, können Sie die Felder aktualisieren, die als Änderbar (auch als veränderlich bezeichnet) markiert sind.

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

Feldname Veränderlich oder unveränderlich
http_endpoint Nach dem Festlegen nicht mehr veränderbar
collection_name Nach dem Festlegen nicht mehr veränderbar
api_key_authentication Veränderbar

Ersten RAG-Korpus erstellen

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

  1. Erstellen Sie einen RAG-Korpus in der RAG Engine mit einer leeren Weaviate-Konfiguration. Dadurch wird die Bereitstellung der RAG Engine initiiert, um ein Dienstkonto zu erstellen.
  2. Wählen Sie einen Namen für Ihr RAG Engine-Dienstkonto aus, der dem folgenden 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 im Secret Manager Ihres Projekts gespeichert ist und Ihren Weaviate API-Schlüssel enthält.
  4. Rufen Sie nach Abschluss der Weaviate-Bereitstellung die folgenden Informationen ab:
    • Ihr Weaviate-HTTPS- oder -HTTP-Endpunkt.
    • Der Name Ihrer Weaviate-Sammlung.
  5. Rufen Sie die CreateRagCorpus API auf, um einen RAG-Korpus mit einer leeren Weaviate-Konfiguration zu erstellen, und rufen Sie die UpdateRagCorpus API auf, um den RAG-Korpus mit den folgenden Informationen zu aktualisieren:
    • Ihr Weaviate-HTTPS- oder -HTTP-Endpunkt.
    • Der Name Ihrer Weaviate-Sammlung.
    • Der Ressourcenname des API-Schlüssels.

Weiteren RAG-Korpus erstellen

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

  1. Rufen Sie Ihr RAG Engine-Dienstkonto über die 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 dem folgenden Format entspricht:

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

  4. Greifen Sie mit Ihrem Dienstkonto auf das Secret zu, das im Secret Manager Ihres Projekts gespeichert ist und Ihren Weaviate API-Schlüssel enthält.
  5. Rufen Sie während der Weaviate-Bereitstellung die folgenden Informationen ab:
    • Der HTTPS- oder HTTP-Endpunkt von Weaviate.
    • Der Name Ihrer Weaviate-Sammlung.
  6. Erstellen Sie einen RAG-Korpus in der RAG Engine und stellen Sie eine Verbindung zu Ihrer Weaviate-Sammlung her. Gehen Sie dazu so vor:
    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 führen Sie einen UpdateRagCorpus-API-Aufruf aus, 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

In diesem Codebeispiel wird gezeigt, wie Sie Ihre Weaviate-Daten und 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 Agent Platform 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

Wenn Sie Secret Manager einrichten möchten, 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 des 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. Lesen Sie die Replikationsrichtlinie.
    3. Wenn Sie die Speicherorte für Ihr Secret manuell verwalten möchten, klicken Sie auf Speicherorte für dieses Secret manuell verwalten. Es muss mindestens eine Region ausgewählt werden.
    4. Wählen Sie die gewünschte Verschlüsselungsoption aus.
    5. Wenn Sie den Rotationszeitraum manuell festlegen möchten, setzen Sie ein Häkchen bei Rotationszeitraum festlegen.
    6. Wenn Sie ein oder mehrere Publish/Subscribe-Themen 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, klicken Sie auf 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 Labels verwenden möchten, um Ihre Secrets zu organisieren und zu kategorisieren, 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 ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Agent Platform-Kurzanleitung zur Verwendung von Clientbibliotheken.

Richten Sie zur Authentifizierung bei der Agent Platform 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 gewähren.

Console

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

  2. Wählen Sie im Feld Rolle die Option Secret Manager Secret Accessor aus.

Python

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Agent Platform-Kurzanleitung zur Verwendung von Clientbibliotheken.

Richten Sie zur Authentifizierung bei der Agent Platform 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 ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Agent Platform-Kurzanleitung zur Verwendung von Clientbibliotheken.

Richten Sie zur Authentifizierung bei der Agent Platform 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 RAG API-Notebook wird gezeigt, wie Sie das Agent Platform SDK for 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 Agent Platform 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 ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Agent Platform-Kurzanleitung zur Verwendung von Clientbibliotheken.

Richten Sie zur Authentifizierung bei der Agent Platform Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import agentplatform
from agentplatform import types

# 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 Agent Platform client once per session.
# See https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/rag-engine/rag-overview#supported-regions
client = agentplatform.Client(project=PROJECT_ID, location="us-east5")

# Configure embedding model (Optional)
embedding_model_config = types.RagEmbeddingModelConfig(
    vertex_prediction_endpoint=types.RagEmbeddingModelConfigVertexPredictionEndpoint(
        endpoint="publishers/google/models/text-embedding-005"
    )
)

# Configure Vector DB
vector_db = types.RagVectorDbConfigWeaviate(
    http_endpoint=weaviate_http_endpoint,
    collection_name=weaviate_collection_name,
)

corpus = client.rag.create_corpus(
    rag_corpus=types.RagCorpus(
        display_name=display_name,
        description=description,
        rag_vector_db_config=types.RagVectorDbConfig(
            weaviate=vector_db,
            api_auth=types.ApiAuth(
                api_key_config=types.ApiAuthApiKeyConfig(
                    api_key_secret_version=weaviate_api_key_secret_manager_version
                )
            ),
            rag_embedding_model_config=embedding_model_config,
        ),
    )
)
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: .
  • 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/media: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/media: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/media: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 API-Referenzdokumentation zu Python.


import agentplatform

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

# Initialize Agent Platform client once per session.
# See https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/rag-engine/rag-overview#supported-regions
client = agentplatform.Client(project=PROJECT_ID, location="us-east5")

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

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: .
  • 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 API-Referenzdokumentation zu Python.


import agentplatform
from agentplatform import types

from google.genai import types as genai_types

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-east5/ragCorpora/{rag_corpus_id}"
# paths = ["gs://my_bucket/my_files_dir/*"]

# Initialize Agent Platform client once per session.
# See https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/rag-engine/rag-overview#supported-regions
client = agentplatform.Client(project=PROJECT_ID, location="us-east5")

response = client.rag.import_files(
    name=corpus_name,
    import_config=types.ImportRagFilesConfig(
        gcs_source=genai_types.GcsSource(uris=paths),
        rag_file_transformation_config=types.RagFileTransformationConfig(
            rag_file_chunking_config=types.RagFileChunkingConfig(
                chunk_size=512,
                chunk_overlap=100,
            )
        ),  # optional
        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: .
  • 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 API-Referenzdokumentation zu Python.


import agentplatform

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

# Initialize Agent Platform client once per session.
# See https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/rag-engine/rag-overview#supported-regions
client = agentplatform.Client(project=PROJECT_ID, location="us-east5")

rag_file = client.rag.get_file(name=file_name)
print(rag_file)
# Example response:
# RagFile(name='projects/1234567890/locations/us-east5/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: .
  • 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 API-Referenzdokumentation zu Python.


import agentplatform

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

# Initialize Agent Platform client once per session.
# See https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/rag-engine/rag-overview#supported-regions
client = agentplatform.Client(project=PROJECT_ID, location="us-east5")

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

RAG-Datei löschen

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_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 API-Referenzdokumentation zu Python.


import agentplatform

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

# Initialize Agent Platform client once per session.
# See https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/rag-engine/rag-overview#supported-regions
client = agentplatform.Client(project=PROJECT_ID, location="us-east5")

client.rag.delete_file(name=file_name)
print(f"File {file_name} deleted.")
# Example response:
# Successfully deleted the RagFile.
# File projects/1234567890/locations/us-east5/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: .
  • 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 API-Referenzdokumentation zu Python.


import agentplatform

from agentplatform import types
from google.genai import types as genai_types

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

# Initialize Agent Platform client once per session.
# See https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/rag-engine/rag-overview#supported-regions
client = agentplatform.Client(project=PROJECT_ID, location="us-east5")

response = client.rag.retrieve_contexts(
    vertex_rag_store=genai_types.VertexRagStore(
        rag_resources=[
            genai_types.VertexRagStoreRagResource(
                rag_corpus=corpus_name,
                # Optional: supply IDs from `rag.list_files()`.
                # rag_file_ids=["rag-file-1", "rag-file-2", ...],
            )
        ],
    ),
    query=types.RagQuery(
        text="Hello World!",
        rag_retrieval_config=genai_types.RagRetrievalConfig(
            top_k=10,
            filter=genai_types.RagRetrievalConfigFilter(
                vector_distance_threshold=0.5
            ),
        ),
    )
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Generiert Inhalte

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

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: .
  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
  • MODEL_ID: LLM-Modell für die Inhaltsgenerierung. Beispiel: gemini-3.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 API-Referenzdokumentation zu Python.


from google import genai
from google.genai import types as genai_types

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

rag_retrieval_tool = genai_types.Tool(
    retrieval=genai_types.Retrieval(
        vertex_rag_store=genai_types.VertexRagStore(
            rag_resources=[
                genai_types.VertexRagStoreRagResource(
                    rag_corpus=corpus_name
                )
            ],
            rag_retrieval_config=genai_types.RagRetrievalConfig(
                top_k=10,
                filter=genai_types.RagRetrievalConfigFilter(
                    vector_distance_threshold=0.5
                ),
            ),
        ),
    )
)

# Create a GenAI SDK client to make a generate_content request
genai_client = genai.Client(vertexai=True, project=PROJECT_ID, location="global")

response = genai_client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Why is the sky blue?",
    config=genai_types.GenerateContentConfig(
        tools=[rag_retrieval_tool]
    ),
)
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. Dabei werden sowohl semantische als auch Stichwortsuchen kombiniert, um die Relevanz der Suchergebnisse zu verbessern. Beim Abrufen von Suchergebnissen wird eine Kombination aus Ähnlichkeitswerten aus semantischen (ein dichter Vektor) und Keyword-Übereinstimmungen (ein dünnbesetzter Vektor) verwendet, um die endgültigen Ergebnisse zu erhalten.

Hybridsuche mit der RAG Engine Retrieval API

Dies ist ein Beispiel dafür, wie Sie eine hybride Suche mit der RAG Engine Retrieval 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 Agent Platform 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 API-Referenzdokumentation zu Python.


import agentplatform

from agentplatform import types
from google.genai import types as genai_types

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

# Initialize Agent Platform client once per session.
# See https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/rag-engine/rag-overview#supported-regions
client = agentplatform.Client(project=PROJECT_ID, location="us-east5")

response = client.rag.retrieve_contexts(
    vertex_rag_store=genai_types.VertexRagStore(
        rag_resources=[
            genai_types.VertexRagStoreRagResource(
                rag_corpus=corpus_name,
                # Optional: supply IDs from `rag.list_files()`.
                # rag_file_ids=["rag-file-1", "rag-file-2", ...],
            )
        ],
    ),
    query=types.RagQuery(
        text="Hello World!",
        rag_retrieval_config=genai_types.RagRetrievalConfig(
            top_k=10,
            filter=genai_types.RagRetrievalConfigFilter(
                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

Dies ist 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 Agent Platform 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 API-Referenzdokumentation zu Python.


from google import genai
from google.genai import types as genai_types

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

rag_retrieval_tool = genai_types.Tool(
    retrieval=genai_types.Retrieval(
        vertex_rag_store=genai_types.VertexRagStore(
            rag_resources=[
                genai_types.VertexRagStoreRagResource(
                    rag_corpus=corpus_name
                )
            ],
            rag_retrieval_config=genai_types.RagRetrievalConfig(
                top_k=10,
                filter=genai_types.RagRetrievalConfigFilter(
                    vector_distance_threshold=0.5
                ),
            ),
        ),
    )
)

# Create a GenAI SDK client to make a generate_content request
genai_client = genai.Client(vertexai=True, project=PROJECT_ID, location="global")

response = genai_client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Why is the sky blue?",
    config=genai_types.GenerateContentConfig(
        tools=[rag_retrieval_tool]
    ),
)
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