Weaviate-Datenbank mit RAG Engine verwenden

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

Sie können auch mit diesem Notebook RAG Engine mit Weaviate weitermachen.

Sie können Ihre Weaviate-Datenbankinstanz, eine Open-Source-Datenbank, mit der RAG Engine verwenden, um eine vektorbasierte Ähnlichkeitssuche zu indexieren und durchzuführen. Bei der Ähnlichkeitssuche werden Textstücke gefunden, die dem gesuchten Text ähneln. Dazu ist ein Embeddings-Modell erforderlich. Das Einbettungsmodell generiert Vektordaten für jeden zu vergleichenden Text. Mit der Ähnlichkeitssuche werden semantische Kontexte für die Erdung abgerufen, um die genauesten Inhalte aus Ihrem LLM zurückzugeben.

Mit der RAG Engine können Sie Ihre vollständig verwaltete Vektordatenbankinstanz weiterhin verwenden, für deren Bereitstellung Sie verantwortlich sind. Die RAG-Engine verwendet die Vektordatenbank für Speicher, Indexverwaltung und Suche.

Hinweise

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

  1. Sie müssen die 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, mit dem 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. Gehen Sie stattdessen so vor:
    1. Speichern Sie den Schlüssel im Google Cloud Secret Manager.
    2. Gewähren Sie dem Dienstkonto Ihres Projekts Berechtigungen für den Zugriff auf Ihr Secret.
    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 geheime Ressource zu.
  4. Der RAG Engine-Korpus und die Weaviate-Sammlung sind 1:1 zugeordnet. RAG-Dateien werden in einer Weaviate-Datenbanksammlung gespeichert. Wenn die CreateRagCorpus API oder die UpdateRagCorpus API aufgerufen wird, wird der RAG-Corpus mit der Datenbanksammlung verknüpft.
  5. Neben semantischen Suchanfragen mit dichten Einbettungen wird mit der RAG Engine auch die Hybridsuche ü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 bereitstellen Sie Ihre Weaviate-Datenbankinstanz.
  2. Bereiten Sie den HTTPS-Endpunkt vor.
  3. Erstellen Sie Ihre Weaviate-Sammlung.
  4. Verwende deinen API-Schlüssel, um Weaviate mit AuthN und AuthZ zu provisionieren.
  5. Stellen Sie Ihr RAG Engine-Dienstkonto bereit.

Weaviate-Datenbankinstanz konfigurieren und bereitstellen

Folgen Sie der offiziellen Weaviate-Kurzanleitung. Sie können jedoch den Google Cloud Marketplace-Leitfaden verwenden, was optional ist.

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

Da die RAG Engine in keiner Phase des Lebenszyklus Ihrer Weaviate-Datenbankinstanz beteiligt ist, müssen Sie der RAG Engine Berechtigungen erteilen, damit sie Daten in Ihrer Weaviate-Datenbank speichern und darin nach Daten suchen kann. Sie sind außerdem 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 Weaviate-Bereitstellung darauf, einen HTTPS-Endpunkt zu erstellen. HTTP-Verbindungen werden zwar unterstützt, wir empfehlen jedoch, für den Traffic zwischen 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 Eins-zu-Eins-Zuordnung haben, müssen Sie eine Sammlung in Ihrer Weaviate-Datenbank erstellen, bevor Sie sie mit dem RAG Engine-Korpus verknüpfen können. 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

Weaviate mithilfe deines API-Schlüssels mit AuthN und AuthZ bereitstellen

So richten Sie den Weaviate API-Schlüssel ein:

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

Wenn für das Erstellen des Weaviate API-Schlüssels Identitätsinformationen erforderlich sind, die mit der RAG Engine verknüpft werden müssen, müssen Sie Ihren ersten Corpus 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 manipuliert oder missbraucht werden, kann das für eine Person ein erhebliches Risiko oder einen erheblichen Schaden bedeuten. Um die Risiken für eine Person bei der Verwendung der RAG Engine zu minimieren, sollten Sie Ihren API-Schlüssel nicht speichern und verwalten und den unverschlüsselten API-Schlüssel nicht weitergeben.

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 Ihre Secrets und verwalten Sie die Zugriffssteuerung auf Secret-Ressourcenebene.
    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 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. Geben Sie beim Erstellen oder Aktualisieren des RAG-Corpus den Namen der Secret-Ressource an die RAG Engine weiter und speichern Sie den Namen der Secret-Ressource.

Wenn Sie API-Anfragen an Ihre Weaviate-Datenbankinstanz(en) senden, verwendet die RAG Engine jedes Dienstkonto, um den API-Schlüssel zu lesen, der Ihren geheimen Ressourcen im Secret Manager aus Ihren Projekten entspricht.

RAG Engine-Dienstkonto bereitstellen

Wenn Sie die erste Ressource in Ihrem Projekt erstellen, erstellt die RAG Engine ein spezielles 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 Fällen verwendet:

  • Sie können Ihr Dienstkonto verwenden, um Ihren Weaviate API-Schlüssel für die Authentifizierung zu generieren. In einigen Fällen sind für die Generierung des API-Schlüssels keine Nutzerinformationen erforderlich. Das bedeutet, dass 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 geheimen Ressourcen erteilen.
  • Die RAG Engine verwendet Dienstkonten, um über den Secret Manager in Ihren Projekten auf den API-Schlüssel 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. 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.

  8. Installieren oder aktualisieren Sie das Vertex AI SDK for 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.

  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.

  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 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 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.

  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.

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 Google Cloud-Projekts.
    MODEL_ID="gemini-1.5-flash-002"
    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 CreateRagCorpus- und UpdateRagCorpus-APIs 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 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 im 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-Corpus erstellen, wird das Dienstkonto generiert. Nachdem Sie Ihren ersten RAG-Corpus 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-Corpus verfügbar.

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

  1. Setzen Sie das Feld weaviate auf rag_vector_db_config.

    • Die zugehörige Vektordatenbank kann nicht geändert werden.
    • Lassen Sie sowohl das Feld http_endpoint als auch das Feld 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 müssen folgende Voraussetzungen erfüllt sein:

    1. Legen Sie api_key_config im Feld api_auth fest.
    2. Legen Sie die 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. Die vector_db sollte durch den CreateRagCorpus API-Aufruf auf weaviate festgelegt werden. Andernfalls wählt das System die Option RAG-verwaltete Datenbank aus, die standardmäßig festgelegt ist. 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 Veränderbar (auch veränderlich) gekennzeichnet sind.

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

Feldname Veränderlich oder unveränderlich
http_endpoint Kann nach der Einrichtung nicht mehr geändert werden
collection_name Kann nach der Einrichtung nicht mehr geändert werden
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 der RAG Engine mit einer leeren Weaviate-Konfiguration. Dadurch wird die Bereitstellung der RAG Engine zum Erstellen eines Dienstkontos eingeleitet.
  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 Ihr Secret zu, das im Secret Manager Ihres Projekts gespeichert ist und Ihren Weaviate API-Schlüssel enthält.
  4. Nach Abschluss der Weaviate-Bereitstellung erhalten Sie die folgenden Informationen:
    • Den HTTPS- oder HTTP-Endpunkt von Weaviate.
    • 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:
    • Den HTTPS- oder HTTP-Endpunkt von Weaviate.
    • Der Name Ihrer Weaviate-Sammlung.
    • Der Ressourcenname des API-Schlüssels.

Weiteren RAG-Korpus erstellen

Wenn das Dienstkonto der RAG Engine 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 Ihr Secret zu, das im Secret Manager Ihres Projekts gespeichert ist und Ihren Weaviate API-Schlüssel enthält.
  5. Notieren Sie sich während der Weaviate-Bereitstellung die folgenden Informationen:
    • 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 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-Corpus und die RAG-Datei einrichten. Außerdem wird Beispielcode zur Veranschaulichung der Dateiimportierung, des Abrufens von Kontext, der Generierung von Inhalten und des Löschens des RAG-Korpus und der RAG-Dateien bereitgestellt.

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

Zum Einrichten von Secret Manager müssen Sie Secret Manager aktivieren und Berechtigungen festlegen.

Secret erstellen

So aktivieren Sie den 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
    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 die gewünschte Verschlüsselungsoption aus.
    5. Wenn Sie die Rotationsdauer manuell festlegen möchten, setzen Sie ein Häkchen bei Rotationsdauer 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, setzen Sie ein Häkchen bei Dauer für verzögertes Löschen festlegen.
    9. Wenn Sie Ihre Secrets mit Labels strukturieren möchten, klicken Sie auf + Label hinzufügen.
    10. Wenn Sie mithilfe von Anmerkungen nicht identifizierbare Metadaten an Ihre Secrets anhängen möchten, klicken Sie auf + Anmerkung 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.

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")
    """

    # 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 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 und Verwaltung nach Ihrem Dienstkonto und klicken Sie zum Bearbeiten auf das Stiftsymbol.

  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 RAG API-Notebook wird gezeigt, wie Sie das Vertex AI SDK für Python mit einem Weaviate-Korpus und dem Llama 3-Modell verwenden. So verwenden Sie das Notebook:

  1. Weaviate-Datenbank einrichten

  2. Richten Sie Secret Manager ein.

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

Weitere Beispiele finden Sie unter Beispiele.

RAG-Korpus erstellen

Dieses Codebeispiel zeigt, wie ein RAG-Korpus erstellt wird, und legt die Weaviate-Instanz als Vektordatenbank fest.

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 den Dateiupload, -import, -eintrag und -löschung.

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 Referenzdokumentation zur Python API.


from vertexai.preview 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 kannst du im response-Objekt des SDKs Informationen zu teilweisen Fehlern, zur Anfragezeit und zur Antwortzeit aufrufen.

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 Häufigkeit begrenzen, mit der die RAG-Engine das Einbettungsmodell während des ImportRagFiles-Indexierungsvorgangs aufruft. Der Standardwert des Felds ist 1000 Anrufe 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 Häufigkeit begrenzen, mit der die RAG Engine das Einbettungsmodell während des Indexierungsvorgangs ImportRagFiles aufruft. Der Standardwert des Felds ist 1000 Anrufe 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 Referenzdokumentation zur Python API.


from vertexai.preview 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,
    chunk_size=512,  # Optional
    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: 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 Referenzdokumentation zur Python API.


from vertexai.preview 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 Referenzdokumentation zur Python API.


from vertexai.preview 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 Referenzdokumentation zur Python API.


from vertexai.preview 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 Referenzdokumentation zur Python API.


from vertexai.preview 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!",
    similarity_top_k=10,  # Optional
    vector_distance_threshold=0.5,  # Optional
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Inhalte generiert

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-1.5-pro-002
  • 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 Referenzdokumentation zur Python API.


from vertexai.preview import rag
from vertexai.preview.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", ...],
                )
            ],
            similarity_top_k=3,  # Optional
            vector_distance_threshold=0.5,  # Optional
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-1.5-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 von der Weaviate-Datenbank unterstützt, die sowohl die semantische als auch die Stichwortsuche kombiniert, um die Relevanz der Suchergebnisse zu verbessern. Beim Abrufen der Suchergebnisse werden die endgültigen Ergebnisse anhand einer Kombination aus Ähnlichkeitsbewertungen aus semantischen (dichter Vektor) und stichwortbasierten Übereinstimmungen (spärlicher Vektor) sortiert.

Hybridsuche mit der RAG Engine-Abruf-API

Hier sehen Sie ein Beispiel dafür, wie Sie eine hybride Suche mit der Retrieval API der RAG Engine 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 Referenzdokumentation zur Python API.


from vertexai.preview 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!",
    similarity_top_k=10,  # Optional
    vector_distance_threshold=0.5,  # Optional
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Hybride Suche und RAG-Engine für die fundierte Generierung verwenden

Dies ist ein Beispiel dafür, wie Sie die hybride Suche und die RAG-Engine für die fundierte Generierung verwenden.

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 Referenzdokumentation zur Python API.


from vertexai.preview import rag
from vertexai.preview.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", ...],
                )
            ],
            similarity_top_k=3,  # Optional
            vector_distance_threshold=0.5,  # Optional
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-1.5-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