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:
- Untuk mempelajari embedding lebih lanjut, 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 embedding teks yang didukung.
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:
- Siapkan project untuk Vertex AI.
- Pilih salah satu model yang tersedia untuk embedding teks, bergantung pada bahasa dan jenis tugas.
- Aktifkan API embedding teks atau embedding teks multibahasa, bergantung pada model yang ingin Anda gunakan.
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:
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-embeddinguntuk model Embedding Teks.endpoint-text-embedding-multilingualuntuk 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:
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-pyBuat 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-embeddinguntuk model Embedding Teks.text-embedding-multilingualuntuk model Text Embedding Multilingual.
CERT_NAME: nama file sertifikat Certificate Authority (CA), sepertiorg-1-trust-bundle-ca.cert. Anda hanya memerlukan nilai ini jika berada di lingkungan pengembangan. Jika tidak, hilangkan.
Mengirim permintaan:
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODELGanti 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-embeddinguntuk model Embedding Teks.text-embedding-multilingualuntuk 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"}