שימוש ב-Document AI layout parser עם Vertex AI RAG Engine

בדף הזה נסביר על כלי הניתוח של פריסת מסמכים ב-Document AI ואיך משתמשים בו עם RAG Engine.

Document AI

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

‫Document AI מבוסס על מוצרים ב-Vertex AI עם AI גנרטיבי, כדי לעזור לכם ליצור אפליקציות לעיבוד מסמכים מבוססות-ענן, מקצה לקצה וניתנות להרחבה. לא נדרשת מומחיות מיוחדת בלמידת מכונה כדי להשתמש במוצרים האלה.

כלי לניתוח פריסה של Document AI

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

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

במאמר זיהוי פריסה לפי סוג קובץ מפורטים סוגי הקבצים שמשמשים לזיהוי פריסה.

שימוש בכלי לניתוח פריסות ב-Vertex AI RAG Engine

כדי להשתמש בכלי לניתוח פריסות ב-Vertex AI RAG Engine, צריך ליצור קורפוס. כדי ליצור קורפוס:

  1. נכנסים לדף RAG Engine במסוף Google Cloud .

    מעבר אל RAG Engine

  2. לוחצים על יצירת מאגר מידע.

  3. בשדה Region (אזור), בוחרים את האזור שלכם.

  4. בשדה שם הקורפוס, מזינים את שם הקורפוס.

  5. כותבים תיאור בשדה Description.

  6. בקטע נתונים, בוחרים את המקום שבו רוצים להעלות את הנתונים.

  7. מרחיבים את הקטע אפשרויות מתקדמות.

    1. בקטע Chunking strategy, מומלץ להשתמש בגדלים הבאים שמוגדרים כברירת מחדל:

      • גודל החלוקה לחלקים: 1024
      • חפיפה בין חלקי טקסט: 256
    2. בקטע Layout parser, בוחרים באפשרות Document AI layout parser, שהיא האפשרות עם רמת הדיוק הכי גבוהה למסמכים עם תמונות או תרשימים.

      1. בשדה מודל, בוחרים את המודל הרצוי.

      2. אופציונלי: בשדה Maximum parsing requests per min (מספר מקסימלי של בקשות ניתוח לדקה), מזינים את המספר המקסימלי של בקשות הניתוח.

      3. אופציונלי: בשדה Custom parsing prompt (הנחיית ניתוח מותאמת אישית), מזינים את הנחיית הניתוח.

      4. לוחצים על Continue.

  8. בדף Configure vector store, מבצעים את הפעולות הבאות:

    1. בשדה Embedding model (מודל הטמעה), בוחרים את מודל ההטמעה.

    2. בקטע Vector database, בוחרים את מסד הנתונים.

  9. לוחצים על יצירת מאגר מידע.

מגבלות

ImportRagFiles API תומך בכלי לניתוח פריסות, אבל יש מגבלות מסוימות:

  • מזינים את הגודל המקסימלי של הקובץ, 20MB, לכל סוגי הקבצים.
  • כל קובץ PDF יכול להכיל עד 500 עמודים.

חלים מכסות ותמחור של Document AI.

הפעלת Document AI API

צריך להפעיל את Document AI API בפרויקט. רוצים לדעת איך מפעילים או משביתים שירותים?

Enable the Document AI API.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the API

הפעלת כלי לניתוח פריסה

כדי להפעיל את הכלי Layout Parser, פועלים לפי השלבים הבאים:

  1. יוצרים כלי לניתוח פריסות לפי ההוראות במאמר יצירה וניהול של מעבדים.

    שם סוג המעבד הוא LAYOUT_PARSER_PROCESSOR.

  2. מפעילים את הכלי Layout Parser (ניתוח פריסה) לפי ההוראות במאמר בנושא הפעלת מעבד.

מאגר הידע (הקורפוס) שלכם ב-RAG

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

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

ייבוא קבצים באמצעות כלי לניתוח פריסות

אפשר לייבא קבצים ותיקיות ממקורות שונים באמצעות כלי לניתוח פריסות.

Python

במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע במאמרי העזרה של API בשפת Python.

מחליפים את המשתנים הבאים שמופיעים בדוגמת הקוד:

  • PROJECT_ID: מזהה הפרויקט.
  • LOCATION: האזור שבו הבקשה תעובד.
  • RAG_CORPUS_ID: המזהה של משאב מאגר המידע של RAG.
  • GCS_URIS: רשימה של מיקומי Cloud Storage. לדוגמה: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: נתיב המשאב למעבד של מנתח הפריסה שנוצר. לדוגמה: "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: אופציונלי: מספר הטוקנים שכל נתח צריך להכיל.
from vertexai import rag
import vertexai

PROJECT_ID = YOUR_PROJECT_ID
corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"
paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]  # Supports Cloud Storage and Google Drive.

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

response = rag.import_files(
    corpus_name=corpus_name,
    paths=paths,
    transformation_config=rag.TransformationConfig(
        rag.ChunkingConfig(chunk_size=1024, chunk_overlap=256)
    ),
    import_result_sink="gs://sample-existing-folder/sample_import_result_unique.ndjson",  # Optional: This must be an existing storage bucket folder, and the filename must be unique (non-existent).
    layout_parser=rag.LayoutParserConfig(
      processor_name="projects/{PROJECT_ID}/locations/us/processors/{processor_id}/processorVersions/{processor_version_id}",
      max_parsing_requests_per_min=120,
    ),
    max_embedding_requests_per_min=900,  # Optional
)
print(f"Import response: {response}")

REST

בדוגמת הקוד מוצג ייבוא של קבצים מ-Cloud Storage באמצעות כלי לניתוח פריסות. אפשרויות הגדרה נוספות, כולל ייבוא קבצים ממקור אחר, מפורטות בImportRagFilesConfigחומר העזר.

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

  • PROJECT_ID: מזהה הפרויקט.
  • LOCATION: האזור שבו הבקשה תעובד.
  • RAG_CORPUS_ID: המזהה של משאב מאגר המידע של RAG.
  • GCS_URIS: רשימה של מיקומי Cloud Storage. לדוגמה: "gs://my-bucket1", "gs://my-bucket2".
  • LAYOUT_PARSER_PROCESSOR_NAME: נתיב המשאב למעבד של מנתח הפריסה שנוצר. לדוגמה: "projects/{project}/locations/{location}/processors/{processor_id}".
  • CHUNK_SIZE: אופציונלי: מספר הטוקנים שכל נתח צריך להכיל.
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

תוכן בקשת JSON:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": "GCS_URIS"
    },
    "rag_file_parsing_config": {
      "layout_parser": {
        "processor_name": "LAYOUT_PARSER_PROCESSOR_NAME"
      }
    },
    "rag_file_transformation_config": {
      "rag_file_chunking_config": {
        "fixed_length_chunking": {
          "chunk_size": CHUNK_SIZE
        }
      }
    },
  }
}

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

curl

ב-CLI של gcloud.

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

Powershell

ב-CLI של gcloud.

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content

שאילתת אחזור

כשמשתמש שואל שאלה או מספק הנחיה, רכיב האחזור ב-RAG מחפש במאגר הידע שלו מידע שרלוונטי לשאילתה.

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

חיזוי (Prediction)

התחזית יוצרת תשובה מבוססת על ההקשרים שאוחזרו. לדוגמה, ראו יצירה.

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