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

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

מבוא להטמעות

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

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

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

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

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

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

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

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

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

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

text-embedding-004 אפשר לגשת אל text-embedding-004 ישירות דרך API להטמעה, והוא לא זמין ב-Model Garden.
text-multilingual-embedding-002 מומלץ לשימוש עם קורפוס RAG.

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

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

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

שימוש במודלים להטמעת טקסט ב-Agent Platform

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

רשימת המודלים הנתמכים מופיעה במאמר מודלים של הטמעות.

מודלים של Gecko

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

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

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

יכול להיות שנפסיק את השימוש במודלים של Gecko לבעלי תוכן דיגיטלי. אם זה קורה, אי אפשר להשתמש במודלים של Gecko של בעלי התוכן הדיגיטלי עם 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}"\"'
              }
        }
  }'

Agent Platform 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
  )

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

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

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

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

curl

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

  // Your Agent Platform 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}"\"'
                }
        }
    }'

Agent Platform 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

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

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

כדי להשתמש במודלים של E5 עם 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}"\"'
                }
        }
    }'

Agent Platform 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
  )

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