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.
Datenaufnahme: Nehmen Sie Daten aus verschiedenen Datenquellen auf. Zum Beispiel lokale Dateien, Cloud Storage und Google Drive.
Datentransformation: Konvertierung der Daten in der Vorbereitung auf die Indexierung. Beispielsweise werden Daten in Blöcke unterteilt.
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.
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.
Abrufen: Wenn ein Nutzer eine Frage stellt oder einen Prompt bereitstellt, durchsucht die Abrufkomponente in der RAG Engine ihre Wissensdatenbank nach relevanten Informationen.
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:
- Rufen Sie die Seite "IAM" Ihres Google Cloud-Projekts auf.
- Wählen Sie Von Google bereitgestellte Rollenzuweisung einschließen aus.
- Suchen Sie nach dem Dienstkonto Vertex AI RAG Data Service Agent.
- Klicken Sie im Drive-Ordner auf Freigeben und geben Sie es für das Dienstkonto frei.
- 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. |
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
- Informationen zu den Dateigrößenbeschränkungen finden Sie unter Unterstützte Dokumenttypen.
- Informationen zu Kontingenten für die RAG Engine finden Sie unter Kontingente für die RAG Engine.
- Informationen zum Anpassen von Parametern finden Sie unter Abrufparameter.
- Weitere Informationen zur RAG API finden Sie unter RAG Engine API.
- Weitere Informationen zur Fundierung finden Sie unter Fundierungsübersicht.
- Weitere Informationen zum Unterschied zwischen Fundierung und RAG finden Sie unter Fundierungsantworten mit RAG.
- Weitere Informationen zu Generative AI in Vertex AI finden Sie unter Übersicht über die Unterstützung generativer KI für Vertex AI.
- Weitere Informationen zur RAG-Architektur finden Sie unter Infrastruktur für eine RAG-fähige generative KI-Anwendung mit Vertex AI.