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