שימוש בעזרה בווקטורים

בוחרים את גרסת התיעוד:

אתם יכולים להשתמש ב-Vector Assist כדי לפרוס ולנהל עומס עבודה של וקטורים במכונות AlloyDB Omni.

למידע נוסף על מהו Vector Assist ואיך הוא פועל, ראו סקירה כללית של Vector Assist.

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

  • מוודאים שבמכונה של AlloyDB Omni פועלת גרסה 18.1.0 ואילך. מידע נוסף על שדרוג זמין במאמר שדרוג AlloyDB Omni.
  • מפעילים את התוסף vector assist באמצעות הפקודה הבאה במסד הנתונים שרוצים להשתמש בו:

    CREATE EXTENSION vector_assist CASCADE;
    

    הפעולה הזו יוצרת את הסכימה vector_assist, שמשמשת את Vector Assist.

איך משתמשים ב-Vector Assist כדי לפרוס עומס עבודה של וקטורים

כדי להשתמש ב-Vector Assist לפריסה ולניהול של עומס עבודה של וקטורים, צריך לבצע את הפעולות הבאות:

הגדרת מפרט הווקטור

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

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

SELECT
  recommendation_id,
  REGEXP_REPLACE(query, 'SET hnsw.ef_search TO \d+', 'SET hnsw.ef_search TO') AS query_1,
  recommendation,
  vector_spec_id,
  table_name,
  applied,
  modified
FROM vector_assist.define_spec(
  table_name => 'TABLE_NAME',
  vector_column_name => 'VECTOR_COLUMN_NAME',
  target_recall => TARGET_RECALL,
  tune_vector_index => TUNE_INDEX
);

מחליפים את הפרמטרים הבאים:

  • ‫TABLE_NAME: השם של הטבלה שרוצים להשתמש בה בעומס העבודה של הווקטור.
  • ‫(אופציונלי) VECTOR_COLUMN_NAME: העמודה שבה רוצים לבצע חיפוש סמנטי. אם יש לכם רק עמודה אחת עם וקטורים בטבלה, vector_assist יכול להגדיר את זה באופן אוטומטי. אם יש יותר מטבלה אחת עם וקטורים, צריך לציין באיזו עמודה להשתמש.
  • ‫(אופציונלי) TARGET_RECALL: יעד ה-recall שרוצים ש-Vector Assist יעמוד בו. אם מציינים את vector_assist, מתבצעים ניסויים עם ערכים שונים של ef_search, ומשווים בין ה-recall בחיפושים מדויקים ובחיפושים של השכן הקרוב ביותר. vector_assist מגדיר את ef_search לערך שמספק את ה-target recall הקרוב ביותר. ערך ברירת המחדל הוא 0.95.
  • (אופציונלי) TUNE_INDEX: ערך בוליאני שמציין אם התכונה 'עזרה וקטורית' מכוונת את מדדי הווקטורים בעומס העבודה. ערך ברירת המחדל הוא false, כלומר רק הפרמטרים שקשורים לחיפוש (ef_search) עוברים אופטימיזציה, והפרמטרים של זמן הבנייה (m,‏ ef_construction) לא עוברים אופטימיזציה.

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

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

צפייה בהמלצות של Vector Assist

כדי לראות את ההמלצות שנוצרו על ידי Vector Assist באמצעות המפרט הווקטורי, מריצים את הפונקציה vector_assist.get_recommendations:

SELECT vector_assist.get_recommendations(
  spec_id => 'SPEC_ID'
);

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

הפונקציה vector_assist.get_recommendations מחזירה טבלה בשם vector_assist.RECOMMENDATIONS שמכילה את כל ההמלצות. כל המלצה מאוחסנת בטבלה עם ה-spec_id המשויך. כל המלצה כוללת בדרך כלל את הפרטים הבאים:

  • שאילתת SQL שצריך להריץ
  • הסבר מפורט על ההמלצה
  • מידע רלוונטי אחר שמסביר את ההמלצה

איך מיישמים את ההמלצות של Vector Assist

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

כדי ליישם המלצה ספציפית, מריצים את הפונקציה vector_assist.apply_recommendation:

SELECT vector_assist.apply_recommendation(
  recommendation_id => 'RECOMMENDATION_ID'
);

מחליפים את RECOMMENDATION_ID במזהה של ההמלצה של Vector Assist שרוצים ליישם מהטבלה vector_assist.RECOMMENDATIONS.

כדי ליישם את כל ההמלצות יחד, מריצים את הפונקציה vector_assist.apply_spec עם הפרמטר spec_id או table_name:

SELECT vector_assist.apply_spec(
  spec_id => 'SPEC_ID'
);

מחליפים את SPEC_ID במזהה של מפרט הווקטור שרוצים להשתמש בו.

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

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

יצירת שאילתות חיפוש

אתם יכולים להשתמש ב-Vector Assist כדי ליצור שאילתות חיפוש אופטימליות עבור עומסי עבודה של וקטורים שפרסתם, באמצעות מפרט הווקטורים של עומס העבודה ומדד הווקטורים שנוצר. כדי ליצור שאילתת חיפוש אופטימלית, מריצים את הפונקציה vector_assist.generate_query:

SELECT vector_assist.generate_query(
  spec_id => 'SPEC_ID',
  search_vector => 'SEARCH_VECTOR',
  top_k => 'TOP_K',
  target_recall => TARGET_RECALL,
  filter_expression => 'FILTER_EXPRESSION'
);

מחליפים את הפרמטרים הבאים:

  • ‫SPEC_ID: המזהה של המפרט שבו רוצים להשתמש.
  • ‫SEARCH_VECTOR: וקטור לשאילתת החיפוש. לדוגמה, [1, 2, 3].
  • ‫(אופציונלי) TOP_K: מספר השכנים הקרובים ביותר שיוחזרו. אם לא מציינים ערך, ערך ברירת המחדל הוא 10.
  • (אופציונלי) TARGET_RECALL: רמת ההיזכרות הרצויה של המודעה שרוצים שהתכונה 'סיוע וקטורי' תעזור להשיג. אם מציינים את vector_assist, מתבצעים ניסויים עם ערכים שונים של ef_search, ומשווים בין ה-recall בחיפושים מדויקים ובחיפושים של השכן הקרוב ביותר. vector_assist מגדיר את ef_search לערך שמספק את ה-target recall הקרוב ביותר.
  • (אופציונלי) FILTER_EXPRESSION: מסננים כלשהם לשאילתת החיפוש. לדוגמה, סינון לפי עמודות אחרות.

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

הפלט של הפונקציה הזו מחזיר טקסט שמכיל שאילתת SQL. אפשר להריץ או לשמור את שאילתת ה-SQL הזו לפי הצורך.

הצגת רשימה של המפרטים הווקטוריים

כדי להציג מפרט וקטורי ספציפי או את כל המפרטים הקיימים, מריצים את הפונקציה vector_assist.list_specs:

SELECT vector_assist.list_specs(
  spec_id => 'SPEC_ID',
  table_name => 'TABLE_NAME'
);

מחליפים את הפרמטרים הבאים:

  • (אופציונלי) SPEC_ID: המזהה של מפרט הווקטור שרוצים להשתמש בו.
  • ‫TABLE_NAME: שם הטבלה שבה השתמשתם כדי להגדיר את המפרט הווקטורי.

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