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) mit Air Gap über die Text Embedding API. Texteinbettung verwendet Vektordarstellungen.
Mit der Texteinbettung werden Textdaten, die in einer unterstützten Sprache verfasst wurden, 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 Texteinbettungsmodellen können optimierte Einbettungen für verschiedene Aufgabentypen generiert werden, z. B. für den Dokumentabruf, Frage und Antwort, die Klassifizierung und die Faktenprüfung für Text.
Weitere Informationen zu den wichtigsten Konzepten, die für 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 Aufgabentypen optimierte Einbettungen generieren, 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.
Hinweis
Wenn Sie Texteinbettungen in einem GDC-Projekt generieren möchten, fordern Sie die erforderlichen Berechtigungen von Ihrem Administrator an.
IAM-Rollen anfordern
Wenden Sie sich an Ihren IAM-Projektadministrator, um je nach dem Modell, das Sie verwenden möchten, eine der folgenden Rollen in Ihrem Projekt-Namespace anzufordern:
- AI Text Embedding Developer (
ai-text-embedding-developer): Generiert Texteinbettungen mit dem Texteinbettungsmodell. - AI Text Embedding Multilingual Developer (
ai-text-embedding-multilingual-developer): Generiert Texteinbettungen mit dem Modell „Text Embedding Multilingual“.
Weitere Informationen zu diesen Rollen finden Sie unter IAM-Berechtigungen vorbereiten. Informationen zu Rollenbindungen für Dienstkonten finden Sie unter Dienstkonten einrichten.
Umgebung vorbereiten
Führen Sie die folgenden Schritte aus, bevor Sie die Texteinbettung in einem GDC-Projekt verwenden:
- 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 Texteinbettung API oder die Texteinbettung Multilingual API, je nachdem, welches Modell Sie verwenden möchten.
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 „Text Embedding“ oder „Text Embedding Multilingual“ verwenden, um Texteinbettungen für ein Text-Snippet mithilfe der API oder des 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 wie im folgenden Beispiel 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 Texteinbettungen oder mehrsprachige Texteinbettungen, den Sie für Ihre Organisation verwenden. Weitere Informationen finden Sie unter Dienststatus und Endpunkte ansehen.PROJECTist der Name Ihres Projekts.MODEL: das Modell, das Sie verwenden möchten. Folgende Werte sind verfügbar:endpoint-text-embeddingfür das Texteinbettungsmodell.endpoint-text-embedding-multilingualfür das mehrsprachige Texteinbettungsmodell.
Sie sollten eine JSON-Antwort ähnlich wie diese 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 wie im folgenden Beispiel aussehen:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }Installieren Sie die erforderlichen Python-Bibliotheken:
pip install absl-pyErstellen Sie eine Python-Datei mit dem Namen
client.py. Die Datei muss wie im folgenden Beispiel 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:
PROJECTist der Name Ihres Projekts.MODEL: das Modell, das Sie verwenden möchten. Folgende Werte sind verfügbar:text-embeddingfür das Texteinbettungsmodell.text-embedding-multilingualfür das mehrsprachige Texteinbettungsmodell.
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.
Senden Sie eine Anfrage:
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODELErsetzen Sie Folgendes:
TOKEN: das Authentifizierungstoken, das Sie erhalten haben.ENDPOINT: Der Endpunkt für Texteinbettungen oder mehrsprachige Texteinbettungen, den Sie für Ihre Organisation verwenden. Weitere Informationen finden Sie unter Dienststatus und Endpunkte ansehen.MODEL: das Modell, das Sie verwenden möchten. Folgende Werte sind verfügbar:text-embeddingfür das Texteinbettungsmodell.text-embedding-multilingualfür das mehrsprachige Texteinbettungsmodell.
Sie sollten eine JSON-Antwort ähnlich wie diese 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"}