本頁面說明如何使用 Text Embedding API 建立文字嵌入。
Vertex AI 透過 Text Embedding API,支援 Google Distributed Cloud (GDC) 氣隙中的文字嵌入模型。文字嵌入會使用向量表示法。
文字嵌入可將以任何支援語言撰寫的文字資料轉換為數值向量。這些向量表示法旨在擷取所代表字詞的語意和脈絡。文字嵌入模型可針對各種工作類型生成最佳化嵌入內容,例如文件擷取、問答、分類,以及文字的事實查核。
如要進一步瞭解文字嵌入使用的重要概念,請參閱下列說明文件:
- 如要進一步瞭解嵌入,請參閱文字嵌入總覽。
- 如要瞭解文字嵌入模型,請參閱「嵌入模型」。
- 如要瞭解工作類型如何產生最佳化嵌入,請參閱「選擇嵌入工作類型」。
- 如要瞭解各個嵌入模型支援哪些語言,請參閱「支援的文字嵌入語言」。
事前準備
在 GDC 專案中使用 Text Embedding 前,請按照下列步驟操作:
- 設定 Vertex AI 專案。
- 根據語言和工作類型,選擇其中一個可用的文字嵌入模型。
- 視要使用的模型而定,啟用 Text Embedding 或 Text Embedding Multilingual API。
授予使用者或服務帳戶適當的 Text Embedding 或 Text Embedding Multilingual 存取權。詳情請參閱下列說明文件:
模型要求、服務帳戶和 IAM 角色繫結必須使用同一個專案。
取得某段文字的文字嵌入
符合必要條件後,您可以使用 Text Embedding 或 Text Embedding Multilingual 模型,透過 API 或 Python 適用的 SDK,取得某段文字的文字嵌入。
下列範例使用 text-embedding-004
模型。
對 Text Embedding API 提出 REST 要求。否則,請透過 Python 指令碼與模型互動,取得文字嵌入。
REST
如要取得文字嵌入,請指定模型端點,然後傳送 POST 要求。
如要提出要求,請按照下列步驟操作:
將要求內容儲存到名為
request.json
的 JSON 檔案。檔案必須類似下列範例:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
使用
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"
更改下列內容:
您必須取得類似以下的 JSON 回應:
{"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
請按照下列步驟,透過 Python 指令碼取得文字嵌入:
將要求內容儲存到名為
request.json
的 JSON 檔案。檔案必須類似下列範例:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }
安裝需要的 Python 程式庫:
pip install absl-py
建立名為
client.py
的 Python 檔案。檔案內容必須如下列範例所示: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)
更改下列內容:
PROJECT
:您的專案名稱。MODEL
:要使用的模型。可用的值如下:endpoint-text-embedding
。endpoint-text-embedding-multilingual
,適用於文字嵌入多語言模型。
CERT_NAME
:憑證授權單位 (CA) 憑證檔案的名稱,例如org-1-trust-bundle-ca.cert
。只有在開發環境中,才需要這個值。否則請省略。
傳送要求:
python client.py --token=TOKEN --host=ENDPOINT --input=request.json --endpoint_id=MODEL
更改下列內容:
您必須取得類似以下的 JSON 回應:
{"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"}