semantic-ranker-default-003
אפשר להשתמש בפונקציה ai.rank() כדי לתת ציון למסמכים על סמך הרלוונטיות שלהם לשאילתה, ולשפר את תוצאות החיפוש הווקטורי על ידי דירוג מחדש שלהן כדי לשפר את סדר השאילתות.
ה-API לדירוג פלטפורמת הסוכנים מקבל רשימה של מסמכים ומדרג אותם לפי מידת הרלוונטיות שלהם לשאילתה נתונה (מחרוזת חיפוש). כשמשתמשים בפונקציה ai.rank(), היא מחזירה ציונים שמציינים עד כמה המסמך עונה על שאילתה מסוימת.
כדי להשתמש בהוראות שבדף הזה, אתם צריכים להבין את AlloyDB ל-PostgreSQL ולהכיר את המושגים של AI גנרטיבי.
AlloyDB שומר ויוצר את הסכימה ai.
לפני שמתחילים
לפני שמדרגים את תוצאות החיפוש, צריך לבצע את הפעולות הבאות:
- מוודאים שהתוסף
google_ml_integrationמותקן. - מוודאים שהדגל
google_ml_integration.enable_model_supportמוגדר לערךon. - שילוב עם Agent Platform.
- מפעילים את Discovery Engine API.
- קבלת התפקידים הנדרשים לשימוש במודלים של דירוג
הפעלת Discovery Engine API
המסוף
- להפעלת ה-API
- בשלב אישור הפרויקט, לוחצים על הבא כדי לאשר את שם הפרויקט שרוצים לבצע בו שינויים.
- בשלב Enable APIs, לוחצים על Enable כדי להפעיל את Discovery Engine API. אם כבר הפעלתם את ה-API הזה, הוא לא יופיע כאן.
gcloud
כדי להשתמש במודלים של דירוג, צריך להפעיל את Discovery Engine API.
מחליפים את PROJECT_ID במזהה הפרויקט ואת PROJECT_NUMBER במספר הפרויקט המתאים. Google Cloud
# Enable Discovery Engine API gcloud services enable discoveryengine.googleapis.com --project=PROJECT_ID gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com" \ --role="roles/discoveryengine.viewer"
אין צורך לרשום מודלים של Agent Platform לצורך דירוג.
אפשר להשתמש בשם המודל של פלטפורמת הנציגים בתור model_id, כמו בדוגמה הבאה.
SELECT index, score FROM ai.rank( model_id => 'semantic-ranker-default-003', search_string => 'Affordable family-friendly vacation spots in Southeast Asia?', documents => ARRAY[ 'Luxury resorts in South Korea', 'Family vacation packages for Vietnam: Ha Long Bay and Hoi An', 'Budget-friendly beaches in Thailand perfect for families', 'A backpacker guide to solo travel in India'])
תרחיש שימוש נפוץ לדירוג הסמנטי הוא דירוג מחדש של התוצאות שמוחזרות על ידי חיפוש וקטורי, כדי לשפר את סדר השאילתות. בדוגמה הבאה מוצג אופן השימוש במודל הדירוג הסמנטי לתרחיש השימוש הזה. בדוגמה הבאה מאחזרים קבוצת תוצאות ראשונית לשאילתה personal fitness
equipment באמצעות חיפוש וקטורי. אחר כך התוצאות מדורגות מחדש כדי להציג את חמש התוצאות המובילות.
WITH initial_ranking AS ( SELECT id, description, ROW_NUMBER() OVER () AS ref_number FROM product ORDER BY embedding <=> google_ml.embedding( 'gemini-embedding-001', 'personal fitness equipment')::vector LIMIT 10 ), reranked_results AS ( SELECT index, score FROM ai.rank( model_id => 'semantic-ranker-default-003', search_string => 'personal fitness equipment', documents => (SELECT ARRAY_AGG(description ORDER BY ref_number) FROM initial_ranking), top_n => 5) ) SELECT id, description FROM initial_ranking, reranked_results WHERE initial_ranking.ref_number = reranked_results.index ORDER BY reranked_results.score DESC;
במאמר מודלים נתמכים מופיעה רשימה של מודלים זמינים ותרחישי שימוש.
שילוב עם פלטפורמת הסוכנים והתקנת התוסף
- הגדרת גישת משתמשים למודלים של Agent Platform.
- מוודאים שמותקנת הגרסה העדכנית של
google_ml_integration.כדי לבדוק את הגרסה המותקנת, מריצים את הפקודה הבאה:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.2 (1 row)
אם התוסף לא מותקן או אם הגרסה המותקנת קודמת לגרסה 1.5.2, צריך לעדכן את התוסף.
CREATE EXTENSION IF NOT EXISTS google_ml_integration; ALTER EXTENSION google_ml_integration UPDATE;
אם נתקלתם בבעיות כשניסיתם להריץ את הפקודות שלמעלה, או אם התוסף לא עודכן לגרסה 1.5.2 אחרי שהרצתם את הפקודות שלמעלה, פנו אל Google Cloud התמיכה.
כדי להשתמש בפונקציונליות של מנוע השאילתות של AlloyDB AI, צריך להגדיר את הדגל
google_ml_integration.enable_ai_query_engineלערךon.SQL
- מפעילים את מנוע השאילתות מבוסס ה-AI בסשן הנוכחי.
SET google_ml_integration.enable_ai_query_engine = on;
- הפעלה של תכונות למסד נתונים ספציפי בסשנים שונים.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_ai_query_engine = 'on';
- הפעלת מנוע השאילתות מבוסס ה-AI למשתמש ספציפי בסשנים ובמסדי נתונים.
ALTER ROLE postgres SET google_ml_integration.enable_ai_query_engine = 'on';
המסוף
כדי לשנות את הערך של הדגל
google_ml_integration.enable_ai_query_engine, פועלים לפי השלבים במאמר הגדרת דגלים של מסד נתונים במופע.gcloud
כדי להשתמש ב-gcloud CLI, אפשר להתקין ולהפעיל את Google Cloud CLI, או להשתמש ב-Cloud Shell.
אפשר לשנות את הערך של הדגל
google_ml_integration.enable_ai_query_engine. מידע נוסף זמין במאמר בנושא הגדרת דגלים של מסד נתונים במופע.gcloud alloydb instances update INSTANCE_ID \ --database-flags google_ml_integration.enable_ai_query_engine=on \ --region=REGION_ID \ --cluster=CLUSTER_ID \ --project=PROJECT_ID
- מפעילים את מנוע השאילתות מבוסס ה-AI בסשן הנוכחי.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לשימוש במודלים של דירוג מ-Discovery Engine, צריך לבקש מהאדמין להקצות לכם את התפקיד 'צפייה ב-Discovery Engine' (roles/discoveryengine.viewer) ב-IAM ב-your project. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
דירוג תוצאות החיפוש
שאילתת ה-SQL הבאה מראה איך לדרג את תוצאות החיפוש :
SELECT
ai.rank(
model_id => 'MODEL_ID',
search_string => 'SEARCH_STRING',
documents => ARRAY['DOCUMENT_1', 'DOCUMENT_2', 'DOCUMENT_3']);
מחליפים את מה שכתוב בשדות הבאים:
| פרמטר | תיאור |
|---|---|
MODEL_ID |
מזהה ייחודי לנקודת הקצה של המודל שהגדרתם. |
SEARCH_STRING |
מחרוזת חיפוש שלפיה מדורגות הרשומות. |
DOCUMENTS |
מחרוזת ייחודית שמזהה את הרשומה. |
רשימת המודלים הנתמכים לדירוג פלטפורמות של סוכנים מופיעה כאן.
דוגמאות
כדי לדרג את תוצאות החיפוש באמצעות מודל דירוג של Vertex AI, מריצים את השאילתה הבאה:
SELECT index, score
FROM
ai.rank(
model_id => 'semantic-ranker-default-003',
search_string => 'AlloyDB is a PostgreSQL compatible AI database that is ready for production.',
documents =>
ARRAY[
'Alloys are made from combination of metals',
'The best enterprise-ready PostgreSQL database.',
'You can feel the heat in Alloy apartments.']);
התשובה היא טבלה שבה מוצג כל מסמך והניקוד שלו על סמך הרלוונטיות לשאילתת החיפוש. זוהי דוגמה לתשובה:
index | score
-------+------------
2 | 0.33
1 | 0.28
3 | 0.16
(3 rows)
נניח שיש מסד נתונים לדוגמה של AlloyDB עם רשימה של תיאורי ביקורות שהומרו להטמעות. קטע הקוד לדוגמה הבא מראה איך להשתמש במודל הדירוג כדי לאחזר את השם של המוצרים שדורגו במקום הראשון על סמך הדמיון הסמנטי של תיאורי הביקורות שלהם לשאילתה.
WITH initial_ranking AS (
SELECT product_id, name, review, review_id, ROW_NUMBER() OVER () AS ref_number
FROM user_reviews
ORDER BY
review_desc_embedding <=> google_ml.embedding(
'gemini-embedding-001', 'good desserts')::vector
LIMIT 10
), reranked_results AS (
SELECT index, score
FROM
ai.rank(
model_id => 'semantic-ranker-512',
search_string => 'good desserts',
documents => (SELECT ARRAY_AGG(review ORDER BY ref_number) FROM initial_ranking),
top_n => 5)
)
SELECT product_id, name
FROM initial_ranking, reranked_results
WHERE initial_ranking.ref_number = reranked_results.index
ORDER BY reranked_results.score DESC;