使用 LLM 解析器

本页面介绍了如何使用 Vertex AI RAG 引擎 LLM 解析器。

简介

Vertex AI RAG 引擎使用 LLM 进行文档解析。LLM 能够以以下方式有效处理文档:

  • 理解和解读各种格式的语义内容。
  • 检索相关文档块。
  • 从文档中提取有意义的信息。
  • 识别文档中的相关部分。
  • 准确总结复杂文档。
  • 理解图片并与之互动。
  • 从图表和示意图中提取数据。
  • 描述图片。
  • 了解图表与文字之间的关系。
  • 提供更符合上下文且更准确的回答。

Vertex AI RAG 引擎的功能可显著提高生成的回答的质量。

支持的模型

LLM 解析器仅支持 Gemini 模型。如果您已启用 RAG API,则可以访问受支持的模型。如需查看支持的生成模型列表,请参阅生成模型

支持的文件类型

LLM 解析器支持以下文件类型:

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

价格和配额

如需了解价格详情,请参阅 Vertex AI 价格

如需了解适用的配额,请参阅请求配额

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 个 token,而提示还需要 100 个额外的 token。平均输出为 100 个 token。

您的配置中使用了 Gemini 2.0 Flash-Lite 进行解析,其费用为每 100 万个输入词元 0.075 美元,每 100 万个输出文本词元 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:可选:作业每分钟可向 Vertex AI 模型发出的请求数量上限。如需了解详情,请参阅 Vertex AI 上的生成式 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

如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI 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 Vertex AI 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,
  )

提示

Vertex AI RAG Engine LLM 解析器使用预定义且经过调优的提示来解析文档。不过,如果您有不适合使用通用提示的专业文档,则可以在使用 API 时指定自定义解析提示。当您请求 Gemini 解析文档时,Vertex AI RAG Engine 会在默认系统提示中附加一个提示。

提示模板表

为了帮助您解析文档,下表提供了一个提示模板示例,可指导您创建 Vertex AI RAG 引擎可用于解析文档的提示:

说明 模板声明 示例
指定角色。 您是 [指定角色,例如事实数据提取器或信息检索器]。 您是信息检索者。
指定任务。 从 [指定文档来源,例如文档、文本、文章、图片、表格] 中提取 [指定信息类型,例如事实陈述、关键数据或具体细节]。 从 sample.txt 文件中提取关键数据。
说明您希望 LLM 如何根据您的文档生成输出。 以 [指定输出格式,例如结构化列表或文本格式] 呈现每个事实,并链接到其 [指定来源位置,例如网页、段落、表格或行]。 以结构化列表的形式呈现每个事实,并链接到其示例页面。
突出显示 LLM 应关注的内容。 准确提取 [指定关键数据类型,例如名称、日期、数字、属性或关系]。 提取姓名和日期。
突出显示您希望 LLM 避免的内容。 [列出要避免的操作,例如分析、解读、总结、推理或发表意见]。仅提取文档中明确说明的内容。 不提供意见。仅提取文档中明确说明的内容。

常规准则

请遵循以下准则来撰写要发送给 LLM 解析器的提示。

  • 具体:明确定义任务和要提取的信息类型。
  • 详细:提供有关输出格式、来源信息和不同数据结构处理的详细说明。
  • 限制:明确说明 AI 不应执行的操作,例如分析或解读。
  • 清晰:使用清晰且具有指导性的语言。
  • 结构化:使用编号列表或项目符号以逻辑方式整理说明,以便于阅读。

解析质量分析

下表列出了客户使用 Vertex AI RAG 引擎运行的各种场景的结果。反馈表明,LLM 解析器可提高文档解析质量。

场景 结果
解析幻灯片中的信息并关联各个部分 LLM 解析器成功将一个幻灯片上的部分标题与后续幻灯片上显示的详细信息相关联。
了解并提取表格中的信息 LLM 解析器正确关联了大型表格中的列和标题,以回答特定问题。
解读流程图 LLM 解析器能够遵循流程图的逻辑,并提取正确的操作序列和相应信息。
从图表中提取数据 LLM 解析器可以解读不同类型的图表(例如折线图),并根据查询提取特定的数据点。
捕获标题与文本之间的关系 在提示的引导下,LLM 解析器会关注标题结构,并能检索与特定主题或部分相关的所有信息。
通过提示工程克服嵌入限制的潜力 虽然最初在某些使用情形中受到嵌入模型限制的阻碍,但其他实验表明,精心设计的 LLM 解析器提示可能可以缓解这些问题,即使嵌入模型单独进行语义理解有困难,也能检索到正确的信息。

LLM 解析器可增强 LLM 理解和推理文档中上下文的能力,从而生成更准确、更全面的回答。

检索查询

在您输入发送到生成式 AI 模型的提示后,RAG 中的检索组件会搜索其知识库,以查找与查询相关的信息。如需查看根据查询文本从语料库中检索 RAG 文件的示例,请参阅检索查询

后续步骤