使用 LLM 解析器

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

简介

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

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

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

支持的模型

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 个令牌,我们还需要额外的 100 个令牌来显示提示。平均输出为 100 个令牌。

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.preview 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 文件的示例,请参阅检索查询

后续步骤