פונקציות של 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;

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