בדף הזה נסביר על כלי הניתוח של פריסת Document AI ואיך משתמשים בו עם RAG Engine.
Document AI
Document AI היא פלטפורמה לעיבוד מסמכים ולהבנת מסמכים שמקבלת נתונים לא מובְנים ממסמכים ומשנה אותם לשדות שמתאימים לאחסון במסד נתונים. נתונים מובְנים מאפשרים לכם להבין, לנתח ולצרוך את הנתונים.
Document AI מבוסס על מוצרים ב-Gemini Enterprise Agent Platform עם AI גנרטיבי, כדי לעזור לכם ליצור אפליקציות לעיבוד מסמכים מבוססות-ענן, מקצה לקצה וניתנות להרחבה. לא נדרשת מומחיות מיוחדת בתחום למידת המכונה כדי להשתמש במוצרים האלה.
מנתח הפריסה של Document AI
כלי הניתוח של הפריסה מחלץ רכיבי תוכן מהמסמך, כמו טקסט, טבלאות ורשימות. לאחר מכן, מנתח הפריסה יוצר נתחים מודעים-הקשר שמקלים על אחזור מידע ב-AI גנרטיבי ובאפליקציות לגילוי מידע.
כשמשתמשים בו לאחזור ולגנרציה של LLM, הפריסה של המסמך נלקחת בחשבון במהלך תהליך החלוקה לחלקים, מה שמשפר את הלכידות הסמנטית ומפחית את הרעש בתוכן. כל הטקסט בחלק מגיע מאותו רכיב פריסה, כמו כותרת, כותרת משנה או רשימה.
במאמר זיהוי פריסה לפי סוג קובץ מפורטים סוגי הקבצים שמשמשים לזיהוי פריסה.
שימוש במנתח הפריסה ב-RAG Engine
כדי להשתמש בכלי לניתוח פריסות ב-RAG Engine, צריך ליצור קורפוס. כדי ליצור קורפוס:
נכנסים לדף RAG Engine במסוף Google Cloud .
לוחצים על יצירת מאגר.
בשדה אזור, בוחרים את האזור שלכם.
בשדה שם הקורפוס, מזינים את שם הקורפוס.
כותבים תיאור בשדה 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 (מודל הטמעה), בוחרים את מודל ההטמעה.
בקטע Vector database, בוחרים את מסד הנתונים.
לוחצים על יצירת מאגר מידע.
מגבלות
ImportRagFiles API תומך בכלי לניתוח פריסות, אבל יש מגבלות מסוימות:
- מזינים את הגודל המקסימלי של הקובץ, 20MB, לכל סוגי הקבצים.
- כל קובץ PDF יכול להכיל עד 500 עמודים.
השימוש כפוף למכסות ולתמחור של Document AI.
הפעלת Document AI API
צריך להפעיל את Document AI API בפרויקט. למידע נוסף על הפעלת ממשקי API, ראו את התיעוד של Service Usage.
מפעילים את Document AI API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
הפעלת כלי לניתוח פריסות
כדי להפעיל את הכלי Layout Parser, פועלים לפי השלבים הבאים:
יוצרים כלי לניתוח פריסות לפי ההוראות במאמר יצירה וניהול של מעבדים.
שם סוג המעבד הוא
LAYOUT_PARSER_PROCESSOR.כדי להפעיל את הכלי 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)
התחזית יוצרת תשובה מבוססת על ההקשרים שאוחזרו. לדוגמה, ראו יצירה.
המאמרים הבאים
מידע על ייבוא קובצי RAG זמין במאמר Method: ragFiles.import