שימוש במודלים של הטמעה עם Vertex AI RAG Engine

בדף הזה מוסבר על האפשרויות של מודלים להטמעה, ומוסבר איך להשתמש במודל ההטמעה כדי ליצור מאגר מידע של RAG. הקשר בין מודל ההטמעה לבין מאגר ה-RAG נשאר קבוע למשך משך החיים של מאגר ה-RAG.

מבוא להטמעות

הטמעות הן ייצוגים מספריים של קלטים. אתם יכולים להשתמש בהטמעות באפליקציות שלכם כדי לזהות משמעויות מורכבות ויחסים סמנטיים, וכדי לעבד ולייצר שפה.

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

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

אפשרויות להטמעת מודלים

מנוע ה-RAG של Vertex AI מיישם יצירה משולבת-אחזור (RAG), ומציע לכם לבחור מבין מודלים ההטמעה הבאים לשימוש במאגר RAG:

סוג מודל ההטמעה תיאור
מודלים להטמעת טקסט ב-Vertex AI מודלים שאומנו על ידי המוציא לאור, כמו Google. המודלים מאומנים על מערך נתונים גדול של טקסט, ומספקים בסיס חזק למשימות רבות.
מודלים של הטמעת טקסט ב-Vertex AI שעברו כוונון עדין מודלים להטמעת טקסט ב-Vertex AI עוברים כוונון עדין כדי לקבל ידע מיוחד או ביצועים מותאמים במיוחד.
מודלים להטמעה של OSS מודלים של הטמעה בקוד פתוח של צד שלישי באנגלית בלבד ובגרסאות רב-לשוניות.

מודלים נתמכים להטמעה

מודלים להטמעה משמשים ליצירת קורפוס ולחיפוש ואחזור במהלך יצירת התגובה. בקטע הזה מפורטים מודלים להטמעה שנתמכים.

גרסת המודל תיאור
text-embedding-005 מודל ברירת המחדל להטמעה.

מומלץ לשימוש עם קורפוס RAG.

text-embedding-004
text-multilingual-embedding-002 מומלץ לשימוש עם קורפוס RAG.

מודלים להטמעה בקוד פתוח

יש תמיכה גם במודלים הבאים של הטמעה פתוחה. אפשר למצוא אותם בModel Garden.

  • e5-base-v2
  • e5-large-v2
  • e5-small-v2
  • multilingual-e5-large
  • multilingual-e5-small

שימוש במודלים להטמעת טקסט ב-Vertex AI

‫Vertex AI text embedding API משתמש במודלים של הטמעת Gecko, שיוצרים ווקטור הטמעה צפוף עם 768 ממדים. הטמעות צפופות מאחסנות את המשמעות של הטקסט, בניגוד לוקטורים דלילים, שנוטים למפות מילים ישירות למספרים. היתרון בשימוש בהטמעות וקטוריות צפופות ב-AI גנרטיבי הוא שבמקום לחפש התאמות ישירות למילים או לתחביר, אפשר לחפש קטעי טקסט שתואמים למשמעות של השאילתה, גם אם בקטעי הטקסט לא נעשה שימוש באותה שפה.

מודלים של Gecko

מודלים של Gecko זמינים בגרסאות באנגלית בלבד ובגרסאות רב-לשוניות. בניגוד למודלים של Gecko שעברו כוונון עדין, לא נדרשת פריסה של מודלים של Gecko לבעלי תוכן דיגיטלי, ולכן הם קבוצת המודלים המועדפת לשימוש עם Vertex AI RAG Engine.

כדי לזהות את מודל ההטמעה שמשמש כברירת מחדל או לקבל רשימה של מודלים של Gecko שמומלצים לשימוש עם קורפוס RAG, אפשר לעיין במאמר מודלים נתמכים של הטמעה.

מתי מודלים של Gecko יוצאים משימוש

יכול להיות שנפסיק את השימוש במודלים של Gecko לבעלי תוכן דיגיטלי. אם זה קורה, אי אפשר להשתמש במודלים של Gecko של בעלי תוכן דיגיטלי עם Vertex AI RAG Engine, גם לא עם מאגר מידע של RAG שנוצר לפני ההפסקה. כשמודל Gecko יוצא משימוש, צריך להעביר את מאגר הנתונים של RAG. כלומר, צריך ליצור מאגר נתונים חדש של RAG ולייבא מחדש את הנתונים. אפשרות נוספת היא להשתמש במודל Gecko שעבר כוונון עדין או במודל הטמעה של OSS שמוטמע באופן עצמאי, שנתמך אחרי שהמודל יוצא משימוש.

יצירת מאגר מידע של RAG באמצעות מודל Gecko של מוציא לאור

בדוגמאות הקוד האלה מוסבר איך ליצור קורפוס RAG באמצעות מודל Gecko של בעל תוכן דיגיטלי.

curl

  ENDPOINT=us-central1-aiplatform.googleapis.com
  PROJECT_ID=YOUR_PROJECT_ID

  // Set this to your choice of publisher Gecko model. Note that the full resource name of the publisher model is required.
  // Example: projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/text-embedding-004
  ENDPOINT_NAME=YOUR_ENDPOINT_NAME

  // Set a display name for your corpus.
  // For example, "my test corpus"
  CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME

  // CreateRagCorpus
  // Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
        "rag_embedding_model_config" : {
              "vertex_prediction_endpoint": {
                    "endpoint": '\""${ENDPOINT_NAME}"\"'
              }
        }
  }'

‫Vertex AI SDK ל-Python

  import vertexai
  from vertexai import rag

  # Set Project
  PROJECT_ID = "YOUR_PROJECT_ID"
  vertexai.init(project=${PROJECT_ID}, location="us-central1")

  # Configure a Google first-party embedding model
  embedding_model_config = rag.RagEmbeddingModelConfig(
        publisher_model="publishers/google/models/text-embedding-004"
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

  rag_corpus = rag.create_corpus(
        display_name=DISPLAY_NAME, rag_embedding_model_config=embedding_model_config
  )

שימוש במודלים של הטמעת טקסט ב-Vertex AI שעברו כוונון עדין

למרות שמודלי הבסיס של בעלי התוכן הדיגיטלי מאומנים על מערך נתונים גדול של טקסט ומספקים בסיס חזק למשימות רבות, יכולים להיות תרחישים שבהם תצטרכו שהמודלים יתבססו על ידע מיוחד או על ביצועים מותאמים במיוחד. במקרים כאלה, כדאי להשתמש בהתאמת המודל כדי לשפר את הייצוגים של המודל באמצעות הנתונים הרלוונטיים. יתרון נוסף של הגישה הזו הוא שכשהמודל עובר כוונון עדין, התמונה שמתקבלת היא בבעלותכם ולא מושפעת מהוצאה משימוש של מודל Gecko. כל מודלי ההטמעה של Gecko שעברו כוונון עדין יוצרים הטמעות עם וקטורים של 768 ממדים. מידע נוסף על המודלים האלה זמין במאמר קבלת הטמעות של טקסט.

מידע נוסף על כוונון של מודלים להטמעה זמין במאמר כוונון של הטמעות טקסט.

בדוגמאות הקוד האלה מוסבר איך ליצור קורפוס RAG עם מודל Gecko שפרסתם וביצעתם בו התאמה אישית.

curl

  ENDPOINT=us-central1-aiplatform.googleapis.com
  PROJECT_ID=YOUR_PROJECT_ID

  // Your Vertex AI endpoint resource with the deployed fine-tuned Gecko model
  // Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
  ENDPOINT_NAME=YOUR_ENDPOINT_NAME

  // Set a display name for your corpus.
  // For example, "my test corpus"
  CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME

  // CreateRagCorpus
  // Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
        "rag_embedding_model_config" : {
                "vertex_prediction_endpoint": {
                      "endpoint": '\""${ENDPOINT_NAME}"\"'
                }
        }
    }'

‫Vertex AI SDK ל-Python

  import vertexai
  from vertexai import rag

  # Set Project
  PROJECT_ID = "YOUR_PROJECT_ID"
  vertexai.init(project=${PROJECT_ID}, location="us-central1")

  # Your Vertex Endpoint resource with the deployed fine-tuned Gecko model
  ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
  MODEL_ENDPOINT = "projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT_ID}"

  embedding_model_config = rag.RagEmbeddingModelConfig(
      endpoint=${MODEL_ENDPOINT},
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

  rag_corpus = rag.create_corpus(
      display_name=${DISPLAY_NAME}, rag_embedding_model_config=embedding_model_config
  )

שימוש במודלים להטמעה של OSS

‫Vertex AI RAG Engine תומך במודלים של הטמעות בקוד פתוח של צד שלישי, באנגלית בלבד ובגרסאות רב-לשוניות. בטבלה הזו מפורטים דגמי E5 הנתמכים.

גרסת המודל מודל בסיס פרמטרים מאפיין הטמעה באנגלית בלבד
e5-base-v2 MiniLM ‫109M 768
e5-large-v2 MiniLM ‫335M 1,024
e5-small-v2 MiniLM 33M 384
multilingual-e5-large xlm-roberta-large ‫560 מיליון 1,024
multilingual-e5-small microsoft/Multilingual-MiniLM-L12-H384 118M 384

כדי להשתמש במודלים של E5 עם Vertex AI RAG Engine, צריך לפרוס את מודל E5 מ-Model Garden. כדי לפרוס את מודל E5, אפשר לעיין במאמר E5 Text Embedding במסוף Google Cloud .

בדוגמאות הקוד האלה מוסבר איך ליצור קורפוס RAG באמצעות מודל E5 שפרסתם.

curl

  ENDPOINT=us-central1-aiplatform.googleapis.com
  PROJECT_ID=YOUR_PROJECT_ID

  // Your Vertex Endpoint resource with the deployed E5 model
  // Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
  ENDPOINT_NAME=YOUR_ENDPOINT_NAME

  // Set a display name for your corpus.
  // For example, "my test corpus"
  CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME

  // CreateRagCorpus
  // Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME</var>}"\"',
        "rag_embedding_model_config" : {
                "vertex_prediction_endpoint": {
                      "endpoint": '\""${ENDPOINT_NAME}"\"'
                }
        }
    }'

‫Vertex AI SDK ל-Python

  import vertexai
  from vertexai import rag

  # Set Project
  PROJECT_ID = "YOUR_PROJECT_ID"
  vertexai.init(project=PROJECT_ID, location="us-central1")

  # Your Vertex Endpoint resource with the deployed E5 model
  ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
  MODEL_ENDPOINT = "projects/{PROJECT_ID}/locations/us-central1/endpoints/{ENDPOINT_ID}"

  embedding_model_config = rag.RagEmbeddingModelConfig(
      endpoint=MODEL_ENDPOINT,
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

  rag_corpus = rag.create_corpus(
      display_name=DISPLAY_NAME, rag_embedding_model_config=embedding_model_config
  )

המאמרים הבאים