כשמייבאים נתונים מובְנים באמצעות מסוף Google Cloud , Gemini Enterprise מזהה את הסכימה באופן אוטומטי. אתם יכולים להשתמש בסכימה שזוהתה באופן אוטומטי במנוע החיפוש, או להשתמש ב-API כדי לספק סכימה שמציינת את מבנה הנתונים.
אם אתם מספקים סכימה ומעדכנים אותה מאוחר יותר בסכימה חדשה, הסכימה החדשה צריכה להיות תואמת לדורות קודמים עם הסכימה המקורית. אחרת, עדכון הסכימה ייכשל.
למידע נוסף על הסכימה, ראו dataStores.schemas.
גישות להגדרת הסכימה של מאגר הנתונים
יש כמה גישות לקביעת הסכימה של נתונים מובְנים.
זיהוי ועריכה אוטומטיים. Gemini Enterprise יכול לזהות באופן אוטומטי ולהציע סכימה ראשונית. לאחר מכן, משפרים את הסכימה דרך ממשק המסוף. Google ממליצה מאוד למפות מאפיינים מרכזיים לכל השדות החשובים אחרי שהשדות מזוהים באופן אוטומטי.
זו הגישה שבה תשתמשו כשתפעלו לפי ההוראות במסוף לנתונים מובְנים ביצירת מאגר נתונים מאינטראקציה ישירה. Google Cloud
צריך לספק את הסכימה כאובייקט JSON. צריך לספק את הסכימה ל-Gemini Enterprise כאובייקט JSON. אתם צריכים להכין אובייקט JSON תקין. דוגמה לסכימה כאובייקט JSON מופיעה בקטע דוגמה לסכימה כאובייקט JSON. אחרי שיוצרים את הסכימה, מעלים את הנתונים בהתאם לסכימה הזו.
זו הגישה שבה אפשר להשתמש כשיוצרים מאגר נתונים דרך ה-API באמצעות פקודת curl (או תוכנית). לדוגמה, ראו ייבוא חד-פעמי מ-BigQuery. אפשר גם לעיין בהוראות למתן סכימה משלכם.
מידע על זיהוי ועריכה אוטומטיים
כשמתחילים לייבא נתונים, Gemini Enterprise דוגם את המסמכים הראשונים שיובאו. על סמך המסמכים האלה, המערכת מציעה סכימה לנתונים, שאפשר לבדוק או לערוך.
אם השדות שאתם רוצים למפות למאפייני מפתח לא קיימים במסמכים שנדגמו, אתם יכולים להוסיף אותם באופן ידני כשאתם בודקים את הסכימה.
אם Gemini Enterprise יזהה שדות נוספים בהמשך תהליך ייבוא הנתונים, הוא עדיין ייבא את השדות האלה ויוסיף אותם לסכימה. אם רוצים לערוך את הסכימה אחרי שכל הנתונים יובאו, אפשר לעיין בקטע עדכון הסכימה.
סכימה לדוגמה כאובייקט JSON
אתם יכולים להגדיר סכימה משלכם באמצעות הפורמט JSON Schema, שהוא שפה הצהרתית בקוד פתוח להגדרה, להוספת הערות ולאימות של מסמכי JSON. לדוגמה, זו הערה תקינה של סכימת JSON:
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "dynamic": "true", "datetime_detection": true, "geolocation_detection": true, "properties": { "title": { "type": "string", "keyPropertyMapping": "title", "retrievable": true, "completable": true }, "description": { "type": "string", "keyPropertyMapping": "description" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } }, "uri": { "type": "string", "keyPropertyMapping": "uri" }, "brand": { "type": "string", "indexable": true, "dynamicFacetable": true }, "location": { "type": "geolocation", "indexable": true, "retrievable": true }, "creationDate": { "type": "datetime", "indexable": true, "retrievable": true }, "isCurrent": { "type": "boolean", "indexable": true, "retrievable": true } } }
הנה כמה מהשדות בדוגמה הזו לסכימה:
dynamic. אם הערך שלdynamicמוגדר למחרוזת"true", כל המאפיינים החדשים שנמצאים בנתונים המיובאים מתווספים לסכימה. אם הערך שלdynamicהוא"false", המערכת מתעלמת ממאפיינים חדשים שנמצאים בנתונים המיובאים. המאפיינים לא מתווספים לסכימה והערכים לא מיובאים.לדוגמה, לסכימה יש שני מאפיינים:
titleו-description, ואתם מעלים נתונים שמכילים את המאפייניםtitle,descriptionו-rating. אם הערך שלdynamicהוא"true", המאפיין והנתונים של הדירוגים מיובאים. אם הערך שלdynamicהוא"false", המאפיינים שלratingלא מיובאים, אבל המאפיינים שלtitleו-descriptionכן מיובאים.ערך ברירת המחדל הוא
"true".
datetime_detection. אם הערך שלdatetime_detectionהוא בוליאניtrue, כשמייבאים נתונים בפורמט datetime, סוג הסכימה מוגדר כ-datetime. הפורמטים הנתמכים הם RFC 3339 ו-ISO 8601.לדוגמה:
2024-08-05 08:30:00 UTC2024-08-05T08:30:00Z2024-08-05T01:30:00-07:002024-08-052024-08-05T08:30:00+00:00
אם הערך של
datatime_detectionמוגדר כערך הבוליאניfalse, כשמייבאים נתונים בפורמט datetime, סוג הסכימה מוגדר כ-string.ערך ברירת המחדל הוא
true.
geolocation_detection. אם הערך שלgeolocation_detectionהוא בוליאניtrue, כשמייבאים נתונים בפורמט של מיקום גיאוגרפי, סוג הסכימה מוגדר כ-geolocation. הנתונים מזוהים כמיקום גיאוגרפי אם הם אובייקט שמכיל מספר קו רוחב ומספר קו אורך, או אובייקט שמכיל מחרוזת של כתובת.לדוגמה:
"myLocation": {"latitude":37.42, "longitude":-122.08}"myLocation": {"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"}
אם הערך של
geolocation_detectionהוא הבוליאניfalse, כשמייבאים נתונים בפורמט של מיקום גיאוגרפי, סוג הסכימה מוגדר כ-object.ערך ברירת המחדל הוא
true.
keyPropertyMapping: שדה שממפה מילות מפתח מוגדרות מראש לשדות קריטיים במסמכים, כדי להבהיר את המשמעות הסמנטית שלהם. הערכים כוללים אתtitle,description,uriו-category. שימו לב ששם השדה לא צריך להיות זהה לערך שלkeyPropertyValues. לדוגמה, בשדה שקראתם לוmy_title, אתם יכולים לכלול שדהkeyPropertyValuesעם הערךtitle.שדות שמסומנים ב-
keyPropertyMappingניתנים כברירת מחדל להוספה לאינדקס ולחיפוש, אבל לא לאחזור, להשלמה או ל-dynamicFacetable. כלומר, לא צריך לכלול את השדותindexableאוsearchableעם השדהkeyPropertyValuesכדי לקבל את פעולת ברירת המחדל הצפויה.
type. סוג השדה. זהו ערך מחרוזת שהואdatetime,geolocationאו אחד מהסוגים הפרימיטיביים (integer,boolean,object,array,numberאוstring).
retrievable. מציין אם אפשר להחזיר את השדה הזה בתגובה לחיפוש. אפשר להגדיר את זה לשדות מהסוגיםnumber,string,boolean,integer,datetimeו-geolocation. אפשר להגדיר עד 50 שדות כניתנים לאחזור. כברירת מחדל, אי אפשר לאחזר שדות שמוגדרים על ידי המשתמש ושדותkeyPropertyValues. כדי שניתן יהיה לאחזר שדה, צריך לכלול את"retrievable": trueבשדה.
indexable. מציין אם אפשר לסנן, לחלק לקטגוריות, להגביר או למיין את השדה הזה בשיטהservingConfigs.search. אפשר להגדיר את זה לשדות מהסוגיםnumber,string,boolean,integer,datetimeו-geolocation. אפשר להגדיר עד 50 שדות שניתנים להוספה לאינדקס. כברירת מחדל, אי אפשר להוסיף לאינדקס שדות שהוגדרו על ידי המשתמש, חוץ משדות שמכילים את השדהkeyPropertyMapping. כדי להוסיף שדה לאינדקס, צריך לכלול את"indexable": trueבשדה.
dynamicFacetable. מציין שאפשר להשתמש בשדה כמאפיין דינמי. אפשר להגדיר את זה לשדות מהסוגיםnumber,string,booleanו-integer. כדי ששדה יהיה ניתן לסינון דינמי, הוא חייב להיות גם ניתן להוספה לאינדקס: צריך לכלול את"dynamicFacetable": trueו-"indexable": trueבשדה.
searchable. מציין אם אפשר להוסיף את השדה הזה לאינדקס הפוך כדי להתאים לשאילתות טקסט לא מובנות. אפשר להגדיר את זה רק לשדות מסוגstring. אפשר להגדיר עד 50 שדות שניתנים לחיפוש. כברירת מחדל, אי אפשר לחפש שדות שמוגדרים על ידי המשתמש, חוץ משדות שמכילים את השדהkeyPropertyMapping. כדי שיהיה אפשר לחפש שדה, צריך לכלול את"searchable": trueבשדה.
completable. מציין אם אפשר להחזיר את השדה הזה כהצעה של ההשלמה האוטומטית. אפשר להגדיר את זה רק לשדות מסוגstring. כדי שניתן יהיה להשלים שדה, צריך לכלול את"completable": trueבשדה.
לספק סכימה משלכם כאובייקט JSON
כדי לספק סכימה משלכם, אתם צריכים ליצור מאגר נתונים שמכיל סכימה ריקה, ואז לעדכן את הסכימה ולספק את הסכימה שלכם כאובייקט JSON. איך לעשות את זה?
מכינים את הסכימה כאובייקט JSON, לפי הסכימה לדוגמה כאובייקט JSON.
יוצרים מאגר נתונים.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \ -d '{ "displayName": "DATA_STORE_DISPLAY_NAME", "industryVertical": "INDUSTRY_VERTICAL" }'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
DATA_STORE_ID: המזהה של מאגר הנתונים שרוצים ליצור. המזהה יכול להכיל רק אותיות קטנות, ספרות, קווים תחתונים ומקפים. -
DATA_STORE_DISPLAY_NAME: השם המוצג של מאגר הנתונים שרוצים ליצור. INDUSTRY_VERTICAL:GENERIC
-
משתמשים ב-method schemas.patch של ה-API כדי לספק את סכימת ה-JSON החדשה כאובייקט JSON.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/schemas/default_schema" \ -d '{ "structSchema": JSON_SCHEMA_OBJECT }'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
DATA_STORE_ID: המזהה של מאגר הנתונים.
JSON_SCHEMA_OBJECT: סכימת ה-JSON החדשה כאובייקט JSON. לדוגמה:{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", "keyPropertyMapping": "title" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } }, "uri": { "type": "string", "keyPropertyMapping": "uri" } } }
-
אופציונלי: בודקים את הסכימה לפי ההליך הצגת הגדרת סכימה.