Texteinbettungen abrufen

Diese Inhalte gelten für Version 1.14.4 und höher.

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:

Hinweise

Bevor Sie Text Embedding in einem GDC-Projekt verwenden, führen Sie die folgenden Schritte aus:

  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 Text Embedding API oder die Text Embedding Multilingual API, je nachdem, welches Modell Sie verwenden möchten.
  4. Nutzer oder Dienstkonten den entsprechenden Zugriff auf Text Embedding oder Text Embedding Multilingual gewähren Weitere Informationen erhalten Sie in dieser Dokumentation:

  5. Vertex AI-Clientbibliotheken installieren

  6. 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 „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:

  1. 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": ""
        }
      ]
    }
    
  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 Texteinbettung oder mehrsprachige Texteinbettung, den Sie für Ihre Organisation verwenden. Weitere Informationen
    • 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.

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:

  1. Vertex AI Platform-Clientbibliothek installieren

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