בדף הזה מוסבר על מנתח הפריסה של Document AI ואיך משתמשים בו עם RAG Engine.
Document AI
Document AI היא פלטפורמה לעיבוד ולהבנה של מסמכים, שלוקחת נתונים לא מובְנים ממסמכים והופכת אותם לשדות שמתאימים לאחסון במסד נתונים. נתונים מובְנים הם נתונים שאפשר להבין, לנתח ולצרוך.
Document AI מבוסס על מוצרים ב-Gemini Enterprise Agent Platform עם AI גנרטיבי, כדי לעזור לכם ליצור אפליקציות מבוססות-ענן לעיבוד מסמכים מקצה לקצה, שניתן להתאים אותן לעומס. כדי להשתמש במוצרים האלה לא נדרשת מומחיות מיוחדת בלמידת מכונה.
מנתח פריסה של Document AI
מנתח הפריסה מחלץ רכיבי תוכן מהמסמך, כמו טקסט, טבלאות ורשימות. לאחר מכן, מנתח הפריסה יוצר מקטעים מותאמים להקשר שמאפשרים אחזור מידע באפליקציות של AI גנרטיבי וגילוי.
כשמשתמשים בפריסה לאחזור וליצירת LLM, הפריסה של המסמך נלקחת בחשבון בתהליך החלוקה לחלקים, וכך משפרת את העקביות הסמנטית ומפחיתה את הרעש בתוכן. כל הטקסט בחלק מסוים מגיע מאותה ישות פריסה, כמו הכותרת, כותרת המשנה או הרשימה.
בקטע זיהוי פריסה לפי סוג קובץ מפורטים סוגי הקבצים שבהם אפשר להשתמש בזיהוי פריסה.
שימוש במנתח הפריסה ב-RAG Engine
כדי להשתמש במנתח הפריסה ב-RAG Engine, צריך ליצור קורפוס. כדי ליצור קורפוס:
במסוף Google Cloud , נכנסים לדף RAG Engine.
לוחצים על יצירת קורפוס.
בשדה Region, בוחרים את האזור שלכם.
בשדה Corpus name, מזינים את שם הקורפוס.
בשדה Description, מזינים תיאור.
בקטע נתונים, בוחרים לאן להעלות את הנתונים.
מרחיבים את הקטע אפשרויות מתקדמות.
בקטע Chunking strategy, מומלץ להשתמש בגדלים הבאים שמוגדרים כברירת מחדל:
- גודל החלוקה לחלקים: 1024
- חפיפת מקטעים: 256
בקטע Layout parser, בוחרים באפשרות Document AI layout parser, שהיא הכי מדויקת למסמכים עם תמונות או תרשימים.
בשדה מודל, בוחרים את המודל.
אופציונלי: בשדה Maximum parsing requests per min, מזינים את המספר המקסימלי של בקשות הניתוח.
אופציונלי: בשדה Custom parsing prompt, מזינים את הנחיית הניתוח המותאם אישית.
לוחצים על Continue.
בדף Configure vector store, מבצעים את הפעולות הבאות:
בשדה Embedding model, בוחרים את מודל ההטמעה.
בקטע מסד נתונים וקטורי, בוחרים את מסד הנתונים.
לוחצים על Create corpus.
מגבלות
ImportRagFiles API תומך במנתח הפריסה, אבל יש כמה מגבלות:
- מזינים את גודל הקובץ המקסימלי של 20MB לכל סוגי הקבצים.
- בכל קובץ PDF יכולים להיות עד 500 דפים.
המכסות והתמחור של Document AI חלים.
הפעלת Document AI API
צריך להפעיל את Document AI API בפרויקט. מידע נוסף על הפעלת ממשקי API זמין במשאבי העזרה בנושא שימוש בשירות.
מפעילים את Document AI API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?
הפעלת מנתח הפריסה
כדי להפעיל את מנתח הפריסה, פועלים לפי השלבים הבאים:
יוצרים מנתח פריסה לפי ההוראות במאמר יצירה וניהול של מעבדים.
שם סוג המעבד הוא
LAYOUT_PARSER_PROCESSOR.מפעילים את Layout Parser לפי ההוראות במאמר הפעלת מעבד.
מאגר הידע (הקורפוס) של RAG
אם אין לכם קורפוס RAG, אתם צריכים ליצור אחד. לדוגמה, ראו דוגמה ליצירת קורפוס RAG.
אם כבר יש לכם קורפוס RAG, קבצים קיימים שיובאו בלי מנתח פריסה לא ייובאו מחדש כשתבחרו באפשרות Import files using Layout Parser. אם אתם רוצים להשתמש במנתח פריסה עם הקבצים, קודם צריך למחוק את הקבצים. לדוגמה, ראו דוגמה למחיקת קובץ RAG.
ייבוא קבצים באמצעות מנתח פריסה
אפשר לייבא קבצים ותיקיות ממקורות שונים באמצעות מנתח הפריסה.
Python
במאמר התקנת Agent Platform SDK לפייתון מוסבר איך להתקין או לעדכן את Agent Platform SDK לפייתון. מידע נוסף מופיע במאמרי העזרה של 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
שומרים את גוף הבקשה בקובץ בשם 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)
החיזוי יוצר תשובה מבוססת באמצעות ההקשרים שאוחזרו. לדוגמה, ראו יצירה.
המאמרים הבאים
מידע על ייבוא קובצי RAG זמין במאמר Method: ragFiles.import.