רענון נתונים מובנים ולא מובנים

בדף הזה מתואר רענון של נתונים מובנים ולא מובנים.

כדי לרענן את אפליקציות האינטרנט, אפשר לעיין במאמר בנושא רענון דף אינטרנט.

רענון נתונים מובנים

אפשר לרענן את הנתונים במאגר נתונים מובְנים, כל עוד משתמשים בסכימה זהה לסכימה במאגר הנתונים או בסכימה שתואמת לאחור לסכימה במאגר הנתונים. לדוגמה, הוספה של שדות חדשים בלבד לסכימה קיימת היא תואמת לאחור.

אפשר לרענן נתונים מובנים ב Google Cloud מסוף או באמצעות ה-API.

המסוף

כדי להשתמש במסוף Google Cloud כדי לרענן נתונים מובנים מענף של מאגר נתונים, פועלים לפי השלבים הבאים:

  1. נכנסים לדף AI Applications במסוף Google Cloud .

    אפליקציות AI

  2. בתפריט הניווט, לוחצים על מאגרי נתונים.

  3. בעמודה שם, לוחצים על מאגר הנתונים שרוצים לערוך.

  4. בכרטיסייה מסמכים, לוחצים על ייבוא נתונים.

  5. כדי לרענן מ-Cloud Storage:

    1. בחלונית בחירת מקור נתונים, בוחרים באפשרות Cloud Storage.
    2. בחלונית Import data from Cloud Storage (ייבוא נתונים מ-Cloud Storage), לוחצים על Browse (עיון), בוחרים את הקטגוריה שמכילה את הנתונים המעודכנים ולוחצים על Select (בחירה). אפשרות אחרת היא להזין את מיקום הדלי ישירות בשדה gs://‎.
    3. בקטע אפשרויות ייבוא נתונים, בוחרים אפשרות ייבוא.
    4. לוחצים על Import.
  6. כדי לרענן מ-BigQuery:

    1. בחלונית Select a data source (בחירת מקור נתונים), בוחרים באפשרות BigQuery.
    2. בחלונית ייבוא נתונים מ-BigQuery, לוחצים על עיון, בוחרים טבלה שמכילה את הנתונים המעודכנים ולוחצים על בחירה. אפשרות אחרת היא להזין את מיקום הטבלה ישירות בשדה נתיב BigQuery.
    3. בקטע אפשרויות ייבוא נתונים, בוחרים אפשרות ייבוא.
    4. לוחצים על Import.

REST

כדי לרענן את הנתונים, צריך להשתמש בשיטה documents.import ולציין את הערך המתאים של reconciliationMode.

כדי לרענן נתונים מובנים מ-BigQuery או מ-Cloud Storage באמצעות שורת הפקודה, פועלים לפי השלבים הבאים:

  1. איך מוצאים את המזהה של מאגר הנתונים אם כבר יש לכם מזהה של מאגר נתונים, אפשר לדלג לשלב הבא.

    1. במסוף Google Cloud , עוברים לדף AI Applications ובתפריט הניווט לוחצים על Data Stores.

      מעבר לדף Data Stores

    2. לוחצים על השם של מאגר הנתונים.

    3. בדף Data של מאגר הנתונים, מעתיקים את המזהה של מאגר הנתונים.

  2. כדי לייבא את הנתונים המובנים מ-BigQuery, קוראים לשיטה הבאה. אפשר לייבא מ-BigQuery או מ-Cloud Storage. כדי לייבא מ-Cloud Storage, מדלגים לשלב הבא.

    curl -X POST \
    -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/branches/0/documents:import" \
    -d '{
      "bigquerySource": {
        "projectId": "PROJECT_ID",
        "datasetId":"DATASET_ID",
        "tableId": "TABLE_ID",
        "dataSchema": "DATA_SCHEMA_BQ",
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "autoGenerateIds": AUTO_GENERATE_IDS,
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • DATA_STORE_ID: המזהה של מאגר הנתונים של חיפוש מבוסס סוכנים.
    • DATASET_ID: השם של מערך הנתונים ב-BigQuery.
    • TABLE_ID: השם של הטבלה ב-BigQuery.
    • DATA_SCHEMA_BQ: שדה אופציונלי שבו מציינים את הסכימה לשימוש בניתוח נתונים ממקור BigQuery. יכול לקבל את הערכים הבאים:
      • document: ערך ברירת המחדל. הטבלה ב-BigQuery שבה אתם משתמשים צריכה להתאים לסכימת ברירת המחדל הבאה של BigQuery. אתם יכולים להגדיר את המזהה של כל מסמך בעצמכם, ולעטוף את כל הנתונים במחרוזת json_data.
      • custom: כל סכימת טבלה ב-BigQuery מתקבלת, וחיפוש מבוסס סוכנים יוצר באופן אוטומטי את המזהים לכל מסמך שיובא.
    • ERROR_DIRECTORY: שדה אופציונלי שבו מציינים ספרייה ב-Cloud Storage למידע על שגיאות שקשורות לייבוא – לדוגמה, gs://<your-gcs-bucket>/directory/import_errors. ‫Google ממליצה להשאיר את השדה הזה ריק כדי לאפשר לחיפוש מבוסס סוכנים ליצור באופן אוטומטי ספרייה זמנית.
    • RECONCILIATION_MODE: שדה אופציונלי שבו מציינים איך המסמכים המיובאים מתעדכנים בהתאם למסמכים הקיימים במאגר הנתונים של היעד. יכול לקבל את הערכים הבאים:
      • INCREMENTAL: ערך ברירת המחדל. גורם לרענון מצטבר של נתונים מ-BigQuery למאגר הנתונים. הפעולה הזו מבצעת פעולת upsert, שמוסיפה מסמכים חדשים ומחליפה מסמכים קיימים במסמכים מעודכנים עם אותו מזהה.
      • FULL: גורם לשינוי בסיס מלא של המסמכים במאגר הנתונים. לכן, מסמכים חדשים ומעודכנים מתווספים למאגר הנתונים, ומסמכים שלא נמצאים ב-BigQuery מוסרים ממאגר הנתונים. מצב FULL שימושי אם רוצים למחוק באופן אוטומטי מסמכים שכבר לא צריכים.
    • AUTO_GENERATE_IDS: שדה אופציונלי שבו מציינים אם ליצור מזהי מסמכים באופן אוטומטי. אם הערך הוא true, מזהי המסמכים נוצרים על סמך גיבוב של מטען הייעודי (payload). שימו לב שמזהי המסמכים שנוצרו עשויים להשתנות בין ייבוא לייבוא. אם אתם יוצרים מזהים באופן אוטומטי בכמה ייבואים, מומלץ מאוד להגדיר את reconciliationMode לערך FULL כדי לשמור על מזהי מסמכים עקביים.

      מציינים את autoGenerateIds רק כשbigquerySource.dataSchema מוגדר לערך custom. אחרת, מוחזרת שגיאה INVALID_ARGUMENT. אם לא מציינים את autoGenerateIds או מגדירים אותו ל-false, צריך לציין את idField. אחרת, הייבוא של המסמכים ייכשל.

    • ID_FIELD: שדה אופציונלי שבו מציינים אילו שדות הם מזהי המסמכים. עבור קובצי מקור של BigQuery, ‏idField מציין את שם העמודה בטבלה ב-BigQuery שמכילה את מזהי המסמכים.

      מציינים idField רק אם שני התנאים האלה מתקיימים, אחרת מוחזרת שגיאת INVALID_ARGUMENT:

      • הערך של bigquerySource.dataSchema הוא custom
      • הערך של auto_generate_ids הוא false או שלא צוין ערך.

      בנוסף, הערך של שם העמודה ב-BigQuery צריך להיות מסוג מחרוזת, באורך של 1 עד 63 תווים, ותואם ל-RFC-1034. אחרת, ייבוא המסמכים ייכשל.

    זוהי סכימת BigQuery שמוגדרת כברירת מחדל. כשמגדירים את dataSchema לערך document, הטבלה ב-BigQuery צריכה להיות תואמת לסכימה הזו.

    [
     {
       "name": "id",
       "mode": "REQUIRED",
       "type": "STRING",
       "fields": []
     },
     {
       "name": "jsonData",
       "mode": "NULLABLE",
       "type": "STRING",
       "fields": []
     }
    ]
    
  3. כדי לייבא את הנתונים המובנים מ-Cloud Storage, קוראים לשיטה הבאה. אפשר לייבא מ-BigQuery או מ-Cloud Storage. כדי לייבא מ-BigQuery, עוברים לשלב הקודם.

    curl -X POST \
    -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/branches/0/documents:import" \
    -d '{
      "gcsSource": {
        "inputUris": ["GCS_PATHS"],
        "dataSchema": "DATA_SCHEMA_GCS",
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • DATA_STORE_ID: המזהה של מאגר הנתונים של חיפוש מבוסס סוכנים.
    • GCS_PATHS: רשימה של מזהי URI מופרדים בפסיקים של מיקומים ב-Cloud Storage שמהם רוצים לייבא. כל URI יכול לכלול עד 2,000 תווים. מזהי ה-URI יכולים להתאים לנתיב המלא של אובייקט אחסון או לדפוס של אובייקט אחד או יותר. לדוגמה, gs://bucket/directory/*.json הוא נתיב תקין.
    • DATA_SCHEMA_GCS: שדה אופציונלי שבו מציינים את הסכימה לשימוש בניתוח נתונים ממקור BigQuery. יכול לקבל את הערכים הבאים:
      • document: ערך ברירת המחדל. הטבלה ב-BigQuery שבה אתם משתמשים צריכה להתאים לסכימת ברירת המחדל הבאה של BigQuery. אתם יכולים להגדיר את המזהה של כל מסמך בעצמכם, ולעטוף את כל הנתונים במחרוזת json_data.
      • custom: כל סכימת טבלה ב-BigQuery מתקבלת, וחיפוש מבוסס סוכנים יוצר באופן אוטומטי את המזהים לכל מסמך שיובא.
    • ERROR_DIRECTORY: שדה אופציונלי שבו מציינים ספרייה ב-Cloud Storage למידע על שגיאות שקשורות לייבוא – לדוגמה, gs://<your-gcs-bucket>/directory/import_errors. ‫Google ממליצה להשאיר את השדה הזה ריק כדי לאפשר לחיפוש מבוסס סוכנים ליצור באופן אוטומטי ספרייה זמנית.
    • RECONCILIATION_MODE: שדה אופציונלי שבו מציינים איך המסמכים המיובאים מתעדכנים בהתאם למסמכים הקיימים במאגר הנתונים של היעד. יכול לקבל את הערכים הבאים:
      • INCREMENTAL: ערך ברירת המחדל. גורם לרענון מצטבר של נתונים מ-BigQuery למאגר הנתונים. הפעולה הזו מבצעת פעולת upsert, שמוסיפה מסמכים חדשים ומחליפה מסמכים קיימים במסמכים מעודכנים עם אותו מזהה.
      • FULL: גורם לשינוי בסיס מלא של המסמכים במאגר הנתונים. לכן, מסמכים חדשים ומעודכנים מתווספים למאגר הנתונים, ומסמכים שלא נמצאים ב-BigQuery מוסרים ממאגר הנתונים. מצב FULL שימושי אם רוצים למחוק באופן אוטומטי מסמכים שכבר לא צריכים.

Python

מידע נוסף מופיע בתיעוד העזר של ה-API של חיפוש מבוסס סוכנים Python.

כדי לבצע אימות ב-חיפוש מבוסס סוכנים, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# bigquery_dataset = "YOUR_BIGQUERY_DATASET"
# bigquery_table = "YOUR_BIGQUERY_TABLE"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    bigquery_source=discoveryengine.BigQuerySource(
        project_id=project_id,
        dataset_id=bigquery_dataset,
        table_id=bigquery_table,
        data_schema="custom",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

רענון נתונים לא מובנים

אפשר לרענן נתונים לא מובנים ב Google Cloud מסוף או באמצעות ה-API.

המסוף

כדי להשתמש במסוף Google Cloud כדי לרענן נתונים לא מובנים מענף של מאגר נתונים, פועלים לפי השלבים הבאים:

  1. נכנסים לדף AI Applications במסוף Google Cloud .

    אפליקציות AI

  2. בתפריט הניווט, לוחצים על מאגרי נתונים.

  3. בעמודה שם, לוחצים על מאגר הנתונים שרוצים לערוך.

  4. בכרטיסייה מסמכים, לוחצים על ייבוא נתונים.

  5. כדי לבצע המרה מקטגוריה של Cloud Storage (עם או בלי מטא-נתונים):

    1. בחלונית בחירת מקור נתונים, בוחרים באפשרות Cloud Storage.
    2. בחלונית Import data from Cloud Storage (ייבוא נתונים מ-Cloud Storage), לוחצים על Browse (עיון), בוחרים את הקטגוריה שמכילה את הנתונים המעודכנים ולוחצים על Select (בחירה). אפשר גם להזין את מיקום המאגר ישירות בשדה gs://.
    3. בקטע אפשרויות ייבוא נתונים, בוחרים אפשרות ייבוא.
    4. לוחצים על Import.
  6. כדי לבצע המרה מ-BigQuery:

    1. בחלונית Select a data source (בחירת מקור נתונים), בוחרים באפשרות BigQuery.
    2. בחלונית ייבוא נתונים מ-BigQuery, לוחצים על עיון, בוחרים טבלה שמכילה את הנתונים המעודכנים ולוחצים על בחירה. אפשרות אחרת היא להזין את מיקום הטבלה ישירות בשדה נתיב BigQuery.
    3. בקטע אפשרויות ייבוא נתונים, בוחרים אפשרות ייבוא.
    4. לוחצים על Import.

REST

כדי לרענן נתונים לא מובנים באמצעות ה-API, צריך לייבא אותם מחדש באמצעות השיטה documents.import ולציין את הערך המתאים של reconciliationMode. מידע נוסף על ייבוא נתונים לא מובְנים זמין במאמר נתונים לא מובְנים.

Python

מידע נוסף מופיע בתיעוד העזר של ה-API של חיפוש מבוסס סוכנים Python.

כדי לבצע אימות ב-חיפוש מבוסס סוכנים, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"

# Examples:
# - Unstructured documents
#   - `gs://bucket/directory/file.pdf`
#   - `gs://bucket/directory/*.pdf`
# - Unstructured documents with JSONL Metadata
#   - `gs://bucket/directory/file.json`
# - Unstructured documents with CSV Metadata
#   - `gs://bucket/directory/file.csv`
# gcs_uri = "YOUR_GCS_PATH"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    gcs_source=discoveryengine.GcsSource(
        # Multiple URIs are supported
        input_uris=[gcs_uri],
        # Options:
        # - `content` - Unstructured documents (PDF, HTML, DOC, TXT, PPTX)
        # - `custom` - Unstructured documents with custom JSONL metadata
        # - `document` - Structured documents in the discoveryengine.Document format.
        # - `csv` - Unstructured documents with CSV metadata
        data_schema="content",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)