Texteinbettungen abrufen

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:

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:

  1. Projekt für Vertex AI einrichten
  2. Wählen Sie eines der verfügbaren Modelle für Texteinbettungen aus, je nach Sprache und Aufgabentyp.
  3. Aktivieren Sie die Texteinbettung API oder die Texteinbettung Multilingual API, je nachdem, welches Modell Sie verwenden möchten.
  4. Vertex AI-Clientbibliotheken installieren

  5. Authentifizierungstoken abrufen

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:

  1. 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": ""
        }
      ]
    }
    
  2. 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.
    • 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 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:

  1. Installieren Sie die Vertex AI Platform-Clientbibliothek.

  2. 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": ""
        }
      ]
    }
    
  3. Installieren Sie die erforderlichen Python-Bibliotheken:

    pip install absl-py
    
  4. Erstellen 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:

    • PROJECT ist der Name Ihres Projekts.
    • MODEL: das Modell, das Sie verwenden möchten. Folgende Werte sind verfügbar:
      • text-embedding für das Texteinbettungsmodell.
      • text-embedding-multilingual fü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.
  5. Senden Sie eine Anfrage:

    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 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-embedding für das Texteinbettungsmodell.
      • text-embedding-multilingual fü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"}