Auf dieser Seite werden die verfügbaren Einbettungsmodelle beschrieben und gezeigt, wie Sie damit einen RAG-Corpus erstellen. Die Verknüpfung zwischen Ihrem Einbettungsmodell und dem RAG-Corpus bleibt während der gesamten Lebensdauer des RAG-Corpus unverändert.
Einführung in Einbettungen
Einbettungen sind numerische Darstellungen von Eingaben. Sie können mit Einbettungen in Ihren Anwendungen komplexe Bedeutungen und semantische Beziehungen erkennen und Sprache verarbeiten und erzeugen.
Bei Einbettungen werden Text, Bilder und Videos in Arrays von Gleitkommazahlen umgewandelt, die als Vektoren bezeichnet werden. Je näher sich zwei Vektoren in ihrem Einbettungsbereich beieinander befinden, desto größer ist die Ähnlichkeit ihrer Eingaben.
Das Einbetten von Modellen ist ein wichtiger Bestandteil semantischer Abrufsysteme. Die Leistung eines Abrufsystems hängt davon ab, wie gut das Einbettungsmodell Beziehungen in Ihren Daten zuordnet.
Auswahlmöglichkeiten für Einbettungsmodelle
Die Vertex AI RAG Engine implementiert die Retrieval-Augmented Generation (RAG) und bietet Ihnen die folgenden Einbettungsmodelle zur Verwendung in einem RAG-Corpus:
Typ des Einbettungsmodells | Beschreibung |
---|---|
Vertex AI-Modelle für die Texteinbettung | Modelle, die vom Publisher trainiert wurden, z. B. Google. Die Modelle werden mit einem großen Text-Dataset trainiert und bieten eine solide Grundlage für viele Aufgaben. |
Optimierte Vertex AI-Modelle für die Texteinbettung | Vertex AI-Modelle für die Texteinbettung sind für spezielles Fachwissen oder eine hochgradig angepasste Leistung optimiert. |
Open Source-Einbettungsmodelle | Open-Source-Einbettungsmodelle von Drittanbietern in englischsprachigen und mehrsprachigen Varianten. |
Unterstützte 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.
Modellversion | Beschreibung |
---|---|
text-embedding-005 |
Standard-Embedding-Modell. Empfohlen für die Verwendung mit einem RAG-Corpus. |
text-embedding-004 |
|
text-multilingual-embedding-002 |
Empfohlen für die Verwendung mit einem RAG-Corpus. |
textembedding-gecko@003 |
|
textembedding-gecko-multilingual@001 |
|
textembedding-gecko@002 |
Nur optimierte Versionen. |
textembedding-gecko@001 |
Nur optimierte Versionen. |
Open-Source-Embedding-Modelle
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
Vertex AI-Modelle für die Texteinbettung verwenden
Die Vertex AI Text Embedding API verwendet die Gecko-Einbettungsmodelle, die einen dichten Einbettungsvektor mit 768 Dimensionen erstellen. Hohe Einbettungen speichern im Gegensatz zu dünnbesetzten Vektoren, die Wörter in der Regel direkt Zahlen zuordnen, die Bedeutung von Text. Der Vorteil der dichten Vektoreinbettungen in der generativen KI besteht darin, dass Sie anstelle der direkten Übereinstimmungen mit Wörtern oder Syntaxen besser nach Passagen suchen können, die der Bedeutung der Abfrage entsprechen, selbst wenn die Abschnitte nicht dieselbe Sprache verwenden.
Gecko-Modelle
Gecko-Modelle sind nur in englischer und mehrsprachiger Version verfügbar. Im Gegensatz zu optimierten Gecko-Modellen müssen Publisher-Gecko-Modelle nicht bereitgestellt werden. Daher sind sie die bevorzugten Modelle für die Verwendung mit der Vertex AI RAG Engine.
Informationen zum verwendeten Standard-Embedding-Modell oder eine Liste der Gecko-Modelle, die für die Verwendung mit einem RAG-Corpus empfohlen werden, finden Sie unter Unterstützte Einbettungsmodelle.
Einstellung von Gecko-Modellen
Die Gecko-Modelle von Publishern werden möglicherweise eingestellt. In diesem Fall können die Publisher-Gecko-Modelle nicht mit der Vertex AI RAG Engine verwendet werden, auch nicht für ein RAG-Korpus, das vor der Einstellung erstellt wurde. Wenn Ihr Gecko-Modell eingestellt wird, müssen Sie den RAG-Korpus migrieren. Das bedeutet, dass Sie einen neuen RAG-Korpus erstellen und die Daten noch einmal importieren. Alternativ können Sie ein optimiertes Gecko-Modell oder ein selbst bereitgestelltes OSS-Einbettungsmodell verwenden, das nach der Einstellung des Modells unterstützt wird.
RAG-Korpus mit einem Publisher-Gecko-Modell erstellen
Diese Codebeispiele zeigen, wie Sie einen RAG-Korpus mit einem Publisher-Gecko-Modell erstellen.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Set this to your choice of publisher Gecko model. Note that the full resource name of the publisher model is required.
// Example: projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/text-embedding-004
ENDPOINT_NAME=YOUR_ENDPOINT_NAME
// Set a display name for your corpus.
// For example, "my test corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
Vertex AI SDK für Python
import vertexai
from vertexai import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=${PROJECT_ID}, location="us-central1")
# Configure a Google first-party embedding model
embedding_model_config = rag.EmbeddingModelConfig(
publisher_model="publishers/google/models/text-embedding-004"
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, embedding_model_config=embedding_model_config
)
Optimierte Vertex AI-Modelle für die Texteinbettung verwenden
Die Publisher-Grundlagenmodelle werden zwar mit einem großen Textdatensatz trainiert und bieten eine solide Grundlage für viele Aufgaben, es kann aber Szenarien geben, in denen Sie von den Modellen spezialisiertes Wissen oder eine stark angepasste Leistung benötigen. In solchen Fällen können Sie mit der Modellabstimmung die Darstellungen des Modells anhand Ihrer relevanten Daten optimieren. Ein weiterer Vorteil dieses Ansatzes besteht darin, dass das resultierende Bild nach der Feinabstimmung Ihnen gehört und nicht von der Einstellung des Gecko-Modells betroffen ist. Alle optimierten Gecko-Embedding-Modelle erzeugen Einbettungen mit 768-dimensionalen Vektoren. Weitere Informationen zu diesen Modellen finden Sie unter Texteinbettungen abrufen.
Weitere Informationen zum Optimieren von Einbettungsmodellen finden Sie unter Texteinbettungen optimieren.
Diese Codebeispiele zeigen, wie Sie einen RAG-Korpus mit Ihrem bereitgestellten, optimierten Gecko-Modell erstellen.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Your Vertex AI endpoint resource with the deployed fine-tuned Gecko model
// Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
ENDPOINT_NAME=YOUR_ENDPOINT_NAME
// Set a display name for your corpus.
// For example, "my test corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
Vertex AI SDK für Python
import vertexai
from vertexai import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=${PROJECT_ID}, location="us-central1")
# Your Vertex Endpoint resource with the deployed fine-tuned Gecko model
ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
MODEL_ENDPOINT = "projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT_ID}"
embedding_model_config = rag.EmbeddingModelConfig(
endpoint=${MODEL_ENDPOINT},
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=${DISPLAY_NAME}, embedding_model_config=embedding_model_config
)
Open Source-Einbettungsmodelle verwenden
Die Vertex AI RAG Engine unterstützt Open-Source-Einbettungsmodelle von Drittanbietern in englischsprachigen und mehrsprachigen Varianten. In dieser Tabelle sind die unterstützten E5-Modelle aufgeführt.
Modellversion | Basismodell | Parameter | Einbettungsdimension | Nur Englisch |
---|---|---|---|---|
e5-base-v2 |
MiniLM |
109M | 768 | ✔ |
e5-large-v2 |
MiniLM |
335M | 1.024 | ✔ |
e5-small-v2 |
MiniLM |
33M | 384 | ✔ |
multilingual-e5-large |
xlm-roberta-large |
560M | 1.024 | ✗ |
multilingual-e5-small |
microsoft/Multilingual-MiniLM-L12-H384 |
118M | 384 | ✗ |
Um E5-Modelle mit der Vertex AI RAG Engine zu verwenden, muss das E5-Modell aus Model Garden bereitgestellt werden. Informationen zum Bereitstellen Ihres E5-Modells finden Sie in der Google Cloud Console unter E5-Texteinbettung.
Diese Codebeispiele zeigen, wie Sie einen RAG-Korpus mit Ihrem bereitgestellten E5-Modell erstellen.
curl
ENDPOINT=us-central1-aiplatform.googleapis.com
PROJECT_ID=YOUR_PROJECT_ID
// Your Vertex Endpoint resource with the deployed E5 model
// Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
ENDPOINT_NAME=YOUR_ENDPOINT_NAME
// Set a display name for your corpus.
// For example, "my test corpus"
CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME
// CreateRagCorpus
// Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
-d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME</var>}"\"',
"rag_embedding_model_config" : {
"vertex_prediction_endpoint": {
"endpoint": '\""${ENDPOINT_NAME}"\"'
}
}
}'
Vertex AI SDK für Python
import vertexai
from vertexai import rag
# Set Project
PROJECT_ID = "YOUR_PROJECT_ID"
vertexai.init(project=PROJECT_ID, location="us-central1")
# Your Vertex Endpoint resource with the deployed E5 model
ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
MODEL_ENDPOINT = "projects/{PROJECT_ID}/locations/us-central1/endpoints/{ENDPOINT_ID}"
embedding_model_config = rag.EmbeddingModelConfig(
endpoint=MODEL_ENDPOINT,
)
# Name your corpus
DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
rag_corpus = rag.create_corpus(
display_name=DISPLAY_NAME, embedding_model_config=embedding_model_config
)