Mendapatkan embedding teks

Halaman ini menjelaskan cara membuat embedding teks menggunakan Text Embedding API.

Vertex AI mendukung embedding teks di Google Distributed Cloud (GDC) dengan air gap melalui Text Embedding API. Embedding Teks menggunakan representasi vektor.

Embedding Teks mengonversi data tekstual yang ditulis dalam bahasa apa pun yang didukung menjadi vektor numerik. Representasi vektor ini dirancang untuk menangkap makna semantik dan konteks dari kata-kata yang direpresentasikannya. Model embedding teks dapat menghasilkan embedding yang dioptimalkan untuk berbagai jenis tugas, seperti pengambilan dokumen, tanya jawab, klasifikasi, dan verifikasi fakta untuk teks.

Untuk mengetahui informasi selengkapnya tentang konsep utama yang digunakan embedding teks, lihat dokumentasi berikut:

Sebelum memulai

Untuk membuat embedding teks dalam project GDC, minta izin yang diperlukan dari administrator Anda.

Meminta peran IAM

Hubungi IAM Project Admin Anda untuk meminta salah satu peran berikut di namespace project Anda, bergantung pada model yang ingin Anda gunakan:

  • AI Text Embedding Developer (ai-text-embedding-developer): membuat embedding teks menggunakan model Text Embedding.
  • AI Text Embedding Multilingual Developer (ai-text-embedding-multilingual-developer): membuat embedding teks menggunakan model Text Embedding Multilingual.

Untuk mengetahui informasi selengkapnya tentang peran ini, lihat Menyiapkan izin IAM. Untuk mengetahui informasi tentang binding peran untuk akun layanan, lihat Menyiapkan akun layanan.

Menyiapkan lingkungan Anda

Sebelum menggunakan embedding teks dalam project GDC, ikuti langkah-langkah berikut:

  1. Siapkan project untuk Vertex AI.
  2. Pilih salah satu model yang tersedia untuk embedding teks, bergantung pada bahasa dan jenis tugas.
  3. Aktifkan API embedding teks atau embedding teks multibahasa, bergantung pada model yang ingin Anda gunakan.
  4. Menginstal library klien Vertex AI.

  5. Dapatkan token autentikasi.

Anda harus menggunakan project yang sama untuk permintaan model, akun layanan, dan binding peran IAM.

Mendapatkan embedding teks untuk cuplikan teks

Setelah memenuhi prasyarat, Anda dapat menggunakan model Text Embedding atau Text Embedding Multilingual untuk mendapatkan embedding teks untuk cuplikan teks menggunakan API atau SDK untuk Python.

Contoh berikut menggunakan model text-embedding-004.

Membuat permintaan REST ke API Embedding Teks. Atau, berinteraksilah dengan model dari skrip Python untuk mendapatkan embedding teks.

REST

Untuk mendapatkan embedding teks, kirim permintaan POST dengan menentukan endpoint model.

Ikuti langkah-langkah berikut untuk membuat permintaan:

  1. Simpan konten permintaan Anda dalam file JSON bernama request.json. File harus terlihat seperti contoh berikut:

    {
      "instances": [
        {
          "content": "What is life?",
          "task_type": "",
          "title": ""
        }
      ]
    }
    
  2. Buat permintaan menggunakan alat curl:

    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"
    

    Ganti kode berikut:

    • TOKEN: token autentikasi yang Anda peroleh.
    • ENDPOINT: endpoint Text Embedding atau Text Embedding Multilingual yang Anda gunakan untuk organisasi Anda. Untuk mengetahui informasi selengkapnya, lihat status dan endpoint layanan.
    • PROJECT: nama project Anda.
    • MODEL: model yang ingin Anda gunakan. Berikut adalah nilai yang tersedia:

      • endpoint-text-embedding untuk model Embedding Teks.
      • endpoint-text-embedding-multilingual untuk model Text Embedding Multilingual.

Outputnya mirip dengan hal berikut ini:

{"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

Ikuti langkah-langkah berikut untuk mendapatkan embedding teks dari skrip Python:

  1. Menginstal library klien Vertex AI Platform.

  2. Simpan konten permintaan Anda dalam file JSON bernama request.json. File harus terlihat seperti contoh berikut:

    {
      "instances": [
        {
          "content": "What is life?",
          "task_type": "",
          "title": ""
        }
      ]
    }
    
  3. Instal library Python yang diperlukan:

    pip install absl-py
    
  4. Buat file Python bernama client.py. File harus terlihat seperti contoh berikut:

    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)
    

    Ganti kode berikut:

    • PROJECT: nama project Anda.
    • MODEL: model yang ingin Anda gunakan. Berikut adalah nilai yang tersedia:
      • text-embedding untuk model Embedding Teks.
      • text-embedding-multilingual untuk model Text Embedding Multilingual.
    • CERT_NAME: nama file sertifikat Certificate Authority (CA), seperti org-1-trust-bundle-ca.cert. Anda hanya memerlukan nilai ini jika berada di lingkungan pengembangan. Jika tidak, hilangkan.
  5. Mengirim permintaan:

    python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODEL
    

    Ganti kode berikut:

    • TOKEN: token autentikasi yang Anda peroleh.
    • ENDPOINT: endpoint Text Embedding atau Text Embedding Multilingual yang Anda gunakan untuk organisasi Anda. Untuk mengetahui informasi selengkapnya, lihat status dan endpoint layanan.
    • MODEL: model yang ingin Anda gunakan. Berikut adalah nilai yang tersedia:

      • text-embedding untuk model Embedding Teks.
      • text-embedding-multilingual untuk model Text Embedding Multilingual.

Outputnya mirip dengan hal berikut ini:

{"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"}