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

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

מבוא

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

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

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

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

המודלים הבאים תומכים במנתח ה-LLM של RAG Engine:

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

מנתח ה-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 ל-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 יכול להשתמש בהם כדי לנתח את המסמכים שלכם:

הוראות הצהרת תבנית דוגמה
מציינים תפקיד. אתה [Specify the role, such as a factual data extractor or an information retriever]. אתה מאחזר מידע.
ציינו את המשימה. תחלץ [ציין את סוג המידע, כמו הצהרות עובדתיות, נתונים מרכזיים או פרטים ספציפיים] מתוך [ציין את מקור המסמך, כמו מסמך, טקסט, מאמר, תמונה, טבלה]. תחלץ נתונים חשובים מהקובץ sample.txt.
צריך להסביר איך רוצים שה-LLM ייצור את הפלט בהתאם למסמכים. הצג כל עובדה ב[ציין את פורמט הפלט, כמו רשימה מובנית או פורמט טקסט], וקשר אותה אל [ציין את מיקום המקור, כמו דף, פסקה, טבלה או שורה]. הציגו כל עובדה ברשימה מובנית, וקשרו לדף לדוגמה שלה.
הדגישו במה ה-LLM צריך להתמקד. חלץ את [ציין את סוגי הנתונים העיקריים, כמו שמות, תאריכים, מספרים, מאפיינים או קשרים] בדיוק כמו שהם מופיעים. חילוץ שמות ותאריכים.
מדגישים את מה שרוצים שה-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 מקורפוס זמין במאמר Method: ragFiles.get.

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