הפונקציה ai.extract היא כלי AI מובנה של AlloyDB AI ששולף פרטים מובְנים ספציפיים מטקסט לא מובְנה, על סמך סכימה שסופקה.
היכולת הזו מוטמעת ישירות במסד הנתונים, כך שאתם יכולים לעבד נתונים לא מובְנים ב-AlloyDB ל-PostgreSQL בלי לבנות צינורות עיבוד נתונים מורכבים של חילוץ, טרנספורמציה וטעינה (ETL) או שילובים של שירותים חיצוניים.
היתרונות של פונקציית חילוץ הנתונים:
- מדרגיות: תמיכה בחלוקה חכמה לאצוות של פונקציות AI – נקראת גם האצת פונקציות AI – תכונה אוטומטית לאופטימיזציה של הרצת שאילתות ב-AlloyDB AI, שמקבצת באופן שקוף בקשות להפעלת פונקציות AI סקלריות נפרדות, שורה אחר שורה, לבקשות מודל באצוות ברקע במהלך הרצת השאילתה. הוא גם תומך בעיבוד מבוסס-מערך ועיבוד מבוסס-סמן כדי לעבד אלפי שורות ביעילות.
- הפשטה: מספקת הפשטה ברמה גבוהה שמנהלת את הפעלת המודל ואת הכנת הנתונים באופן אוטומטי.
פונקציית חילוץ הנתונים של AlloyDB AI תומכת בכמה תרחישי שימוש, כולל:
- שירותי בריאות: ניתוח הערות רפואיות בטקסט חופשי לשדות בפורמט מובנה כמו שמות מטופלים, תסמינים ותרופות.
- נדל"ן: הפיכת תיאורי נכסים לא מובְנים לנקודות נתונים ספציפיות, כמו סוג הנכס ומספר חדרי השינה.
- טכנולוגיה משפטית: זיהוי ושליפה אוטומטיים של מונחים קריטיים כמו החוק החל ומגבלות חבות ממסמכים משפטיים ארוכים.
- פעולות פיננסיות: עיבוד טקסט מתומלל של חשבוניות כדי לחלץ בצורה מדויקת מטא-נתונים וסכומים כוללים בפורמט עקבי.
לפני שמתחילים
לפני שמשתמשים בפונקציה ai.extract, צריך לוודא שעומדים בדרישות הבאות:
- גרסת PostgreSQL: הפונקציה
ai.extractנתמכת ב-PostgreSQL מגרסה 18 ואילך. מוודאים שבאשכול AlloyDB פועלת גרסה 18 ומעלה של PostgreSQL. מידע נוסף זמין במאמר גרסאות נתמכות של מסדי נתונים. - גרסת התוסף: ודאו שמותקנת אצלכם הגרסה העדכנית של התוסף
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.extract. ערך ברירת המחדל של הדגלים האלה הוא off.
מוודאים שגרסת התוסף
google_ml_integrationהיא1.6.1או גרסה חדשה יותר. כדי לבדוק את הגרסה, מריצים את הפקודה הבאה:SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';כדי להפעיל את הדגלים בסשן הנוכחי, בכל מסד הנתונים או בכל מסדי הנתונים במכונה, מבצעים אחת או יותר מהמשימות הבאות:
כדי להפעיל את הדגלים בסשן הנוכחי, מריצים את הפקודה הבאה:
SET google_ml_integration.enable_ai_query_engine = 'on'; SET google_ml_integration.enable_preview_ai_functions = 'on';השינוי הזה לא דורש הפעלה מחדש של מסד הנתונים.
כדי להפעיל את הדגלים באופן קבוע במסד נתונים ספציפי, מריצים את הפקודה הבאה:
ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_ai_query_engine = 'on'; ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_preview_ai_functions = 'on';כדי להפעיל את הדגלים בכל מסדי הנתונים במכונה, מגדירים את הדגלים לניהול מסד הנתונים
google_ml_integration.enable_ai_query_engineו-google_ml_integration.enable_preview_ai_functionsלערךonבאמצעות הפקודהgcloud alloydb instances update:gcloud alloydb instances update INSTANCE_ID --database-flags google_ml_integration.enable_ai_query_engine=on,google_ml_integration.enable_preview_ai_functions=on --region=REGION_ID --cluster=CLUSTER_ID --project=PROJECT_IDמידע נוסף זמין במאמר הגדרת דגלים לניהול מסדי נתונים.
הפעלת עיבוד חכם באצווה לפונקציות AI
כדי לקצר את זמן הביצוע הכולל של השאילתה כשמריצים ai.extract סקלרי על פני כמה שורות, מפעילים את ההעברה החכמה של פונקציות AI לאצווה על ידי הגדרת הדגל לניהול מסד הנתונים google_ml_integration.enable_ai_function_acceleration לערך on:
SET google_ml_integration.enable_ai_function_acceleration = 'on';
כשהדגל הזה מופעל, AlloyDB מקבץ באופן אוטומטי קריאות סקלריות נפרדות של ai.extract לקבוצות חכמות ברקע.
יצירת טבלה לדוגמה
כדי לעקוב אחרי הדוגמאות של פונקציית החילוץ במסמך הזה, צריך ליצור טבלה ולמלא אותה בנתונים לדוגמה הבאים.
CREATE TABLE IF NOT EXISTS sales_leads (
lead_id INT PRIMARY KEY,
raw_transcript TEXT,
lead_status VARCHAR(20)
);
INSERT INTO sales_leads (lead_id, raw_transcript, lead_status) VALUES
(1, 'Spoke with Alex R., Director of IT at Example Organization. They are looking to upgrade their cloud storage.', 'new'),
(2, 'Call with Kai L., Senior DevOps Engineer at Example Organization. They are currently using MySQL and Redis. Interested in automating enterprise database backups, cross-region replication, and automated scaling.', 'new'),
(3, 'Meeting with Taylor K., VP of Engineering at Example Organization. They need a scalable managed PostgreSQL database for their analytics platform. Budget is approved for Q3 launch.', 'new');
חילוץ נתונים מובְנים ממחרוזת אחת
כדי לחלץ פרטים מובְנים מקלט טקסט יחיד, משתמשים בגרסה הסקלרית של ai.extract. למידע נוסף: מקור המידע ai.extract.
SELECT ai.extract(
input => 'TEXT_CONTENT',
output_schema => 'OUTPUT_SCHEMA',
model_id => 'MODEL_ID' -- Optional. The default value is gemini-3.5-flash-lite.
);
חילוץ נתונים מטבלה
בדוגמה הבאה, מידע מובנה נשלף מהעמודה raw_transcript בטבלה:
SELECT
lead_id,
ai.extract(
input => raw_transcript,
output_schema => '{"contact_name": {"type": "string"}, "company_name": {"type": "string"}, "job_title": {"type": "string"}}'
) AS extracted_info
FROM
sales_leads
WHERE
lead_status = 'new';
חילוץ שדות על סמך סכימת ה-JSON שסופקה
בדוגמה הבאה, המודל מחלץ שדות ספציפיים מטקסט הקלט על סמך סכימת ה-JSON שסופקה:
SELECT ai.extract(
input => 'Spoke with Alex R., Director of IT at Example Organization. They are looking to upgrade their cloud storage.',
output_schema => '{"contact_name": {"type": "string"}, "job_title": {"type": "string"}, "company_name": {"type": "string"}, "need": {"type": "string"}}'
);
הפלט לדוגמה:
{
"contact_name": "Alex R.",
"job_title": "Director of IT",
"company_name": "Example Organization",
"need": "upgrade cloud storage"
}
חילוץ שדות על סמך הנחיה בשפה טבעית
בדוגמה הבאה, פרטים של ליד למכירות נשלפים באמצעות סכימה של טקסט תיאורי:
SELECT ai.extract(
input => 'Meeting with Taylor K., VP of Engineering at Example Organization. They need a scalable managed PostgreSQL database for their analytics platform. Budget is approved for Q3 launch.',
output_schema => 'Extract the following details as a clean, line-by-line list: Contact Name, Job Title, Company Name, Technical Requirement, Target Use Case, and Timeline.'
);
הפלט לדוגמה:
Contact Name: Taylor K.
Job Title: VP of Engineering
Company Name: Example Organization
Technical Requirement: Scalable managed PostgreSQL database
Target Use Case: Analytics platform
Timeline: Q3 launch
חילוץ שדות עם מערכים
בדוגמה הבאה, המערכת מחלצת כמה ערכים לשדות של מערכים על סמך סכימת הפלט:
SELECT ai.extract(
input => 'Call with Kai L., Senior DevOps Engineer at Example Organization. They are currently using MySQL and Redis. Interested in automating enterprise database backups, cross-region replication, and automated scaling.',
output_schema => '{"contact_name": {"type": "string"}, "company_name": {"type": "string"}, "current_technologies": {"type": "array", "items": {"type": "string"}}, "interested_features": {"type": "array", "items": {"type": "string"}}}'
);
הפלט לדוגמה:
{
"contact_name": "Kai L.",
"company_name": "Example Organization",
"current_technologies": ["MySQL", "Redis"],
"interested_features": ["enterprise database backups", "cross-region replication", "automated scaling"]
}
חילוץ נתונים מובְנים בקבוצות
כדי לקצר את זמן הביצוע הכולל של שאילתות במערכי נתונים גדולים יותר, השתמשו בגרסה של הפונקציה שמבוססת על מערך כדי לעבד כמה קלטים בקריאה אחת.
למידע נוסף: מקור המידע ai.extract.
SELECT ai.extract(
inputs => TEXT[],
output_schema => TEXT,
batch_size => INT, -- Optional. The default value is 10.
model_id => VARCHAR(100) -- Optional. The default value is gemini-3.5-flash-lite.
);
בדוגמה הבאה, המודל מחלץ פרטים מובְנים מכמה רשומות:
SELECT
ai.extract(
inputs => array_agg(raw_transcript ORDER BY lead_id),
output_schema => '{"contact_name": {"type": "string"}, "company_name": {"type": "string"}, "job_title": {"type": "string"}}',
batch_size => 4
)
FROM sales_leads;
חילוץ נתונים מובְנים באמצעות סמנים
הפונקציה שמבוססת על סמן מתאימה לעיבוד של מערכי נתונים גדולים, כי היא מאפשרת למערכת להעביר נתונים דרך מודל ה-AI בקבוצות קטנות, בלי לטעון את כל הנתונים לזיכרון בבת אחת. למידע נוסף: מקור המידע ai.extract.
חתימת הפונקציה של הגרסה מבוססת-הסמן של ai.extract היא:
CREATE OR REPLACE FUNCTION ai.extract(
input_cursor REFCURSOR,
output_schema TEXT,
batch_size INT DEFAULT NULL,
model_id VARCHAR(100) DEFAULT NULL)
RETURNS REFCURSOR
בדוגמה הבאה אפשר לראות איך להזין נתונים לפונקציה ai.extract שורה אחר שורה באמצעות סמן:
DO $$
DECLARE
input_cur REFCURSOR;
output_cur REFCURSOR;
result_record RECORD;
BEGIN
-- Open the input cursor with the data to process
OPEN input_cur FOR
SELECT raw_transcript
FROM sales_leads
WHERE lead_status = 'new';
-- Call ai.extract passing the input cursor
output_cur := ai.extract(
input_cursor => input_cur,
output_schema => '{"contact_name": "string", "company_name": "string", "job_title": "string"}',
batch_size => 10
);
-- Loop through the output cursor (columns: input TEXT, output TEXT)
LOOP
FETCH output_cur INTO result_record;
EXIT WHEN NOT FOUND;
RAISE NOTICE 'Extracted Data: %', result_record.output;
END LOOP;
CLOSE input_cur;
CLOSE output_cur;
END $$;