בדף הזה מוסבר איך ליצור הטמעת טקסט באמצעות Text Embedding API.
Vertex AI תומך בהטמעות טקסט ב-Google Distributed Cloud (GDC) במודל Air-gapped באמצעות Text Embedding API. הטמעת טקסט משתמשת בייצוגים וקטוריים.
הטמעת טקסט ממירה נתונים טקסטואליים שכתובים בכל שפה נתמכת לווקטורים מספריים. הייצוגים הווקטוריים האלה נועדו לתפוס את המשמעות הסמנטית ואת ההקשר של המילים שהם מייצגים. מודלים של הטמעת טקסט יכולים ליצור הטמעות אופטימליות לסוגים שונים של משימות, כמו אחזור מסמכים, שאלות ותשובות, סיווג ואימות עובדות בטקסט.
למידע נוסף על מושגי מפתח שמשמשים להטמעות טקסט, עיינו במאמרי העזרה הבאים:
- סקירה כללית על הטמעות טקסט
- מידע ולמידה על מודלים להטמעת טקסט
- במאמר בחירת סוג משימה להטמעות מוסבר איך סוגי המשימות יוצרים הטמעות שעברו אופטימיזציה.
- במאמר שפות נתמכות להטמעת טקסט מפורטות השפות שנתמכות בכל מודל הטמעה.
לפני שמתחילים
כדי ליצור הטמעות טקסט בפרויקט GDC, צריך לבקש מהאדמין את ההרשאות הנדרשות.
בקשת תפקידים ב-IAM
פנו לאדמין של הפרויקט ב-IAM ובקשו ממנו להקצות לכם את אחד מהתפקידים הבאים במרחב השמות של הפרויקט, בהתאם למודל שבו אתם רוצים להשתמש:
- מפתח הטמעת טקסט ב-AI (
ai-text-embedding-developer): יצירת הטמעות טקסט באמצעות המודל Text Embedding. - AI Text Embedding Multilingual Developer (
ai-text-embedding-multilingual-developer): יצירת הטמעות טקסט באמצעות המודל Text Embedding Multilingual.
למידע נוסף על התפקידים האלה, ראו הכנת הרשאות IAM. מידע נוסף על קישורי תפקידים לחשבונות שירות זמין במאמר הגדרת חשבונות שירות.
הכנת הסביבה
לפני שמשתמשים בהטמעת טקסט בפרויקט ב-GDC, צריך לבצע את הפעולות הבאות:
- הגדרת פרויקט ל-Vertex AI.
- בוחרים אחד מהמודלים הזמינים להטמעות טקסט, בהתאם לשפה ולסוג המשימה.
- מפעילים את Text Embedding API או את Text Embedding Multilingual API, בהתאם למודל שבו רוצים להשתמש.
אתם צריכים להשתמש באותו פרויקט לבקשות המודל, לחשבון השירות ולקישור התפקיד ב-IAM.
איך מקבלים הטמעות טקסט לקטע טקסט
אחרי שעומדים בדרישות המוקדמות, אפשר להשתמש במודלים Text Embedding או Text Embedding Multilingual כדי לקבל הטמעות טקסט לקטע טקסט באמצעות ה-API או ה-SDK ל-Python.
בדוגמאות הבאות נעשה שימוש במודל text-embedding-004.
שולחים בקשת REST ל-API של הטמעת טקסט. אחרת, צריך ליצור אינטראקציה עם המודל מסקריפט Python כדי לקבל הטמעת טקסט.
REST
כדי לקבל הטמעות טקסט, שולחים בקשת POST ומציינים את נקודת הקצה של המודל.
כדי לשלוח בקשה:
שומרים את תוכן הבקשה בקובץ JSON בשם
request.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"מחליפים את מה שכתוב בשדות הבאים:
-
TOKEN: אסימון האימות שקיבלתם. -
ENDPOINT: נקודת הקצה של הטמעת הטקסט או הטמעת הטקסט בכמה שפות שבה אתם משתמשים בארגון. למידע נוסף על סטטוס השירות ונקודות הקצה -
PROJECT: שם הפרויקט.
MODEL: המודל שבו רוצים להשתמש. אלה הערכים הזמינים:-
endpoint-text-embeddingלמודל הטמעת הטקסט. endpoint-text-embedding-multilingualלמודל הטמעת טקסט רב-לשוני.
-
-
הפלט אמור להיראות כך:
{"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:
שומרים את תוכן הבקשה בקובץ JSON בשם
request.json. הקובץ צריך להיראות כמו בדוגמה הבאה:{ "instances": [ { "content": "What is life?", "task_type": "", "title": "" } ] }מתקינים את ספריות Python הנדרשות:
pip install absl-pyיוצרים קובץ Python בשם
client.py. הקובץ צריך להיראות כמו בדוגמה הבאה: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: המודל שבו רוצים להשתמש. אלה הערכים הזמינים:-
text-embeddingלמודל הטמעת הטקסט. 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מחליפים את מה שכתוב בשדות הבאים:
-
TOKEN: אסימון האימות שקיבלתם. -
ENDPOINT: נקודת הקצה של הטמעת הטקסט או הטמעת הטקסט בכמה שפות שבה אתם משתמשים בארגון. למידע נוסף על סטטוס השירות ונקודות הקצה
MODEL: המודל שבו רוצים להשתמש. אלה הערכים הזמינים:-
text-embeddingלמודל הטמעת הטקסט. text-embedding-multilingualלמודל הטמעת טקסט רב-לשוני.
-
-
הפלט אמור להיראות כך:
{"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"}