RAG Engine – Übersicht

Die RAG Engine (früher LlamaIndex in Vertex AI und zuletzt Knowledge Engine) ist ein Datenframework für die Entwicklung von kontextbezogenen Large Language Model-Anwendungen (LLM). Die Kontexterweiterung erfolgt, wenn Sie ein LLM auf Ihre Daten anwenden. Dabei wird die Retrieval-Augmented Generation (RAG) implementiert.

Ein häufiges Problem bei LLMs ist, dass sie kein Verständnis für privates Wissen haben, also für die Daten Ihres Unternehmens. Mit der RAG Engine können Sie den LLM-Kontext mit zusätzlichen privaten Informationen anreichern, da das Modell Halluzinationen reduzieren und Fragen genauer beantworten kann.

Durch die Kombination zusätzlicher Wissensquellen mit dem vorhandenen Wissen von LLMs wird ein besserer Kontext bereitgestellt. Der verbesserte Kontext zusammen mit der Abfrage verbessert die Qualität der LLM-Antwort.

Die folgenden Konzepte sind der Schlüssel zum Verständnis der RAG Engine. Diese Konzepte sind in der Reihenfolge des Retrieval-Augmented-Generation-Prozesses (RAG) aufgeführt.

  1. Datenaufnahme: Nehmen Sie Daten aus verschiedenen Datenquellen auf. Zum Beispiel lokale Dateien, Cloud Storage und Google Drive.

  2. Datentransformation: Konvertierung der Daten in der Vorbereitung auf die Indexierung. Beispielsweise werden Daten in Blöcke unterteilt.

  3. Einbettung: Numerische Darstellungen von Wörtern oder Textabschnitten. Diese Zahlen erfassen die semantische Bedeutung und den Kontext des Texts. Ähnliche oder verwandte Wörter oder Text haben in der Regel ähnliche Einbettungen. Das bedeutet, dass sie im hochdimensionalen Vektorbereich näher beieinander liegen.

  4. Datenindexierung: Die RAG Engine erstellt einen Index, der als Korpus bezeichnet wird. Der Index strukturiert die Wissensdatenbank so, dass sie für die Suche optimiert ist. Der Index ist beispielsweise mit einem detaillierten Inhaltsverzeichnis für ein großes Referenzbuch vergleichbar.

  5. Abrufen: Wenn ein Nutzer eine Frage stellt oder einen Prompt bereitstellt, durchsucht die Abrufkomponente in der RAG Engine ihre Wissensdatenbank nach relevanten Informationen.

  6. Generierung: Die abgerufenen Informationen werden zum Kontext, der der ursprünglichen Nutzeranfrage als Leitfaden für das generative KI-Modell hinzugefügt wurde, um faktisch fundierte und relevante Antworten zu generieren.

Generative KI-Modelle, die RAG unterstützen

In diesem Abschnitt sind die Modelle aufgeführt, die RAG unterstützen.

Gemini-Modelle

In der folgenden Tabelle sind die Gemini-Modelle und ihre Versionen aufgeführt, die die RAG Engine unterstützen:

Modell Version
Gemini 1.5 Flash gemini-1.5-flash-002
gemini-1.5-flash-001
Gemini 1.5 Pro, gemini-1.5-pro-002
gemini-1.5-pro-001
Gemini 1.0 Pro gemini-1.0-pro-001
gemini-1.0-pro-002
Gemini 1.0 Pro Vision gemini-1.0-pro-vision-001
Gemini gemini-experimental

Selbst bereitgestellte Modelle

Die RAG Engine unterstützt alle Modelle in Model Garden.

RAG Engine mit selbst bereitgestellten Endpunkten für offene Modelle verwenden

  # Create a model instance with your self-deployed open model endpoint
  rag_model = GenerativeModel(
      "projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID",
      tools=[rag_retrieval_tool]
  )

Modelle mit verwalteten APIs in Vertex AI

Die Modelle mit verwalteten APIs in Vertex AI, die die RAG Engine unterstützen, sind:

Im folgenden Codebeispiel wird gezeigt, wie Sie mit der GeminiGenerateContent API eine Instanz eines generativen Modells erstellen. Die Modell-ID, /publisher/meta/models/llama-3.1-405B-instruct-maas, finden Sie auf der Modellkarte.

  # Create a model instance with Llama 3.1 MaaS endpoint
  rag_model = GenerativeModel(
      "projects/PROJECT_ID/locations/REGION/publisher/meta/models/llama-3.1-405B-instruct-maas",
      tools=[rag_retrieval_tool]
  )

Das folgende Codebeispiel zeigt, wie Sie mit der OpenAI-kompatiblen ChatCompletions API eine Modellantwort generieren.

  # Generate a response with Llama 3.1 MaaS endpoint
  response = client.chat.completions.create(
      model="meta/llama-3.1-405b-instruct-maas",
      messages=[{"role": "user", "content": "your-query"}],
      extra_body={
          "extra_body": {
              "google": {
                  "vertex_rag_store": {
                      "rag_resources": {
                          "rag_corpus": rag_corpus_resource
                      },
                      "similarity_top_k": 10
                  }
              }
          }
      },
  )

Einbettungsmodelle

Einbettungsmodelle werden verwendet, um einen Korpus zu erstellen und für die Suche und das Abrufen während der Antwortgenerierung. In diesem Abschnitt sind die unterstützten Einbettungsmodelle aufgeführt.

  • textembedding-gecko@003
  • textembedding-gecko-multilingual@001
  • text-embedding-004 (Standard)
  • text-multilingual-embedding-002
  • textembedding-gecko@002 (nur optimierte Versionen)
  • textembedding-gecko@001 (nur optimierte Versionen)

Weitere Informationen zum Optimieren von Einbettungsmodellen finden Sie unter Texteinbettungen optimieren.

Die folgenden Open-Embedding-Modelle werden ebenfalls unterstützt. Sie finden sie in Model Garden.

  • e5-base-v2
  • e5-large-v2
  • e5-small-v2
  • multilingual-e5-large
  • multilingual-e5-small

Für RAG unterstützte Dokumenttypen

Es werden nur Textdokumente unterstützt. In der folgenden Tabelle sind die Dateitypen und ihre Größenbeschränkungen aufgeführt:

Dateityp Maximale Dateigröße
Google-Dokumente 10 MB beim Export aus Google Workspace
Google Drawings 10 MB beim Export aus Google Workspace
Google-Präsentationen 10 MB beim Export aus Google Workspace
HTML-Datei 10 MB
JSON-Datei 1 MB
Markdown-Datei 10 MB
Microsoft PowerPoint-Folien (PPTX-Datei) 10 MB
Microsoft Word-Dokumente (DOCX-Datei) 50 MB
PDF-Datei 50 MB
Textdatei 10 MB

Die Verwendung der RAG Engine mit anderen Dokumenttypen ist möglich, kann jedoch Antworten von geringerer Qualität generieren.

Für RAG unterstützte Datenquellen

Folgende Datenquellen werden unterstützt:

  • Lokale Datei hochladen:Ein Upload einer einzelnen Datei mit upload_file (bis zu 25 MB), das ein synchroner Aufruf ist.
  • Cloud Storage:Importieren Sie Dateien aus Cloud Storage.
  • Google Drive:Importieren Sie ein Verzeichnis aus Google Drive.

    Dem Dienstkonto müssen die erforderlichen Berechtigungen zum Importieren von Dateien gewährt werden. Andernfalls werden keine Dateien importiert und keine Fehlermeldung angezeigt. Weitere Informationen zu Dateigrößenbeschränkungen finden Sie unter Unterstützte Dokumenttypen.

    So authentifizieren und erteilen Sie Berechtigungen:

    1. Rufen Sie die Seite "IAM" Ihres Google Cloud-Projekts auf.
    2. Wählen Sie Von Google bereitgestellte Rollenzuweisung einschließen aus.
    3. Suchen Sie nach dem Dienstkonto Vertex AI RAG Data Service Agent.
    4. Klicken Sie im Drive-Ordner auf Freigeben und geben Sie es für das Dienstkonto frei.
    5. Gewähren Sie dem Dienstkonto in Ihrem Google Drive-Ordner oder Ihrer Datei die Berechtigung Viewer. Die Google Drive-Ressourcen-ID finden Sie in der Web-URL.
  • Slack:Dateien mithilfe eines Daten-Connectors aus Slack importieren.

  • Jira:Dateien mithilfe eines Daten-Connectors aus Jira importieren.

Weitere Informationen finden Sie in der RAG API-Referenz.

RAG-Transformationen optimieren

Nachdem ein Dokument aufgenommen wurde, führt die RAG Engine eine Reihe von Transformationen aus, um die Daten für die Indexierung vorzubereiten. Sie können Ihre Anwendungsfälle mit den folgenden Parametern steuern:

Parameter Beschreibung
chunk_size Wenn Dokumente in einen Index aufgenommen werden, werden sie in Blöcke unterteilt. Der Parameter chunk_size (in Tokens) gibt die Größe des Blocks an. Die standardmäßige Blockgröße beträgt 1.024 Tokens.
chunk_overlap Standardmäßig werden Dokumente in Blöcke unterteilt, mit einem gewissen Grad an Überschneidungen, um die Relevanz und die Abrufqualität zu verbessern. Die standardmäßige Blocküberschneidung beträgt 200 Tokens.

Eine kleinere Blockgröße bedeutet, dass die Einbettungen genauer sind. Ein größerer Block bedeutet, dass die Einbettungen allgemeiner sein können, aber bestimmte Details nicht erfasst werden.

Wenn Sie beispielsweise 200 Wörter statt 1.000 Wörter in ein Einbettungsarray derselben Dimension umwandeln, gehen möglicherweise Details verloren. Dies ist auch ein gutes Beispiel für die Berücksichtigung der Längenbeschränkung für Modellkontexte. Ein großer Textblock passt möglicherweise nicht in ein Modell mit kleinen Fenstern.

RAG-Kontingente

Für jeden Dienst, der die Retrieval-Augmented Generation (RAG) mit der RAG Engine durchführt, gelten die folgenden Kontingente. Das Kontingent wird in Anfragen pro Minute (RPM) gemessen.
Dienst Kontingent Messwert
APIs zur Datenverwaltung der RAG Engine 60 U/min VertexRagDataService requests per minute per region
RetrievalContexts API 1.500 RPM VertexRagService retrieve requests per minute per region
base_model: textembedding-gecko 1.500 RPM Online prediction requests per base model per minute per region per base_model

Sie können auch den Filter base_model: textembedding-gecko
angeben.
Die folgenden Begrenzungen gelten:
Dienst Limit Messwert
Gleichzeitige ImportRagFiles-Anfragen 3 U/min VertexRagService concurrent import requests per region
Maximale Anzahl von Dateien pro ImportRagFiles-Anfrage 10.000 VertexRagService import rag files requests per region

Weitere Informationen zu den Grenzwerten und Kontingenten finden Sie unter Grenzwerte für die Auslastung von generativer KI in Vertex AI.

Abrufparameter

Die folgende Tabelle enthält die Abrufparameter:

Parameter Beschreibung
similarity_top_k Steuert die maximale Anzahl von Kontexten, die abgerufen werden.
vector_distance_threshold Es werden nur Kontexte mit einer kleineren Entfernung als der Grenzwert berücksichtigt.

RAG-Wissensdatenbank (Corpus) verwalten

In diesem Abschnitt wird beschrieben, wie Sie Ihren Korpus für RAG-Aufgaben verwalten können, indem Sie die Index- und Dateiverwaltung ausführen.

Korpusverwaltung

Ein Korpus, auch Index genannt, ist eine Sammlung von Dokumenten oder Informationsquellen. Der Korpus kann abgefragt werden, um relevante Kontexte für die Antwortgenerierung abzurufen. Wenn Sie zum ersten Mal einen Korpus erstellen, kann der Vorgang eine zusätzliche Minute dauern.

Die folgenden Korpusvorgänge werden unterstützt:

Aktion Beschreibung Parameter Beispiele
Erstellen Sie einen RAG-Korpus. Erstellen Sie einen Index, um Dokumente zu importieren oder hochzuladen. Parameter erstellen Beispiel erstellen
RAG-Korpus aktualisieren Aktualisieren Sie einen zuvor erstellten Index, um Dokumente zu importieren oder hochzuladen. Parameter aktualisieren Beispiel für eine Aktualisierung
RAG-Korpus auflisten Listet alle Indexe auf. Listenparameter Beispiel für eine Liste
RAG-Korpus abrufen Ruft die Metadaten ab, die den Index beschreiben. Parameter abrufen Beispiel ansehen
Löschen Sie einen RAG-Korpus. Löschen Sie den Index. Parameter löschen Beispiel löschen

Gleichzeitige Vorgänge für Korpora werden nicht unterstützt. Weitere Informationen finden Sie in der RAG API-Referenz.

Dateiverwaltung

Die folgenden Dateivorgänge werden unterstützt:

Aktion Beschreibung Parameter Beispiele
Laden Sie eine RAG-Datei hoch. Laden Sie eine Datei aus dem lokalen Speicher mit zusätzlichen Informationen hoch, die dem LLM Kontext bieten, um genauere Antworten zu generieren. Uploadparameter Beispiel für einen Upload
RAG-Dateien importieren Dateien aus einem anderen Speicherort in einen Speicherort importieren. Importparameter Beispiel für den Import
RAG-Datei abrufen Details zu einer RAG-Datei abrufen, die vom LLM verwendet werden soll Parameter abrufen Beispiel ansehen
Löschen Sie eine RAG-Datei. Laden Sie eine Datei aus dem lokalen Speicher mit zusätzlichen Informationen hoch, die dem LLM Kontext bieten, um genauere Antworten zu generieren. Parameter löschen Beispiel löschen

Weitere Informationen finden Sie in der RAG API-Referenz.

Nächste Schritte