קבלת הטמעות טקסט

בדף הזה מוסבר איך ליצור הטמעת טקסט באמצעות 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, צריך לבצע את הפעולות הבאות:

  1. הגדרת פרויקט ל-Vertex AI.
  2. בוחרים אחד מהמודלים הזמינים להטמעות טקסט, בהתאם לשפה ולסוג המשימה.
  3. מפעילים את Text Embedding API או את Text Embedding Multilingual API, בהתאם למודל שבו רוצים להשתמש.
  4. התקנה של ספריות הלקוח של Vertex AI

  5. קבל אסימון אימות.

אתם צריכים להשתמש באותו פרויקט לבקשות המודל, לחשבון השירות ולקישור התפקיד ב-IAM.

איך מקבלים הטמעות טקסט לקטע טקסט

אחרי שעומדים בדרישות המוקדמות, אפשר להשתמש במודלים Text Embedding או Text Embedding Multilingual כדי לקבל הטמעות טקסט לקטע טקסט באמצעות ה-API או ה-SDK ל-Python.

בדוגמאות הבאות נעשה שימוש במודל text-embedding-004.

שולחים בקשת REST ל-API של הטמעת טקסט. אחרת, צריך ליצור אינטראקציה עם המודל מסקריפט Python כדי לקבל הטמעת טקסט.

REST

כדי לקבל הטמעות טקסט, שולחים בקשת POST ומציינים את נקודת הקצה של המודל.

כדי לשלוח בקשה:

  1. שומרים את תוכן הבקשה בקובץ JSON בשם request.json. הקובץ צריך להיראות כמו בדוגמה הבאה:

    {
      "instances": [
        {
          "content": "What is life?",
          "task_type": "",
          "title": ""
        }
      ]
    }
    
  2. שולחים את הבקשה באמצעות הכלי 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:

  1. התקנה של ספריית הלקוח של Vertex AI Platform.

  2. שומרים את תוכן הבקשה בקובץ JSON בשם request.json. הקובץ צריך להיראות כמו בדוגמה הבאה:

    {
      "instances": [
        {
          "content": "What is life?",
          "task_type": "",
          "title": ""
        }
      ]
    }
    
  3. מתקינים את ספריות Python הנדרשות:

    pip install absl-py
    
  4. יוצרים קובץ 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. הערך הזה נדרש רק אם אתם נמצאים בסביבת פיתוח. אחרת, אפשר להשמיט אותו.
  5. שליחת בקשה:

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