פונקציות של Cloud SQL

בדף הזה מתוארות פונקציות של Cloud SQL.

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

בטבלה הבאה מפורטות הפונקציות שבהן אפשר להשתמש כדי לשנות מידע וקטורי בהצהרת SELECT.

פונקציה תיאור
vector_to_string קלט: VECTOR

פלט: STRING

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

קלט: ארגומנט אחד מסוג VECTOR

פלט: מחרוזת

תחביר:

vector_to_string(some_embedding)

string_to_vector קלט: STRING

פלט: VECTOR

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

קלט: מחרוזת

תחביר:

string_to_vector('some_embedding')

פלט: ערך אחד מסוג וקטור.

פונקציות חיפוש

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

פונקציות KNN

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

פונקציה סוג הנתונים תיאור
vector_distance קלט: VECTOR

פלט: REAL

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

קלט: חובה. מקבלת שני ערכי וקטורים. ארגומנט שלישי אופציונלי מסוג מחרוזת מציין את מדד המרחק. ברירת המחדל היא `l2_squared_distance. אפשרויות נוספות כוללות `cosine_distance` ו-`dot_product`.

פלט: המרחק בין שני הווקטורים.

לדוגמה:

SELECT vector_distance(string_to_vector('[1,-2,3]'), string_to_vector('[1,2,3]'), 'Distance_Measure=dot_product');

cosine_distance קלט: VECTOR

פלט: REAL

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

קלט: מקבל שני ערכים של וקטורים. אלה יכולים להיות שמות של עמודות או קבועים.

פלט: מרחק הקוסינוס בין שני הווקטורים.

לדוגמה:

SELECT cosine_distance(string_to_vector('[1,2,3]'), string_to_vector('[1,1,1]'));

SELECT id FROM t1 ORDER BY cosine_distance(string_to_vector('[1,2,3]'), embedding_column_name) LIMIT 10;

dot_product קלט: VECTOR

פלט: REAL

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

קלט: מקבל שני ערכים של וקטורים. אלה יכולים להיות שמות של עמודות או קבועים.

פלט: המכפלה הסקלרית של שני הווקטורים.

לדוגמה:

SELECT dot_product(string_to_vector('[1,2,3]'), string_to_vector('[1,1,1]'));

SELECT id FROM t1 ORDER BY dot_product(string_to_vector('[1,2,3]'), embbeding_column_name) LIMIT 10;

l2_squared_distance קלט: VECTOR

פלט: REAL

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

קלט: מקבל שני ערכים של וקטורים. אלה יכולים להיות שמות של עמודות או קבועים.

פלט: המרחק בריבוע L2 בין שני הווקטורים.

לדוגמה:

SELECT l2_squared_distance(string_to_vector('[1,2,3]'), string_to_vector('[1,1,1]'));

SELECT id FROM t1 ORDER BY l2_squared_distance(string_to_vector('[1,2,3]'), embbeding_column_name) LIMIT 10;

הפונקציה ANN

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

תפקיד סוג הנתונים תיאור
approx_distance קלט: VECTOR

פלט: REAL

הפונקציה מוצאת את K השורות הקרובות ביותר שמקיימות את מדד המרחק באמצעות האלגוריתם שנבחר. הפונקציה הזו שולחת שאילתה לגבי השכנים הקרובים המשוערים מעמודת וקטור לערך קבוע. לשתי עמודות ההטמעה VECTOR ולערך הקבוע VECTOR צריכים להיות אותם ממדים. יש מקרים שבהם הפונקציה הזו חוזרת לחיפוש KNN (חיפוש מדויק) במקום חיפוש ANN. חובה לכלול הגבלה בשאילתות שמשתמשות בפונקציה הזו.

תחביר:

approx_distance(embedding_name,
query_vector,
'distance_measure=algorithm_name
[, num_leaves_to_search=value]'

קלטים:

  1. ‫embedding_name: שם עמודה של הטמעת וקטורים מטבלת הבסיס.
  2. query_vector: קבוע מסוג VECTOR שיכול להיות (אבל לא חייב להיות) הפלט של string_to_vector.
  3. האפשרויות של מחרוזת החיפוש המופרדת באמצעות פסיקים כוללות את האפשרויות הבאות:
    • ‫distance_measure: חובה. האלגוריתם משמש למדידת המרחק בין וקטורים. הוא משתמש במחרוזות הבאות:
      • L2_SQUARED
      • COSINE
      • DOT_PRODUCT

      לדוגמה: distance_measure=cosine

    • num_leaves_to_search: אופציונלי. מציין את מספר העלים שצריך לבדוק בחיפוש דמיון וקטורי של ANN. אם לא מציינים את מספר העלים, CloudSQL ל-MySQL בוחר ערך מחושב ל-num_leaves_to_search שאפשר לראות ב-information_schema.innodb_vector_indexes. המספר המחושב הוא בדרך כלל נקודת התחלה טובה עם איכות חיפוש וביצועים טובים. מומלץ לכוונן את num_leaves_to_search בהתאם לעומס העבודה ולביצועים או לאיכות.

    לדוגמה:

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    ערך LIMIT נדרש: המגבלה שצוינה משמשת כמספר השכנים להחזרה (נקרא גם K העליון).

    פלט: המרחק המשוער של K השורות הקרובות ביותר בטבלת הבסיס.

    אפשר להשתמש בפונקציה הזו רק ברשימה ORDER BY או ברשימה SELECT.

    לדוגמה:

    SELECT id, approx_distance(embedding_column_name
    string_to_vector('[1,1,1]'),
    'distance_measure=cosine') dist from t1
    ORDER BY dist LIMIT 10;

    SELECT id
    FROM t1
    ORDER BY
    approx_distance(
    embedding_column_name
    string_to_vector('[1,1,1]'),
    'distance_measure=dot_product,num_leaves_to_search=100) LIMIT 4;

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