vector_assist.define_spec
מגדירה מפרט וקטורי חדש, או מפרט וקטורי, ומחזירה את ההמלצות שנדרשות כדי להגדיל את עומס העבודה של הווקטור. הפונקציה הזו מיישמת את המפרטים שהמשתמשים מספקים כדי ליצור את ההמלצות.
תפקיד
CREATE OR REPLACE FUNCTION vector_assist.define_spec(
spec_id TEXT DEFAULT NULL,
table_name TEXT,
schema_name TEXT DEFAULT NULL,
vector_column_name TEXT DEFAULT NULL,
text_column_name TEXT DEFAULT NULL,
vector_index_type TEXT DEFAULT NULL, -- Allowed: 'hnsw', 'ivfflat'
embeddings_available BOOL DEFAULT NULL,
embedding_model TEXT DEFAULT NULL,
num_vectors INT DEFAULT NULL,
dimensionality INT DEFAULT NULL,
distance_func TEXT DEFAULT NULL, -- Allowed: 'cosine', 'ip', 'l2', 'l1'
quantization TEXT DEFAULT NULL, -- Allowed: 'none', 'halfvec', 'bit'
prefilter_column_names TEXT[] DEFAULT NULL,
memory_budget_kb INT DEFAULT NULL, -- In KB
target_recall FLOAT DEFAULT NULL,
target_top_k INT DEFAULT NULL,
tune_vector_index BOOL DEFAULT FALSE, -- Set to true if target_recall is set
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;
פרמטרים
| פרמטר | חובה? | תיאור |
|---|---|---|
spec_id |
אופציונלי, נוצר אוטומטית אם לא מספקים אותו | מזהה ייחודי למפרט הווקטורי שאתם מגדירים. |
table_name |
חובה | שם הטבלה שבה ישתמשו בהגדרת עומס העבודה של הווקטורים. |
schema_name |
אופציונלי | הסכימה שמכילה את הטבלה שבה משתמשים בעומס העבודה של הווקטור. הסכימה מוסקת באופן אוטומטי על סמך נתיב החיפוש של הסכימה. |
vector_column_name |
הצגת התיאור | שם העמודה שמכילה את הטמעות הווקטורים. העמודה הזו נדרשת אם משתמשים ביותר מעמודת וקטור אחת ולא מציינים את text_column_name. אם משתמשים רק בעמודת וקטור אחת, הפרמטר הזה הוא אופציונלי. |
text_column_name |
הצגת התיאור | שם העמודה של עמודת הטקסט. אם עומס העבודה של הווקטור דורש יצירת הטמעות מעמודת טקסט, צריך להשתמש בפרמטר הזה. חובה לכלול את העמודה הזו אם הפרמטר vector_column_name הוא NULL ואין עמודות וקטוריות אחרות.הפרמטר הזה משתמש בתוסף google_ml_integration כדי ליצור הטמעות מעמודת הטקסט הנתונה. |
vector_index_type |
אופציונלי | סוג אינדקס הווקטורים. ערכים קבילים:
|
embeddings_available |
אופציונלי | ערך בוליאני שבודק אם קיימים הטמעות וקטוריות בטבלה שנבחרה.
השדה הזה מוגדר לערך FALSE אם לא מזוהות עמודות וקטוריות והפרמטר text_column_name מוגדר. |
embedding_model |
הצגת התיאור | מזהה המודל ששימש ליצירת ההטמעות. השדה הזה הוא אופציונלי, אלא אם הפרמטר
embeddings_available הוא FALSE או
NULL. ערך ברירת המחדל הוא text-embedding-005.
|
num_vectors |
אופציונלי | מספר הווקטורים בטבלה. |
dismensionality |
אופציונלי | הממד של הווקטורים הנתונים. |
distance_func |
אופציונלי | פונקציית המרחק שתשמש להשוואת הווקטור. הערכים הקבילים כוללים:
|
quantization |
אופציונלי | הקוונטיזציה של אינדקסי הווקטורים. הערכים הקבילים כוללים:
|
prefilter_column_names |
אופציונלי | הפונקציה ממליצה על אינדקס לעמודה שצוינה לצורך סינון מראש. זה יכול לעזור לשפר את הביצועים של שאילתות עם מסנן סלקטיביות גבוהה בעמודה. |
memory_budget_kb |
אופציונלי | הזיכרון המקסימלי (ב-KB) לבניית אינדקס. ערך ברירת המחדל הוא 60% מזיכרון המכונה. |
target_recall |
אופציונלי | אחזור היעד לשאילתות וקטוריות רגילות. |
target_top_k |
אופציונלי | ערכי ההתאמה של Top-K שצריך לאחזר כדי לחשב את ה-recall.
הערך הזה משמש אם מציינים את הפרמטר target_recall. |
tune_vector_index |
אופציונלי | מכוונן את האינדקסים של הווקטורים בעומס העבודה. אם האפשרות מופעלת, המערכת מכווננת אוטומטית את אינדקס הווקטורים ואת שאילתת החיפוש כדי להשיג את יעדי ה-recall באמצעות המפרט הווקטורי, ומחשבת את הפרמטרים האופטימליים של מסד הנתונים והאינדקס.
ערכים קבילים:
|
הערך המוחזר
הפונקציה מחזירה טבלה של המלצות, שכוללת את המזהה של מפרט הווקטור החדש שנוצר.
vector_assist.list_specs
הפונקציה מחזירה את המפרט הווקטורי הנוכחי של טבלה ועמודה נתונות.
תפקיד
CREATE OR REPLACE FUNCTION vector_assist.list_specs(
table_name TEXT,
column_name TEXT DEFAULT NULL
)
RETURNS SETOF vector_assist.VECTOR_SPECS
פרמטרים
| פרמטר | חובה? | תיאור |
|---|---|---|
table_name |
חובה | שם הטבלה שממנה מאחזרים את המפרט הווקטורי. |
column_name |
אופציונלי | שם העמודה שלפיה רוצים לסנן את הטבלה לפני החזרת המפרט. אם מציינים את שם העמודה, מוחזרים מפרטים שמכילים שמות של עמודות טקסט או וקטור שתואמים לשם העמודה הזה. |
הערך המוחזר
הפונקציה מחזירה טבלה של מפרטים עבור הטבלה הנתונה, ואפשר גם לציין שם של עמודה.
vector_assist.modify_spec
משנה מפרט וקטורי קיים. כשמשנים את המפרט הווקטורי, ההמלצות המשויכות נוצרות מחדש על סמך המפרטים החדשים.
תפקיד
CREATE OR REPLACE FUNCTION vector_assist.modify_spec(
spec_id TEXT,
table_name TEXT DEFAULT NULL,
schema_name TEXT DEFAULT NULL,
vector_column_name TEXT DEFAULT NULL,
text_column_name TEXT DEFAULT NULL,
vector_index_type TEXT DEFAULT NULL,
embeddings_available BOOL DEFAULT NULL,
num_vectors INT DEFAULT NULL,
dimensionality INT DEFAULT NULL,
embedding_model TEXT DEFAULT NULL,
prefilter_column_names TEXT[] DEFAULT NULL,
distance_func TEXT DEFAULT NULL,
quantization TEXT DEFAULT NULL,
memory_budget_kb INT DEFAULT NULL,
target_recall FLOAT DEFAULT NULL,
target_top_k INT DEFAULT NULL,
tune_vector_index BOOL DEFAULT NULL
)
RETURNS SETOF vector_assist.RECOMMENDATIONS
פרמטרים
| פרמטר | חובה? | תיאור |
|---|---|---|
spec_id |
חובה | מזהה ייחודי למפרט הווקטורי שאתם מגדירים. |
table_name |
חובה | שם הטבלה שבה ישתמשו בהגדרת עומס העבודה של הווקטורים. |
schema_name |
אופציונלי | הסכימה שמכילה את הטבלה שבה משתמשים בעומס העבודה של הווקטור. הסכימה מוסקת באופן אוטומטי על סמך נתיב החיפוש של הסכימה. |
vector_column_name |
הצגת התיאור | שם העמודה שמכילה את הטמעות הווקטורים. העמודה הזו נדרשת אם משתמשים ביותר מעמודת וקטור אחת ולא מציינים את text_column_name. אם משתמשים רק בעמודת וקטור אחת, הפרמטר הזה הוא אופציונלי. |
text_column_name |
הצגת התיאור | שם העמודה של עמודת הטקסט. אם עומס העבודה של הווקטור דורש יצירת הטמעות מעמודת טקסט, צריך להשתמש בפרמטר הזה. חובה לכלול את העמודה הזו אם הפרמטר vector_column_name הוא NULL ואין עמודות וקטוריות אחרות.הפרמטר הזה משתמש בתוסף google_ml_integration כדי ליצור הטמעות מעמודת הטקסט הנתונה. |
vector_index_type |
אופציונלי | סוג אינדקס הווקטורים. ערכים קבילים:
|
embeddings_available |
אופציונלי | ערך בוליאני שבודק אם קיימים הטמעות וקטוריות בטבלה שנבחרה.
השדה הזה מוגדר לערך FALSE אם לא מזוהות עמודות וקטוריות והפרמטר text_column_name מוגדר. |
embedding_model |
הצגת התיאור | מזהה המודל ששימש ליצירת ההטמעות. השדה הזה הוא אופציונלי, אלא אם הפרמטר
embeddings_available הוא FALSE או
NULL. ערך ברירת המחדל הוא text-embedding-005.
|
num_vectors |
אופציונלי | מספר הווקטורים בטבלה. |
dismensionality |
אופציונלי | הממד של הווקטורים הנתונים. |
distance_func |
אופציונלי | פונקציית המרחק שבה משתמשים כדי להשוות בין וקטורים. הערכים הקבילים כוללים את cosine, ip, l2 או l1. |
quantization |
אופציונלי | הקוונטיזציה של אינדקסים של וקטורים. ערכים קבילים כוללים את none, halfvec או bit. |
prefilter_column_names |
אופציונלי | מזהה את העמודות שזמינות לסינון מראש בשאילתות של חיפוש וקטורי. |
memory_budget_kb |
אופציונלי | הזיכרון המקסימלי (ב-KB) לבניית אינדקס. |
target_recall |
אופציונלי | אחזור היעד לשאילתות וקטוריות רגילות. |
target_top_k |
אופציונלי | ערכי ההתאמה של Top-K שצריך לאחזר כדי לחשב את ה-recall.
הערך הזה משמש אם מציינים את הפרמטר target_recall. |
tune_vector_index |
אופציונלי | מכוונן את האינדקסים של הווקטורים בעומס העבודה. אם האפשרות מופעלת, המערכת מכווננת אוטומטית את אינדקס הווקטורים או את שאילתת החיפוש באמצעות המפרט הווקטורי, ומחשבת את הפרמטרים האופטימליים של מסד הנתונים והאינדקס. הערכים הקבילים כוללים את TRUE או FALSE. |
הערך המוחזר
הפונקציה מחזירה טבלה מעודכנת של המלצות.
vector_assist.get_recommendations
הפונקציה מחזירה המלצות שמשויכות לווקטור ספציפי spec_id.
תפקיד
CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;
פרמטרים
| פרמטר | חובה? | תיאור |
|---|---|---|
spec_id |
חובה | קבלת המלצות לווקטור שצוין spec_id. |
הערך המוחזר
הפונקציה מחזירה טבלה של המלצות שצריך ליישם כדי להגדיר את עומס העבודה המבוקש של הווקטור. כל שורה היא המלצה אחת שמכילה שאילתת SQL שניתן להפעיל והסבר מפורט למה כדאי ליישם את ההמלצה. אפשר ליישם את ההמלצה באמצעות הפונקציה apply_recommendation().
טבלת ההמלצות כוללת את העמודות הבאות:
| שם עמודה | סוג | תיאור |
|---|---|---|
recommendation_id |
טקסט | המזהה של ההמלצה. ההמלצה מיושמת באמצעות המזהה הזה. |
vector_spec_id |
טקסט | המזהה של מפרט הווקטור שמשויך להמלצה. |
table_name |
טקסט | שם הטבלה שמשויכת להמלצה. |
schema_name |
טקסט | שם הסכימה שמכילה את הטבלה הנתונה. |
query |
טקסט | שאילתת SQL שניתן להריץ כדי להשיג את התוצאה של ההמלצה. |
recommendation |
טקסט | ההסבר להמלצה, כולל התוצאה הצפויה אחרי שההמלצה תיושם. העמודה הזו מכילה גם את הסיבה וההסבר להמלצה. אפשר להשתמש בהקשר הזה כדי לשנות את השאילתה לפי הצורך וליצור מחדש המלצות. |
applied |
בוליאני | מראה אם ההמלצה יושמה. |
modified |
בוליאני | מציין אם המשתמש שינה את ההמלצה. |
created_at |
חותמת זמן עם אזור זמן | השעה שבה ההמלצה נוצרה. |
vector_assist.apply_recommendation
מיישמת המלצה אחת באמצעות recommendation_id.
תפקיד
CREATE OR REPLACE FUNCTION vector_assist.apply_recommendation (
recommendation_id TEXT
)
RETURNS BOOLEAN;
פרמטרים
| פרמטר | חובה? | תיאור |
|---|---|---|
recommenation_id |
חובה | מזהה ההמלצה הווקטורית שרוצים להחיל. |
הערך המוחזר
הפונקציה מחזירה ערך בוליאני שמאשר אם ההמלצה יושמה בהצלחה, ומעדכנת את העמודה applied בטבלה vector_assist.RECOMMENDATIONS לערך TRUE.
אם העזרה בווקטור לא מצליחה ליישם את ההמלצה, היא מציגה הודעת שגיאה.
vector_assist.apply_spec
יישום כל ההמלצות שמשויכות לווקטור spec_id או לשם טבלה ספציפיים. הפונקציה הזו עוברת על כל ההמלצות ומפעילה את הפונקציה vector_assist.apply_recommendation בכל המלצה.
תפקיד
CREATE OR REPLACE FUNCTION vector_assist.apply_spec(
spec_id TEXT DEFAULT NULL,
table_name TEXT DEFAULT NULL,
schema_name TEXT DEFAULT NULL,
column_name TEXT DEFAULT NULL -- text_column_name or vector_column_name
)
RETURNS BOOLEAN;
פרמטרים
כדי להריץ את הפונקציה, צריך לציין spec_id או table_name.
| פרמטר | חובה? | תיאור |
|---|---|---|
spec_id |
אופציונלי | מיישמת את כל ההמלצות לווקטור הנתון spec_id.
|
table_name |
אופציונלי | מיישם את כל ההמלצות לגבי הטבלה הנתונה. |
schema_name |
אופציונלי | הסכימה שמכילה את הטבלה שצוינה. |
column_name |
אופציונלי | מזהה את text_column_name או את
vector_column_name שבהם צריך להשתמש אם הטבלה מכילה כמה
מפרטים וקטוריים. |
הערך המוחזר
הפונקציה מחזירה ערך בוליאני שמאשר שכל ההמלצות הוחלו בהצלחה ומגדירה את הערך בעמודה vector_assist.RECOMMENDATIONS בטבלה applied ל-TRUE עבור כל ההמלצות.
אם העזרה בווקטור לא מצליחה ליישם את ההמלצה, היא מציגה הודעת שגיאה.
vector_assist.modify_recommendation
משנה את השאילתה של המלצה ספציפית ומגדירה את השדה modified בטבלה vector_assist.RECOMMENDATIONS של ההמלצה המשויכת לערך TRUE.
תפקיד
CREATE OR REPLACE FUNCTION vector_assist.modify_recommendation(
recommendation_id TEXT,
modified_query TEXT
)
RETURNS BOOLEAN;
פרמטרים
| פרמטר | חובה? | תיאור |
|---|---|---|
recommendation_id |
חובה | המזהה של ההמלצה שרוצים לשנות. |
modified_query |
חובה | שאילתת SQL שהמשתמש שינה בשביל ההמלצה. |
הערך המוחזר
הפונקציה מחזירה ערך בוליאני שמאשר אם המלצה עודכנה בהצלחה ומגדירה את vector_assist.RECOMMENDATIONS עמודת הטבלה modified לערך TRUE.
אם העזרה בווקטור לא מצליחה לעדכן את ההמלצה, מוצגת הודעת שגיאה.
vector_assist.generate_query
יצירת שאילתת חיפוש וקטורית שעברה אופטימיזציה על סמך מפרט הווקטור ופרמטרי החיפוש שהוגדרו. אם רלוונטי, הפונקציה הזו עשויה לשנות את הערך של ef_search כדי להתאים לערך של target_recall.
תפקיד
CREATE OR REPLACE FUNCTION vector_assist.generate_query(
spec_id TEXT DEFAULT NULL,
table_name TEXT DEFAULT NULL,
schema_name TEXT DEFAULT NULL,
column_name TEXT DEFAULT NULL, -- text_column_name or vector_column_name of the spec
search_text TEXT DEFAULT NULL,
search_vector VECTOR DEFAULT NULL, -- e.g. '[1.0,2.0,3.0]'::vector
output_column_names TEXT[] DEFAULT NULL, -- Columns to retrieve, NULL for SELECT *
top_k INT DEFAULT NULL,
filter_expressions TEXT[] DEFAULT NULL,
target_recall FLOAT DEFAULT NULL, -- Inherited from spec, can be overridden
iterative_index_search BOOL DEFAULT NULL
)
RETURNS TEXT; -- Returns the text representing the search query
פרמטרים
כדי להריץ את הפונקציה, צריך לציין spec_id או table_name.
| פרמטר | חובה? | תיאור |
|---|---|---|
spec_id |
אופציונלי | מציין את ה-spec_id שעבורו נוצרת השאילתה. |
table_name |
אופציונלי | מציין את שם הטבלה שעבורה נוצרת שאילתת החיפוש, אם לא צוין spec_id. אם טבלה מכילה כמה מפרטים, הפרמטר מחזיר שגיאה. |
column_name |
אופציונלי | מציינת את שם העמודה ליצירת שאילתת החיפוש אם לא צוינה ההגדרה spec_id. אם העמודה מכילה כמה מפרטים,
הפרמטר מחזיר שגיאה. הערך של column_name יכול להיות text_column_name או vector_column_name. |
output_column_name |
אופציונלי | שמות העמודות שרוצים לאחזר בשאילתת הפלט. כדי לאחזר את כל העמודות, צריך להגדיר את הפרמטר הזה לערך NULL. |
search_text |
אופציונלי | טקסט החיפוש שעבורו רוצים ליצור הטמעות. ההטמעה נוצרת באמצעות embedding_model מהמפרט. אפשר להגדיר רק את הפרמטר search_text או את הפרמטר search_vector. |
search_vector |
אופציונלי | הווקטור של שאילתת החיפוש. אפשר להגדיר רק את הפרמטר search_text או את הפרמטר search_vector |
top_k |
אופציונלי | מספר השכנים הקרובים ביותר שיוחזרו. |
filter_expressions |
אופציונלי | ביטויי הסינון להחלה בשאילתת החיפוש. אפשר להחיל את המסננים על שדות בטבלה, למשל מחיר < 100. |
iterative_index_search |
אופציונלי | ההגדרה קובעת אם לבצע חיפוש אינדקס איטרטיבי לשאילתות מסוננות. |
target_recall |
אופציונלי | ההחזרה של המידע הרלוונטי לשאילתת החיפוש בלבד. אם הערך מוגדר, הפונקציה עשויה להחזיר המלצה לערך ef_search אם היא מוצאת ערך טוב יותר. |
הערך המוחזר
הפונקציה מחזירה טקסט שמכיל את שאילתת החיפוש הווקטורי עבור הפרמטרים שצוינו. אם צוין target_recall, יכול להיות שתיכלל גם המלצה ל-ef_search אם יימצא ערך טוב יותר. אפשר להריץ את השאילתה הזו או לשמור אותה כדי להריץ אותה מאוחר יותר.
vector_assist.evaluate_query_recall
הפונקציה מעריכה את ה-recall של אינדקס הווקטורים בשאילתה נתונה. הפונקציה הזו משתמשת בהגדרות של מסד הנתונים והאינדקס במחרוזת JSON כקלט.
תפקיד
CREATE OR REPLACE FUNCTION vector_assist.evaluate_query_recall(
ann_query text,
vector_search_configurations json DEFAULT NULL,
recall float,
ann_execution_time float,
ground_truth_execution_time float,
index_type text)
RETURNS RECORD
פרמטרים
| פרמטר | חובה? | תיאור |
|---|---|---|
ann_query |
חובה | שאילתת ה-SQL שצריך להעריך את הזיכרון שלה. השאילתה הזו צריכה להיות שאילתת ANN מסוג pgvector. |
vector_search_configurations |
אופציונלי | ההגדרות שאפשר לקבוע לשאילתת ANN. הפרמטר הזה חייב להיות בפורמט JSON. |
הערך המוחזר
הפונקציה מחזירה טבלה שמעריכה את הדיוק של אינדקס הווקטור לשאילתה הנתונה.
הטבלה מכילה את העמודות הבאות:
| שם עמודה | סוג | תיאור |
|---|---|---|
recall |
Float | אחוז הווקטורים שהאינדקס מחזיר, שהם השכנים הקרובים ביותר האמיתיים. המדד הזה משמש לכימות איכות החיפוש. הפונקציה הזו מאפשרת לכם לכוונן את הפרמטרים כדי להחזיר את תוצאות ה-recall הצפויות של השאילתה הווקטורית. |
ann_execution_time |
Float | הזמן שלוקח להריץ שאילתה וקטורית באמצעות סריקות אינדקס. |
ground_truth_execution_time |
Float | הזמן שלוקח להריץ את השאילתה באמצעות סריקה רציפה. |
index_type |
טקסט | סוג אינדקס הווקטורים, למשל HNSW. |
דוגמה
בדוגמה הבאה, המערכת מעריכה את ה-recall של אינדקס HNSW ומחליפה את פרמטר ההגדרה HNSW.ef_search:
SELECT * FROM vector_assist.evaluate_query_recall(
ann_query => 'SELECT id FROM items ORDER BY embedding <=> ''[1,2,3]'' LIMIT 10',
vector_search_configurations => '{"hnsw.ef_search": 30}'
);