שימוש בכלי לניתוח מודלים גדולים של שפה

בדף הזה מוסבר איך להשתמש במנוע RAG במנתח LLM של Gemini Enterprise Agent Platform.

מבוא

מנוע RAG משתמש ב-LLM לניתוח מסמכים. מודלים גדולים של שפה (LLM) יכולים לעבד מסמכים ביעילות בדרכים הבאות:

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

היכולות של מנוע RAG משפרות באופן משמעותי את איכות התשובות שנוצרות.

מודלים נתמכים

המודלים הבאים תומכים בניתוח של מודל שפה גדול (LLM) של מנוע RAG:

סוגי קבצים נתמכים

סוגי הקבצים הבאים נתמכים על ידי מנתח ה-LLM:

  • application/pdf
  • image/png
  • image/jpeg
  • image/webp
  • image/heic
  • image/heif

תמחור ומכסות

פרטים על התמחור זמינים במאמר בנושא תמחור של Gemini Enterprise Agent Platform.

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

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

cost = number_of_document_files * average_pages_per_document *
(average_input_tokens * input_token_pricing_of_selected_model +
average_output_tokens * output_token_pricing_of_selected_model)

לדוגמה, יש לכם 1,000 קובצי PDF, ולכל קובץ PDF יש 50 דפים. בממוצע, כל עמוד PDF מכיל 500 טוקנים, ואנחנו צריכים עוד 100 טוקנים כדי ליצור הנחיה. הפלט הממוצע הוא 100 טוקנים.

cost = 1,000 * 50 * (600 * 0.075 / 1M + 100 * 0.3 / 1M) = 3.75

העלות היא 3.75$.

ייבוא קבצים עם LlmParser מופעל

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

  • PROJECT_ID: המזהה של פרויקט Google Cloud .

  • LOCATION: האזור שבו הבקשה שלכם מעובדת.

  • RAG_CORPUS_RESOURCE: מזהה הקורפוס.

  • GCS_URI: ה-URI של Cloud Storage של הקבצים שרוצים לייבא.

  • GOOGLE_DRIVE_URI: ה-URI של הקבצים ב-Google Drive שרוצים לייבא.

  • MODEL_NAME: שם המשאב של המודל שמשמש לניתוח.

    פורמט: projects/{project_id}/locations/{location}/publishers/google/models/{model_id}

  • CUSTOM_PARSING_PROMPT: אופציונלי: הנחיה מותאמת אישית שהלקוח מגדיר כדי שמנתח ה-LLM ישתמש בה לניתוח מסמכים.

  • MAX_PARSING_REQUESTS_PER_MIN: אופציונלי: המספר המקסימלי של בקשות שהעבודה יכולה לשלוח למודל של Agent Platform בדקה. מידע נוסף זמין במאמר בנושא מגבלות על שיעורי בקשות בפלטפורמת Agent Platform של AI גנרטיבי ובדף Quotas & System Limits של הפרויקט, שבו אפשר להגדיר ערך מתאים.

REST

  curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE/ragFiles:import" -d '{
    "import_rag_files_config": {
      "gcs_source": {
        "uris":  ["GCS_URI", "GOOGLE_DRIVE_URI"]
      },
      "rag_file_chunking_config": {
        "chunk_size": 512,
        "chunk_overlap": 102
      },
      "rag_file_parsing_config": {
        "llm_parser": {
          "model_name": "MODEL_NAME",
          "custom_parsing_prompt": "CUSTOM_PARSING_PROMPT"
          "max_parsing_requests_per_min": "MAX_PARSING_REQUESTS_PER_MIN"
        }
      }
    }
  }'

Python

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

  from vertexai import rag
  import vertexai

  PROJECT_ID = "PROJECT_ID"
  CORPUS_NAME = "RAG_CORPUS_RESOURCE"
  LOCATION = "LOCATION"
  MODEL_ID = "MODEL_ID"
  MODEL_NAME = "projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}"
  MAX_PARSING_REQUESTS_PER_MIN = MAX_PARSING_REQUESTS_PER_MIN # Optional
  CUSTOM_PARSING_PROMPT = "Your custom prompt" # Optional

  PATHS = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]

  # Initialize Agent Platform API once per session
  vertexai.init(project={PROJECT_ID}, location={LOCATION})

  transformation_config = rag.TransformationConfig(
      chunking_config=rag.ChunkingConfig(
          chunk_size=1024, # Optional
          chunk_overlap=200, # Optional
      ),
  )

  llm_parser_config = rag.LlmParserConfig(
      model_name = MODEL_NAME,
      max_parsing_requests_per_min=MAX_PARSING_REQUESTS_PER_MIN, # Optional
      custom_parsing_prompt=CUSTOM_PARSING_PROMPT, # Optional
  )

  rag.import_files(
      CORPUS_NAME,
      PATHS,
      llm_parser=llm_parser_config,
      transformation_config=transformation_config,
  )

הנחיות

מנתח ה-LLM של RAG Engine ב-Gemini Enterprise Agent Platform משתמש בהנחיה מוגדרת מראש ומכווננת לניתוח מסמכים. עם זאת, אם יש לכם מסמכים מיוחדים שאולי לא מתאימים להנחיה כללית, אתם יכולים לציין את הנחיית הניתוח המותאמת אישית שלכם כשאתם משתמשים ב-API. כשמבקשים מ-Gemini לנתח את המסמכים, אפליקציית RAG Engine מוסיפה הנחיה להנחיית המערכת שמוגדרת כברירת מחדל.

טבלה של תבניות לפרומפטים

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

הוראה הצהרת תבנית דוגמה
מציינים את התפקיד. אתה [מציין את התפקיד, כמו חילוץ נתונים עובדתיים או אחזור מידע]. אתה מאחזר מידע.
מציינים את המשימה. תחלץ [ציין את סוג המידע, כמו הצהרות עובדתיות, נתונים מרכזיים או פרטים ספציפיים] מתוך [ציין את מקור המסמך, כמו מסמך, טקסט, מאמר, תמונה, טבלה]. לחלץ נתונים מרכזיים מקובץ sample.txt.
צריך להסביר איך רוצים שמודל ה-LLM ייצור את הפלט בהתאם למסמכים. תציג כל עובדה ב[Specify the output format, such as a structured list or text format], ותקשר אותה ל[Specify the source location, such as a page, paragraph, table, or row]. מציגים כל עובדה ברשימה מובנית ומקשרים לדף הדוגמה שלה.
הדגישו במה מודל ה-LLM צריך להתמקד. תחלץ [Specify the key data types, such as the names, dates, numbers, attributes, or relationships] exactly as stated. חילוץ שמות ותאריכים.
מדגישים את מה שלא רוצים שה-LLM יעשה. [List the actions to avoid, such as analysis, interpretation, summarizing, inferring, or giving opinions]. לשלוף רק את מה שכתוב במפורש במסמך. לא להביע דעות. תחלץ רק את מה שכתוב במפורש במסמך.

הנחיות כלליות

כדי לכתוב את ההנחיה לשליחה למנתח LLM, צריך לפעול לפי ההנחיות הבאות.

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

ניתוח איכות של הניתוח

בטבלה הזו מפורטות תוצאות של תרחישים שהלקוחות הריצו באמצעות RAG Engine ב-Gemini Enterprise Agent Platform. המשוב מראה שהכלי לניתוח מסמכים מבוסס-LLM משפר את האיכות של ניתוח מסמכים.

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

מנתח ה-LLM משפר את היכולת של ה-LLM להבין את ההקשר במסמך ולחשוב עליו, וכך הוא יכול לספק תשובות מדויקות ומקיפות יותר.

שאילתת אחזור

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

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