סיווג טקסט

הפונקציה ai.classify היא כלי AI מובנה של AlloyDB AI שמסווג קלט טקסט לקבוצה של מחלקות או תוויות שאתם מגדירים. היכולת הזו מוטמעת ישירות במסד הנתונים, כך ש-AlloyDB ל-PostgreSQL מאפשר לעבד נתונים לא מובְנים בלי לבנות צינורות עיבוד נתונים מורכבים של חילוץ, טרנספורמציה וטעינה (ETL) או שילובים של שירותים חיצוניים.

היתרונות של פונקציית סיווג הטקסט:

  • סיווג בזמן אמת: שימוש ב-SQL כדי להביא את הידע של Gemini על העולם לנתונים של הארגון.
  • מדרגיות: תמיכה באיסוף קריאות ל-API חכם עבור פונקציות AI – נקראת גם האצת פונקציות AI – תכונה אוטומטית לאופטימיזציה של הרצת שאילתות ב-AlloyDB AI, שמקבצת באופן שקוף בקשות להפעלת פונקציות סקלריות נפרדות לפונקציות AI, שורה אחר שורה, לבקשות מודל באצווה ברקע במהלך הרצת השאילתה. הוא גם תומך בעיבוד מבוסס-מערך ומבוסס-סמן כדי לטפל באלפי שורות ביעילות.
  • פשטות: מספקת הפשטה ברמה גבוהה שמנהלת באופן אוטומטי את הפעלת המודל ואת הכנת הנתונים.

פונקציית סיווג הטקסט של AlloyDB AI תומכת בכמה תרחישים לדוגמה, כולל:

  • סיווג נושאים: הקצאת נושאים מוגדרים מראש (כמו ספורט, טכנולוגיה או פיננסים) למסמכים או למאמרים.
  • זיהוי ספאם: זיהוי הודעות אימייל, תגובות או הודעות נכנסות כספאם.
  • זיהוי כוונה: זיהוי המטרה של המשתמש מאחורי שאילתה, כמו הזמנת טיסה, בדיקת מזג האוויר או הזמנת אוכל.

לפני שמתחילים

לפני שמשתמשים בפונקציה ai.classify, צריך לוודא שעומדים בדרישות הבאות:

  • גרסת PostgreSQL: הפונקציה ai.classify נתמכת ב-PostgreSQL מגרסה 18 ואילך. מוודאים שאשכול AlloyDB מריץ את PostgreSQL בגרסה 18 ואילך. מידע נוסף זמין במאמר גרסאות נתמכות של מסדי נתונים.
  • גרסת התוסף: ודאו שמותקנת אצלכם הגרסה העדכנית של התוסף google_ml_integration (גרסה 1.6.1 ואילך) ושהפונקציונליות של גרסת טרום-ההשקה מופעלת.

הפעלת התוסף

מוודאים שמותקנת הגרסה העדכנית של התוסף google_ml_integration (גרסה 1.6.1 ואילך) ושהפונקציונליות של גרסת טרום-השקה (Preview) מופעלת.

כדי להפעיל את הדגלים google_ml_integration.enable_ai_query_engine ו-google_ml_integration.enable_preview_ai_functions ב-AlloyDB, משתמשים בפקודה SET. הדגלים האלה שולטים בגישה למנוע השאילתות של ה-AI ולפונקציות ה-AI בגרסת טרום-השקה (Preview) כמו ai.classify.

  1. מוודאים שגרסת התוסף google_ml_integration היא 1.6.1 או גרסה חדשה יותר. כדי לאמת את הגרסה, מריצים את הפקודה הבאה:

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    
  2. מפעילים את הדגלים לסשן הנוכחי או לכל מסד הנתונים. כדי להפעיל את הדגלים בסשן הנוכחי, מריצים את הפקודה הבאה:

    SET google_ml_integration.enable_ai_query_engine = 'on';
    SET google_ml_integration.enable_preview_ai_functions = 'on';
    

    השינוי הזה לא דורש הפעלה מחדש של מסד הנתונים. ערך ברירת המחדל של הדגלים האלה הוא off.

יצירת טבלה לדוגמה

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

CREATE TABLE IF NOT EXISTS product_reviews (
    id INT PRIMARY KEY,
    review TEXT
);

INSERT INTO product_reviews (id, review) VALUES
(1, 'Fantastic, would buy again!'),
(2, 'Broken on arrival.'),
(3, 'Mediocre, not worth the price.');

סיווג של מחרוזת אחת

כדי לסווג קלט טקסט יחיד, משתמשים בגרסה הסקלרית של ai.classify. למידע מפורט על ה-API, קראו את מאמרי העזרה של ai.classify.

SELECT ai.classify(
  input => 'TEXT_CONTENT',
  categories => ARRAY['CATEGORY1', 'CATEGORY2', 'CATEGORY3'],
  examples => 'EXAMPLES', -- Optional
  output_mode => 'OUTPUT_MODE', -- Optional. Can be 'single' or 'multi'.
  model_id => 'MODEL_ID' -- Optional. The default value is gemini-3.5-flash-lite.
);

סיווג טקסט לקטגוריות שמוציאות זו את זו

בדוגמה הבאה מוצג מקרה שימוש בסיסי של סיווג קטע טקסט אחד לאחת מכמה קטגוריות שמוציאות זו את זו:

SELECT ai.classify(
  input => 'This is a sales report for Q1.',
  categories => ARRAY['Report', 'Invoice', 'Memo']
);

הפלט לדוגמה:

Report

סיווג נושא עם כמה תוויות

בדוגמה הבאה, כותרת של חדשות מסווגת לכמה נושאים על ידי הגדרת output_mode ל-'multi' ומתן תיאורים של קטגוריות:

SELECT ai.classify(
  input => 'The government announced new regulations on AI development, citing both economic opportunities and potential security risks.',
  categories => ARRAY[
    ARRAY['politics', 'Questions about politics'],
    ARRAY['technology', 'Questions about technology'],
    ARRAY['security', 'Questions about security']
  ],
  output_mode => 'multi'
);

הפלט לדוגמה:

politics,technology,security

שימוש בקטגוריות עם תיאורים

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

SELECT ai.classify(
  input => 'The patient reported mild fever and headache.',
  categories => ARRAY[
    ARRAY['urgent', 'Requires immediate medical attention'],
    ARRAY['non-urgent', 'Routine check-up or minor symptoms'],
    ARRAY['query', 'A question about services or appointments']
  ]
);

הפלט לדוגמה:

non-urgent

מתן דוגמאות בודדות (few-shot)

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

SELECT ai.classify(
  input => 'Is this item returnable after 90 days?',
  categories => ARRAY[
    ARRAY['policy', 'Questions about return, warranty, or other policies'],
    ARRAY['shipping', 'Questions about order shipment and delivery'],
    ARRAY['payment', 'Questions about payment methods or issues'],
    ARRAY['other', 'Any other type of question']
  ],
  examples => '[
    {"input": "When will my order arrive?", "output": "shipping"},
    {"input": "What is the warranty on this?", "output": "policy"},
    {"input": "My discount code isn''t working.", "output": "payment"}
  ]'
);

הפלט לדוגמה:

policy

שימוש במזהה מודל ספציפי

בדוגמה הבאה מוסבר איך להשתמש בגרסה או בסוג ספציפיים של מודל באמצעות הפניה למזהה שלו:

SELECT ai.classify(
  input => 'This new song is a banger!',
  categories => ARRAY[
    ARRAY['positive', 'Expresses approval or enjoyment'],
    ARRAY['negative', 'Expresses disapproval or dislike']
  ],
  model_id => 'MODEL_ID'
);

הפלט לדוגמה:

positive

מחליפים את MODEL_ID במזהה של מודל נתמך שנרשם מראש או של מודל בהתאמה אישית שרשמתם. לרשימה של מודלי AI נתמכים שרשומים מראש, ראו מודלי AI נתמכים. לקבלת הוראות לרישום נקודות קצה של מודלי AI אחרים, ראו רישום וקריאה למודלים מרוחקים של AI באמצעות ניהול נקודות קצה של מודלים.

סיווג בקבוצות

כשמסווגים מערכי נתונים גדולים בכמה שורות, אפשר לשפר את הביצועים באמצעות העברה חכמה של פונקציות AI באצווה או באמצעות הגרסה מבוססת המערך של ai.classify.

אצווה חכמה

כדי להאיץ שאילתות שמריצות ai.classify סקלרי על פני כמה שורות בלי לכתוב שאילתות מורכבות של צבירת מערכים, מפעילים את ההגדרה החכמה של אצווה לפונקציות AI על ידי הגדרת הדגל לניהול מסד הנתונים google_ml_integration.enable_ai_function_acceleration לערך on:

SET google_ml_integration.enable_ai_function_acceleration = 'on';

כשהדגל הזה מופעל, AlloyDB מקבץ באופן אוטומטי קריאות סקלריות בודדות של ai.classify לקבוצות חכמות ברקע.

SELECT
  id,
  ai.classify(
    input => review,
    categories => ARRAY['positive', 'neutral', 'negative']
  ) AS sentiment
FROM product_reviews
ORDER BY id;

אצווה מבוססת-מערך

כדי לשלוט באופן מפורש בעיבוד ברצף (batch processing) של מערכי נתונים גדולים יותר, השתמשו בגרסה מבוססת המערך של ai.classify כדי לעבד כמה קלטים בבת אחת על ידי העברת מערך SQL של קלטים. למאמרי עזרה מפורטים של ה-API, קראו את המאמר בנושא ai.classify.

SELECT ai.classify(
  inputs => TEXT[],
  categories => TEXT[][],
  examples => TEXT, -- Optional.
  output_mode => VARCHAR, -- Optional. The default value is single.
  batch_size => INT, -- Optional. The default value is 10.
  model_id => VARCHAR(100) -- Optional. The default value is gemini-3.5-flash-lite.
);

בדוגמה הבאה מסווגים כמה ביקורות בבת אחת:

SELECT unnest(
  ai.classify(
    inputs => ARRAY(SELECT review FROM product_reviews ORDER BY id),
    categories => ARRAY[
      ARRAY['positive', 'Good sentiment'],
      ARRAY['neutral',  'Neither good nor bad sentiment'],
      ARRAY['negative', 'Bad sentiment']
    ],
    batch_size => 5
  )
) AS sentiment;

הפלט לדוגמה:

 sentiment
-----------
 positive
 negative
 negative

סיווג באמצעות סמנים

הפונקציה שמבוססת על סמן מעבדת קבוצות נתונים גדולות ביעילות, כי היא מאפשרת למערכת להעביר נתונים בסטרימינג דרך מודל ה-AI בקבוצות קטנות יותר, בלי לטעון את כל הנתונים לזיכרון בבת אחת. למידע נוסף: מקור המידע ai.classify.

חתימת הפונקציה של הגרסה מבוססת-הסמן של ai.classify היא:

CREATE OR REPLACE FUNCTION ai.classify(
    input_cursor REFCURSOR,
    categories TEXT[][],
    examples TEXT DEFAULT NULL,
    output_mode VARCHAR DEFAULT NULL,
    batch_size INT DEFAULT NULL,
    model_id VARCHAR(100) DEFAULT NULL)
  RETURNS REFCURSOR

בדוגמה הבאה אפשר לראות איך משתמשים בסמן כדי להזין קלט ל-ai.classify:

DO $$
DECLARE
  cur REFCURSOR;
  result_cur REFCURSOR;
  input_val TEXT;
  sentiment TEXT;
BEGIN
  OPEN cur FOR SELECT review FROM product_reviews ORDER BY id;

  result_cur := ai.classify(
    input_cursor => cur,
    categories => ARRAY[
      ARRAY['positive', 'Good sentiment'],
      ARRAY['neutral',  'Neither good nor bad sentiment'],
      ARRAY['negative', 'Bad sentiment']
    ],
    batch_size => 20
  );

  LOOP
    FETCH result_cur INTO input_val, sentiment;
    EXIT WHEN NOT FOUND;
    RAISE NOTICE 'Sentiment: %', sentiment;
  END LOOP;

  CLOSE result_cur;
  CLOSE cur;
END $$;

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