LLM パーサーを使用する

このページでは、Gemini Enterprise Agent Platform LLM パーサーで RAG Engine を使用する方法について説明します。

はじめに

RAG Engine は、ドキュメント解析に LLM を使用します。LLM は、次のようにドキュメントを効果的に処理できます。

  • さまざまな形式のセマンティック コンテンツを理解して解釈します。
  • 関連するドキュメント チャンクを取得します。
  • ドキュメントから有意な情報を抽出します。
  • ドキュメント内の関連するセクションを特定します。
  • 複雑なドキュメントを正確に要約します。
  • ビジュアルを理解して操作します。
  • グラフや図からデータを抽出します。
  • イメージの説明を入力します。
  • グラフとテキストの関係を理解します。
  • よりコンテキストに即した正確なレスポンスを実現します。

RAG Engine の機能により、生成される回答の品質が大幅に向上します。

サポートされているモデル

次のモデルは、RAG Engine LLM パーサーをサポートしています。

サポートされているファイル形式

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 個のトークンです。

構成でパース用に Gemini 2.0 Flash-Lite が使用されます。100 万個の入力トークンに対しては $0.075、出力テキスト トークンに対しては $0.3 の費用が発生します。

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

費用は $3.75 です。

LlmParser を有効にしてファイルをインポートする

コードサンプルで使用されている次の変数の値を置き換えます。

  • PROJECT_ID: Google Cloud プロジェクトの ID。

  • LOCATION: リクエストが処理されるリージョン。

  • RAG_CORPUS_RESOURCE: コーパスの ID。

  • GCS_URI: インポートするファイルの Cloud Storage URI。

  • GOOGLE_DRIVE_URI: インポートするファイル の Google ドライブ URI。

  • MODEL_NAME: 解析に使用されるモデルのリソース名 。

    形式: projects/{project_id}/locations/{location}/publishers/google/models/{model_id}

  • CUSTOM_PARSING_PROMPT: 省略可: LLM パーサーがドキュメントの解析に使用するカスタム プロンプト。

  • MAX_PARSING_REQUESTS_PER_MIN: 省略可。ジョブが Agent Platform モデルに対して 1 分あたりに実行できるリクエストの最大数。詳細については、Agent Platform の生成 AI のレート上限と、プロジェクトの割り当てとシステムの上限のページで適切な値を設定してください。

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 for Python をインストールまたは更新する方法については、Agent Platform SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。

  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,
  )

プロンプト

Gemini Enterprise Agent Platform LLM パーサーの RAG Engine は、事前定義されチューニングされたプロンプトを使用してドキュメントを解析します。ただし、一般的なプロンプトに適さない特殊なドキュメントがある場合は、API の使用時にカスタム解析プロンプトを指定できます。ドキュメントの解析を Gemini にリクエストすると、RAG Engine はデフォルトのシステム プロンプトにプロンプトを追加します。

プロンプト テンプレートの表

ドキュメントの解析に役立つように、次の表に、RAG Engine がドキュメントの解析に使用できるプロンプトの作成をガイドするプロンプト テンプレートの例を示します。

手順 テンプレート ステートメント
ロールを指定します。 あなたは [ロール(事実に関するデータの抽出担当者、情報検索の担当者など)を指定します] です。 あなたは情報検索の担当者です。
タスクを指定します。 [ドキュメントのソース(ドキュメント、テキスト、記事、画像、表など)を指定] から [情報の種類(事実の記述、主要なデータ、具体的な詳細など)を指定] を抽出します。 sample.txt ファイルからキーデータを抽出します。
ドキュメントに応じて LLM が出力を生成する方法を説明します。 各事実を [出力形式を指定(構造化リスト、テキスト形式など)] で表示し、[出力元の場所を指定(ページ、段落、表、行など)] にリンクします。 各事実を構造化されたリストで提示し、サンプルページへのリンクを設定します。
LLM の焦点となるべき内容をハイライトします。 [名前、日付、数値、属性、関係など、主要なデータ型を指定] を指定されたとおりに抽出します。 名前と日付を抽出します。
LLM で回避する内容をハイライト表示します。 [分析、解釈、要約、推測、意見の表明など、避けるべき行動を列挙します]。ドキュメントに明記されている内容のみを抽出します。 意見を述べないでください。ドキュメントに明記されている内容のみを抽出します。

一般的なガイドライン

LLM パーサーに送信するプロンプトを記述する際は、次のガイドラインに従ってください。

  • 具体的: タスクと抽出する情報の種類を明確に定義します。
  • 詳細: 出力形式、ソースの帰属、さまざまなデータ構造の処理について詳細な手順を記載します。
  • 制約: 分析や解釈など、AI が行わないことを明示的に指定します。
  • 明確: 明確で指示的な表現を使用します。
  • 構造化: 番号付きリストや箇条書きを使用して手順を論理的に整理し、読みやすくします。

解析品質の分析

次の表に、Gemini Enterprise Agent Platform で RAG Engine を使用してお客様が実行したシナリオの結果を示します。フィードバックは、LLM パーサーがドキュメントの解析品質を向上させていることを示しています。

シナリオ 結果
スライド間での情報の解析とセクションのリンク LLM パーサーが、1 つのスライドのセクション タイトルを、 後続のスライドで表示される詳細情報に正常にリンクしました。
テーブルからの情報の理解と抽出 LLM パーサーは、特定の質問に回答するために、大規模な表内の列とヘッダーを正しく関連付けました。 特定の質問に回答するために、大規模な表内の列とヘッダーを正しく関連付けました。
フローチャートの解釈 LLM パーサーはフローチャート内のロジックに沿って、正しい一連のアクションと対応する情報を抽出できました。
グラフからのデータの抽出 LLM パーサーは、折れ線 グラフなどのさまざまな種類のグラフを解釈し、クエリに基づいて特定のデータポイントを抽出できます。
見出しとテキストの関係をキャプチャする LLM パーサーは、プロンプトに基づいて見出し 構造に注意を払い、特定のトピックやセクションに関連するすべての情報を取得できました。
プロンプト エンジニアリングでエンベディングの制限を克服できる可能性 一部のユースケースでは、エンベディング モデルの制限により当初は妨げられましたが、追加のテストにより、適切に作成された LLM パーサー プロンプトを使用すると、エンベディング モデル単独では意味の理解が困難な場合でも、これらの問題を軽減し、正しい情報を取得できることが示されました。

LLM パーサーは、ドキュメント内のコンテキストを理解して推論する LLM の能力を強化し、より正確で包括的なレスポンスを生成します。

取得クエリ

生成 AI モデルに送信されるプロンプトを入力すると、RAG 検索の検索コンポーネントがナレッジベースを検索し、クエリに関連する情報を探します。コーパスから RAG ファイルを取得する方法の詳細については、メソッド: ragFiles.get をご覧ください。

次のステップ