דירוג תוצאות החיפוש

semantic-ranker-default-003 אפשר להשתמש בפונקציה ai.rank() כדי לתת ציון למסמכים על סמך הרלוונטיות שלהם לשאילתה, ולשפר את תוצאות החיפוש הווקטורי על ידי דירוג מחדש שלהן כדי לשפר את סדר השאילתות.

ה-API לדירוג פלטפורמת הסוכנים מקבל רשימה של מסמכים ומדרג אותם לפי מידת הרלוונטיות שלהם לשאילתה נתונה (מחרוזת חיפוש). כשמשתמשים בפונקציה ai.rank(), היא מחזירה ציונים שמציינים עד כמה המסמך עונה על שאילתה מסוימת.

כדי להשתמש בהוראות שבדף הזה, אתם צריכים להבין את AlloyDB ל-PostgreSQL ולהכיר את המושגים של AI גנרטיבי.

‫AlloyDB שומר ויוצר את הסכימה ai.

לפני שמתחילים

לפני שמדרגים את תוצאות החיפוש, צריך לבצע את הפעולות הבאות:

הפעלת Discovery Engine API

המסוף

  1. להפעלת ה-API
  2. בשלב אישור הפרויקט, לוחצים על הבא כדי לאשר את שם הפרויקט שרוצים לבצע בו שינויים.
  3. בשלב 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;
  

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

שילוב עם פלטפורמת הסוכנים והתקנת התוסף

  1. הגדרת גישת משתמשים למודלים של Agent Platform.
  2. מוודאים שמותקנת הגרסה העדכנית של google_ml_integration.
    1. כדי לבדוק את הגרסה המותקנת, מריצים את הפקודה הבאה:

      SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
      extversion 
      ------------
      1.5.2
      (1 row)
    2. אם התוסף לא מותקן או אם הגרסה המותקנת קודמת לגרסה 1.5.2, צריך לעדכן את התוסף.

      CREATE EXTENSION IF NOT EXISTS google_ml_integration;
      ALTER EXTENSION google_ml_integration UPDATE;

      אם נתקלתם בבעיות כשניסיתם להריץ את הפקודות שלמעלה, או אם התוסף לא עודכן לגרסה 1.5.2 אחרי שהרצתם את הפקודות שלמעלה, פנו אל Google Cloud התמיכה.

  3. כדי להשתמש בפונקציונליות של מנוע השאילתות של AlloyDB AI, צריך להגדיר את הדגל google_ml_integration.enable_ai_query_engine לערך on.

    SQL

    1. מפעילים את מנוע השאילתות מבוסס ה-AI בסשן הנוכחי.
      SET google_ml_integration.enable_ai_query_engine = on;
    2. הפעלה של תכונות למסד נתונים ספציפי בסשנים שונים.
      ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_ai_query_engine = 'on';
    3. הפעלת מנוע השאילתות מבוסס ה-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

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות לשימוש במודלים של דירוג מ-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;

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