בדף הזה מוסבר על האפשרויות של מודלים להטמעה, ומוסבר איך להשתמש במודל ההטמעה כדי ליצור מאגר מידע של 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-v2e5-large-v2e5-small-v2multilingual-e5-largemultilingual-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
)