Auf dieser Seite wird beschrieben, wie Sie eine Texteinbettung mit der Text Embedding API erstellen.
Vertex AI unterstützt Texteinbettungen in Google Distributed Cloud (GDC) Air-Gap über die Text Embedding API. Bei Texteinbettungen werden Vektordarstellungen verwendet.
Mit Text Embedding werden Textdaten, die in einer beliebigen unterstützten Sprache verfasst sind, in numerische Vektoren umgewandelt. Diese Vektordarstellungen sind so konzipiert, dass die semantische Bedeutung und der Kontext der von ihnen dargestellten Wörter erfasst werden. Mit Text-Embedding-Modellen können optimierte Embeddings für verschiedene Aufgabentypen generiert werden, z. B. für den Dokumentabruf, das Stellen und Beantworten von Fragen, die Klassifizierung und die Faktenprüfung für Text.
Weitere Informationen zu den wichtigsten Konzepten, die bei Texteinbettungen verwendet werden, finden Sie in der folgenden Dokumentation:
- Weitere Informationen zu Einbettungen finden Sie in der Übersicht über Texteinbettungen.
- Weitere Informationen zu Texteinbettungsmodellen finden Sie unter Einbettungsmodelle.
- Informationen dazu, wie mit Aufgabentypen optimierte Einbettungen generiert werden, finden Sie unter Aufgabentyp für Einbettungen auswählen.
- Informationen dazu, welche Sprachen die einzelnen Einbettungsmodelle unterstützen, finden Sie unter Unterstützte Sprachen für Texteinbettungen.
Hinweise
Bevor Sie Text Embedding in einem GDC-Projekt verwenden, führen Sie die folgenden Schritte aus:
- Projekt für Vertex AI einrichten
- Wählen Sie eines der verfügbaren Modelle für Texteinbettungen aus, je nach Sprache und Aufgabentyp.
- Aktivieren Sie die Text Embedding API oder die Text Embedding Multilingual API, je nachdem, welches Modell Sie verwenden möchten.
Nutzer oder Dienstkonten den entsprechenden Zugriff auf Text Embedding oder Text Embedding Multilingual gewähren Weitere Informationen erhalten Sie in dieser Dokumentation:
- Informationen zu den erforderlichen Rollen finden Sie unter IAM-Berechtigungen vorbereiten.
- Informationen zu Rollenbindungen für Dienstkonten finden Sie unter Dienstkonten einrichten.
Sie müssen dasselbe Projekt für Ihre Modellanfragen, das Dienstkonto und die IAM-Rollenbindung verwenden.
Texteinbettungen für ein Text-Snippet abrufen
Nachdem Sie die Voraussetzungen erfüllt haben, können Sie die Modelle „Texteinbettung“ oder „Texteinbettung – Mehrsprachig“ verwenden, um Texteinbettungen für einen Textausschnitt über die API oder das SDK für Python abzurufen.
In den folgenden Beispielen wird das text-embedding-004
-Modell verwendet.
Stellen Sie eine REST-Anfrage an die Text Embedding API. Andernfalls können Sie über ein Python-Skript mit dem Modell interagieren, um eine Texteinbettung zu erhalten.
REST
Senden Sie zum Abrufen von Texteinbettungen eine POST-Anfrage, wozu Sie den Modellendpunkt angeben.
So stellen Sie eine Anfrage:
Speichern Sie den Inhalt Ihrer Anfrage in einer JSON-Datei mit dem Namen
request.json
. Die Datei muss so aussehen:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Stellen Sie die Anfrage mit dem
curl
-Tool:curl -X POST \ -H "Authorization: Bearer TOKEN"\ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/endpoints/MODEL:predict"
Ersetzen Sie Folgendes:
TOKEN
: das Authentifizierungstoken, das Sie erhalten haben.ENDPOINT
: Der Endpunkt für Texteinbettung oder mehrsprachige Texteinbettung, den Sie für Ihre Organisation verwenden. Weitere InformationenPROJECT
ist der Name Ihres Projekts.MODEL
: das Modell, das Sie verwenden möchten. Folgende Werte sind verfügbar:endpoint-text-embedding
für das Texteinbettungsmodell.endpoint-text-embedding-multilingual
für das mehrsprachige Modell zur Texteinbettung.
Sie müssen eine JSON-Antwort ähnlich der folgenden erhalten:
{"predictions":[[-0.00668720435,3.20804138e-05,-0.0281705819,-0.00954890903,-0.0818724185,0.0150693133,-0.00677698106, …. ,0.0167487375,-0.0534791686,0.00208711182,0.032938987,-0.01491543]],"deployedModelId":"text-embedding","model":"models/text-embedding/1","modelDisplayName":"text-embedding","modelVersionId":"1"}
Python
So rufen Sie Texteinbettungen aus einem Python-Skript ab:
Speichern Sie den Inhalt Ihrer Anfrage in einer JSON-Datei mit dem Namen
request.json
. Die Datei muss so aussehen:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Installieren Sie die erforderlichen Python-Bibliotheken:
pip install absl-py
Erstellen Sie eine Python-Datei mit dem Namen
client.py
. Die Datei muss so aussehen:import json import os from typing import Sequence import grpc from absl import app from absl import flags from google.protobuf import json_format from google.protobuf.struct_pb2 import Value from google.cloud.aiplatform_v1.services import prediction_service _INPUT = flags.DEFINE_string("input", None, "input", required=True) _HOST = flags.DEFINE_string("host", None, "Prediction endpoint", required=True) _ENDPOINT_ID = flags.DEFINE_string("endpoint_id", None, "endpoint id", required=True) _TOKEN = flags.DEFINE_string("token", None, "STS token", required=True) # ENDPOINT_RESOURCE_NAME is a placeholder value that doesn't affect prediction behavior. ENDPOINT_RESOURCE_NAME="projects/PROJECT/locations/PROJECT/endpoints/MODEL" os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = CERT_NAME # predict_client_secure builds a client that requires TLS def predict_client_secure(host): with open(os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"], 'rb') as f: creds = grpc.ssl_channel_credentials(f.read()) channel_opts = () channel_opts += (('grpc.ssl_target_name_override', host),) client = prediction_service.PredictionServiceClient( transport=prediction_service.transports.grpc.PredictionServiceGrpcTransport( channel=grpc.secure_channel(target=host+":443", credentials=creds, options=channel_opts))) return client def predict_func(client, instances, token): resp = client.predict( endpoint=ENDPOINT_RESOURCE_NAME, instances=instances, metadata=[ ("x-vertex-ai-endpoint-id", _ENDPOINT_ID.value), ("authorization", "Bearer " + token),]) print(resp) def main(argv: Sequence[str]): del argv # Unused. with open(_INPUT.value) as json_file: data = json.load(json_file) instances = [json_format.ParseDict(s, Value()) for s in data["instances"]] client = predict_client_secure(_HOST.value,) predict_func(client=client, instances=instances, token=_TOKEN.value) if __name__=="__main__": app.run(main)
Ersetzen Sie Folgendes:
PROJECT
ist der Name Ihres Projekts.MODEL
: das Modell, das Sie verwenden möchten. Folgende Werte sind verfügbar:endpoint-text-embedding
für das Texteinbettungsmodell.endpoint-text-embedding-multilingual
für das mehrsprachige Modell zur Texteinbettung.
CERT_NAME
: der Name der Zertifikatsdatei der Zertifizierungsstelle (Certificate Authority, CA), z. B.org-1-trust-bundle-ca.cert
. Sie benötigen diesen Wert nur, wenn Sie sich in einer Entwicklungsumgebung befinden. Andernfalls lassen Sie es weg.
Anfrage senden:
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODEL
Ersetzen Sie Folgendes:
TOKEN
: das Authentifizierungstoken, das Sie erhalten haben.ENDPOINT
: Der Endpunkt für Texteinbettung oder mehrsprachige Texteinbettung, den Sie für Ihre Organisation verwenden. Weitere InformationenMODEL
: das Modell, das Sie verwenden möchten. Folgende Werte sind verfügbar:endpoint-text-embedding
für das Texteinbettungsmodell.endpoint-text-embedding-multilingual
für das mehrsprachige Modell zur Texteinbettung.
Sie müssen eine JSON-Antwort ähnlich der folgenden erhalten:
{"predictions":[[-0.00668720435,3.20804138e-05,-0.0281705819,-0.00954890903,-0.0818724185,0.0150693133,-0.00677698106, …. ,0.0167487375,-0.0534791686,0.00208711182,0.032938987,-0.01491543]],"deployedModelId":"text-embedding","model":"models/text-embedding/1","modelDisplayName":"text-embedding","modelVersionId":"1"}