שימוש בכלי לניתוח פריסה של Document AI עם מנוע RAG

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

Document AI

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

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

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

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

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

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

שימוש במנתח הפריסה ב-RAG Engine

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

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

    מעבר אל RAG Engine

  2. בוחרים באפשרות יצירת מאגר מידע.

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

  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 בפרויקט. למידע נוסף על הפעלת ממשקי API, ראו את התיעוד של Service Usage.

מפעילים את Document AI API.

תפקידים שנדרשים להפעלת ממשקי API

כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

להפעלת ה-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 Agent Platform 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

שומרים את גוף הבקשה בקובץ בשם 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)

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

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