Halaman ini menjelaskan cara membuat penyematan teks menggunakan Text Embedding API.
Vertex AI mendukung penyematan teks di lingkungan tertutup Google Distributed Cloud (GDC) melalui Text Embedding API. Text Embedding menggunakan representasi vektor.
Text Embedding 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 penyematan teks dapat menghasilkan penyematan yang dioptimalkan untuk berbagai jenis tugas, seperti pengambilan dokumen, pertanyaan dan jawaban, klasifikasi, dan verifikasi fakta untuk teks.
Untuk mengetahui informasi selengkapnya tentang konsep utama yang digunakan embedding teks, lihat dokumentasi berikut:
- Untuk mempelajari lebih lanjut embedding, lihat ringkasan embedding teks.
- Untuk mempelajari model embedding teks, lihat Model embedding.
- Untuk mempelajari cara jenis tugas menghasilkan embedding yang dioptimalkan, lihat Memilih jenis tugas embedding.
- Untuk mengetahui informasi tentang bahasa yang didukung oleh setiap model embedding, lihat Bahasa yang didukung untuk embedding teks.
Sebelum memulai
Sebelum menggunakan Penyematan Teks dalam project GDC, ikuti langkah-langkah berikut:
- Siapkan project untuk Vertex AI.
- Pilih salah satu model yang tersedia untuk embedding teks, bergantung pada bahasa dan jenis tugas.
- Aktifkan Text Embedding API atau Text Embedding Multilingual API, bergantung pada model yang ingin Anda gunakan.
Berikan akses yang sesuai kepada pengguna atau akun layanan ke Text Embedding atau Text Embedding Multilingual. Untuk informasi selengkapnya, lihat dokumentasi berikut:
- Untuk mengetahui informasi tentang peran yang diperlukan, lihat Menyiapkan izin IAM.
- Untuk mengetahui informasi tentang binding peran untuk akun layanan, lihat Menyiapkan akun layanan.
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 dengan menggunakan API atau SDK untuk Python.
Contoh berikut menggunakan model text-embedding-004
.
Buat permintaan REST ke Text Embedding API. Atau, berinteraksi 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:
Simpan konten permintaan Anda dalam file JSON bernama
request.json
. File harus terlihat seperti contoh berikut:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
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 Multibahasa Embedding Teks.
Anda harus mendapatkan respons JSON yang mirip dengan 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:
Simpan konten permintaan Anda dalam file JSON bernama
request.json
. File harus terlihat seperti contoh berikut:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
Instal library Python yang diperlukan:
pip install absl-py
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:endpoint-text-embedding
untuk model Embedding Teks.endpoint-text-embedding-multilingual
untuk model Multibahasa Embedding Teks.
CERT_NAME
: nama file sertifikat Otoritas Sertifikat (CA), sepertiorg-1-trust-bundle-ca.cert
. Anda hanya memerlukan nilai ini jika berada di lingkungan pengembangan. Jika tidak, jangan sertakan.
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:endpoint-text-embedding
untuk model Embedding Teks.endpoint-text-embedding-multilingual
untuk model Multibahasa Embedding Teks.
Anda harus mendapatkan respons JSON yang mirip dengan 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"}