Vector assist ב-AlloyDB ל-PostgreSQL מספק מסגרת SQL הצהרתית שמאפשרת לפרוס, לכוונן ולנהל עומסי עבודה של חיפוש וקטורי במכונות. אתם יכולים להגדיר את הדרישות של החיפוש הווקטורי, ליצור ולהחיל הגדרות SQL מומלצות ולעקוב אחרי הביצועים של עומס העבודה. בסקירה הכללית על Vector Assist מוסבר איך משתמשים בכלי.
לפני שמתחילים
- מוודאים שהמכונה משתמשת בגרסת התחזוקה הנכונה. כדי להשתמש ב-Vector Assist, נדרשת גרסת תחזוקה מינימלית של
POSTGRES_17.20260128.03_06. למידע נוסף על ביצוע תחזוקה בשירות עצמי, קראו את המאמר ביצוע תחזוקה בשירות עצמי. מפעילים את התוסף Vector Assist באמצעות הפקודה הבאה במסד הנתונים שבו רוצים להשתמש:
CREATE EXTENSION vector_assist CASCADE;הפעולה הזו יוצרת את הסכימה
vector_assist, שמשמשת את 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(אופציונלי): ערך בוליאני שמציין אם הכלי Vector Assist משפר את האינדקסים של הווקטורים בעומס העבודה. ערך ברירת המחדל הואfalse, כלומר רק הפרמטרים שקשורים לחיפוש (ef_search) עוברים כוונון, והפרמטרים של זמן ה-build (m,ef_construction) לא עוברים כוונון.
רשימה מלאה של כל הפרמטרים הזמינים למפרט הווקטורי מופיעה בחומרי העזר בנושא פונקציות של Vector Assist.
אחרי שמריצים את השאילתה כדי ליצור את המפרט הווקטורי, הכלי 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, אינדקס הווקטורים מוכן לשימוש.
יצירת שאילתות חיפוש
אתם יכולים להשתמש ב-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_expressions => ARRAY['FILTER_EXPRESSION']
);
מחליפים את הפרמטרים הבאים:
SPEC_ID: המזהה של המפרט שבו רוצים להשתמש.
SEARCH_VECTOR: וקטור לשאילתת החיפוש. לדוגמה,[1, 2, 3].
TOP_K(אופציונלי): מספר השכנים הקרובים ביותר שיוחזרו. אם לא מציינים ערך, ערך ברירת המחדל הוא10.(אופציונלי)
TARGET_RECALL: יעד ה-recall שרוצים ש-Vector Assist יעמוד בו. אם מציינים אתvector_assist, מתבצעים ניסויים עם ערכים שונים שלef_search, ומשווים בין ה-recall בחיפושים מדויקים ובחיפושים של השכן הקרוב ביותר. הפונקציהvector_assistמגדירה אתef_searchלערך שמספק את ה-target recall הקרוב ביותר.(אופציונלי)
FILTER_EXPRESSION: מסננים לשאילתת החיפוש. לדוגמה, סינון על סמך עמודות אחרות.
רשימה מלאה של כל הפרמטרים הזמינים ליצירת שאילתת חיפוש מופיעה בחומרי עזר לפונקציות של Vector assist.
הפלט של הפונקציה הזו מחזיר טקסט שמכיל שאילתת SQL. אפשר להריץ או לשמור את שאילתת ה-SQL הזו לפי הצורך.
הצגת רשימה של המפרטים הווקטוריים
כדי להציג את המפרטים הווקטוריים הקיימים של טבלה, מריצים את הפונקציה vector_assist.list_specs, או משתמשים ב-vector_assist.get_spec כדי להציג מפרט וקטורי יחיד לפי מזהה:
SELECT vector_assist.list_specs(
table_name => 'TABLE_NAME',
column_name => 'COLUMN_NAME'
);
מחליפים את הפרמטרים הבאים:
TABLE_NAME: שם הטבלה שבה השתמשתם כדי להגדיר את המפרט הווקטורי.(אופציונלי)
COLUMN_NAME: שם עמודת הווקטור בטבלה. אם משמיטים את הפרמטר, הפונקציהvector_assist.list_specsמחזירה את כל המפרטים הווקטוריים שמוגדרים בטבלה שצוינה. כדי לאחזר מפרט וקטורי ספציפי לפי מזהה, מפעילים אתSELECT vector_assist.get_spec(spec_id => 'SPEC_ID');.