פונקציות שעברו אופטימיזציה מאפשרות לכם להשתמש במודל פרוקסי קטן ומהיר יותר כדי לעבד את רוב השאילתות, ואז לחזור לשימוש במודל LLM גדול יותר רק כשצריך. הגישה הזו מפחיתה את העלויות התפעוליות ומשפרת את מהירות התגובה של השאילתות. פונקציות שעברו אופטימיזציה מצמצמות את השימוש במודלים של LLM למשימות של סיווג או סינון שורות, שבהן מודל הפרוקסי יכול לטפל בצורה טובה יותר.
פונקציות של AlloyDB AI כמו ai.if() יכולות להיות בעלות חביון גבוה בגלל קריאות מרחוק למודלים גדולים של שפה (LLM). פונקציות שעברו אופטימיזציה מטפלות בבעיית החביון הזו באמצעות מודלים קטנים יותר של פרוקסי שאומנו באופן מקומי כדי לעבד את השאילתות. המודלים האלה מאומנים על מדגם של הנתונים שלכם, והפלט של ה-LLM משמש כמקור האמת.
בדיקות הדיוק מתבצעות בזמן הריצה על מדגם של שורות באמצעות ה-LLM. כדי לבצע את הבדיקה הזו, מערכת AlloyDB משתמשת ב-LLM כדי ליצור תוויות לשורות לדוגמה, ומשווה אותן לתחזיות של מודל ה-proxy כדי לאמת את הדיוק. אם בדיקת הדיוק נכשלת, השאילתה חוזרת לשימוש במודל שפה גדול (LLM).
כשמשתמשים בפונקציה שעברה אופטימיזציה, AlloyDB מבצע את הפעולות הבאות:
- אימון מודל פרוקסי: AlloyDB מאמן מודל פרוקסי קל משקל על מדגם של הנתונים שלכם. זה קורה ברקע כשמשתמשים בהצהרת
PREPAREעם הפונקציהai.if()כדי לאמן את המודל לשאילתות שעברו אופטימיזציה. - הפעלת השאילתה: כשמשתמשים בהצהרת
EXECUTE, AlloyDB משתמש במודל הפרוקסי שאומן כדי לעבד את השאילתה באופן מקומי. - חזרה ל-LLM: אם רמת הדיוק של המודל נמוכה, או אם AlloyDB לא מצליח למצוא מודל, AlloyDB חוזר אוטומטית לשימוש ב-LLM.

לפני שמתחילים
לפני שמשתמשים בפונקציות המותאמות, צריך לבצע את הפעולות הבאות:
- מתחברים למסד הנתונים באמצעות psql או AlloyDB Studio בתור המשתמש
postgresאו בתור משתמש שיש לו גישה לטבלה שבה הנתונים נמצאים. מוודאים שהתוסף
google_ml_integrationמותקן וזמין בגרסה 1.5.8 ואילך.SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.8 (1 row)מגדירים את AlloyDB לעבודה עם Gemini Enterprise Agent Platform. מידע נוסף זמין במאמר שילוב מסד הנתונים עם Agent Platform.
מוודאים שהדגלים הבאים של מסד הנתונים מופעלים. מידע נוסף זמין במאמר בנושא הגדרת דגלים של מסד נתונים במופע.
google_ml_integration.enable_model_supportgoogle_ml_integration.enable_ai_query_enginegoogle_ml_integration.enable_cost_optimized_ai_functions
יוצרים הטמעות לטבלה שרוצים לשלוח לה שאילתה. מידע נוסף זמין במאמר בנושא יצירה וניהול של הטמעות אוטומטיות לטבלאות.
כמה נקודות שכדאי לחשוב עליהן:
- העמודה של נתוני המקור חייבת להיות מסוג
TEXTאוVARCHAR. - העמודה של ההטמעה שמספקת קלט לפונקציית ה-AI שעברה אופטימיזציה צריכה להיות מסוג
REAL[]אוVECTOR. - פונקציות שעברו אופטימיזציה זמינות רק באזורים שבהם זמינים מודלים גנרטיביים של Agent Platform. במאמר פריסות ונקודות קצה מופיעה רשימה של האזורים הזמינים.
- העמודה של נתוני המקור חייבת להיות מסוג
שימוש בפונקציות שעברו אופטימיזציה
כדי להשתמש בפונקציה שעברה אופטימיזציה, משתמשים בהצהרות PREPARE ו-EXECUTE עם הפונקציה ai.if(). הדוגמה הבאה מראה איך להשתמש בפונקציה שעברה אופטימיזציה:
צור טבלה של
restaurant_reviews. העמודהreviewשמכילה את נתוני המקור היא מסוגTEXT, והעמודהreview_embeddingשמשמשת לשאילתות היא מסוגVECTOR(768).CREATE TABLE restaurant_reviews ( id SERIAL, name VARCHAR(64), city VARCHAR(64), review TEXT, review_embedding VECTOR(768) );משתמשים בהצהרה
PREPAREעם הפונקציהai.if()כדי לציין שהשאילתה צריכה להשתמש בפונקציה שעברה אופטימיזציה. ההצהרה הזו מפעילה את האימון האסינכרוני של המודל ברקע.המערכת מאמנת את המודל רק בתנאים הבאים:
- יש בדיוק פונקציה אחת של
ai.if()בשאילתה. - הערך
ai.if()לא נמצא בשאילתת משנה.
PREPARE positive_reviews_query AS SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;- יש בדיוק פונקציה אחת של
מריצים את השאילתה באמצעות ההצהרה
EXECUTE. מכיוון שההצהרהPREPAREספציפית לסשן הנוכחי, צריך להריץ את ההצהרהEXECUTEבאותו חיבור:EXECUTE positive_reviews_query;conn2=> SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;מודל ה-Proxy המאומן לא ישמש אם אחד מהתנאים הבאים יתקיים:
- התוכן או העמודה של ההטמעה שאליהם מתייחסת השורה
ai.if()משתנים. שתי העמודות צריכות להיות שייכות לאותו טבלה. - ההנחיה שסופקה לעמודת התוכן משתנה.
- המבנה של השאילתה משתנה, וכתוצאה מכך מתקבל
query_idשונה. - השאילתה לא עומדת בסף של בדיקת הדיוק בתחילת השאילתה.
במקרים כאלה, השאילתה חוזרת לשימוש ב-LLM, ו-AlloyDB מחזיר אזהרה.
- התוכן או העמודה של ההטמעה שאליהם מתייחסת השורה
זה שינוי אופציונלי. כדי להשבית את בדיקת האימות של הדיוק בסביבת מסד הנתונים כולה (הבדיקה נדרשת כי היא מתבצעת גם במהלך אימון המודל), מריצים את הפקודה הבאה.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.runtime_accuracy_check = off;מחליפים את
DATABASE_NAMEבשם של מסד הנתונים.
אימון מחדש של מודל proxy
אם נתוני הטבלה הבסיסיים משתנים באופן משמעותי, אפשר לאמן מחדש את מודל ה-proxy על ידי הפעלת ההצהרה PREPARE שוב. הכנה מחדש של שאילתה מחליפה את מודל ה-proxy הקיים על ידי הפעלת בקשת אימון חדשה.
מגבלות
אם משנים את עמודת תוכן המקור, את עמודת ההטמעה או את ההנחיה שסופקה לפונקציה ai.if(), צריך להנפיק הצהרת PREPARE חדשה. מערכת AlloyDB מאמנת את הפונקציה שעברה אופטימיזציה כדי שתתנהג בדומה לשילוב ייחודי של הנחיה ונתוני קלט.