Auf dieser Seite werden die verfügbaren Einbettungsmodelle beschrieben und gezeigt, wie Sie damit einen RAG-Corpus erstellen. Die Verknüpfung zwischen Ihrem Modell und dem RAG-Corpus bleibt während der gesamten Lebensdauer des RAG-Corpus unverändert.
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.
Die RAG Engine implementiert die Retrieval-Augmented Generation (RAG) und bietet Ihnen die folgenden Einbettungsmodelle zur Verwendung in einem RAG-Corpus:
- Vertex AI-Texteinbettungsmodelle: 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-Texteinbettungsmodelle: Modelle, die für besondere Kenntnisse oder eine hochgradig angepasste Leistung trainiert wurden.
- OSS-Einbettungsmodelle: Open-Source-Einbettungsmodelle von Drittanbietern in englischsprachigen und mehrsprachigen Varianten.
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 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 der einfachste Satz von Modellen für die Verwendung mit der RAG Engine. Die folgenden Gecko-Modelle werden für die Verwendung mit einem RAG-Corpus empfohlen:
text-embedding-004
text-multilingual-embedding-002
textembedding-gecko@003
textembedding-gecko-multilingual@001
Wenn Sie beim Erstellen Ihres RAG-Korpus kein Einbettungsmodell angeben, weist die RAG Engine standardmäßig das Modell text-embedding-004
für Ihren RAG-Korpus zu.
Die Gecko-Modelle von Publishern werden möglicherweise eingestellt. In diesem Fall können die Publisher-Gecko-Modelle nicht mit der RAG Engine verwendet werden, auch nicht für ein RAG-Corpus, das vor der Einstellung erstellt wurde. Wenn Ihr Gecko-Modell verworfen wird, müssen Sie den RAG-Korpus migrieren. Dies bedeutet, dass Sie einen RAG-Korpus erstellen und die Daten 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.
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.preview 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 Abstimmen eines Gecko-Modells finden Sie unter Texteinbettungen abstimmen.
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.preview 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 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 in englischer Sprache verfügbar |
---|---|---|---|---|
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 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.preview 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
)
Nächste Schritte
- Weitere Informationen zu den von den Texteinbettungsmodellen unterstützten Sprachen finden Sie unter Unterstützte Textsprachen.
- Weitere Informationen zur Erdung finden Sie unter Fundierungsübersicht.
- Weitere Informationen zur RAG Engine finden Sie unter RAG Engine verwenden.
- Weitere Informationen zu Fundierung und RAG finden Sie unter Fundierungsantworten mit RAG.