解析

在本节中,我们将介绍如何解析原始文档。

解析原始文档是一个关键步骤。 因为如果原始文档解析不好,RAG就无法得到良好优化。

仅需使用YAML文件,您就能轻松调用各类文档加载器。 解析结果将按照AutoRAG使用的数据格式进行保存。

概述

示例解析流程如下所示。

from autorag.parser import Parser

parser = Parser(data_path_glob="your/data/path/*")
parser.start_parsing("your/path/to/parse_config.yaml")

YAML文件设置指南

1. 使用所有文件

可用的解析模块如下所示。

  • Langchain_parse (parse_method: directory)

  • Langchain解析 (解析方法: unstructured)

  • Langchain解析 (解析方法: upstagedocumentparse)

  • Llama解析

  • Clova

这是一个关于完整模块的YAML文件示例,其中file_type: all_files表示所有文件类型。

modules:
  - module_type: langchain_parse
    file_type: all_files
    parse_method: [ directory, unstructured, upstagedocumentparse ]
  - module_type: clova
    file_type: all_files
    table_detection: true
  - module_type: llamaparse
    file_type: all_files
    result_type: markdown
    language: ko
    use_vendor_multimodal_model: true
    vendor_multimodal_model_name: openai-gpt-4o-mini

2. 使用特定文件

六种文件类型可以指定直接解析方法。 每种文件类型只能指定一个解析方法。

如果您位于源文档文件夹中且未指定解析方法,系统将根据文件扩展名使用默认方法。 例如,当文件夹中存在csv文件且未指定parse_method时,该csv文件将按默认方法以csv格式进行解析。

默认解析方法

  • PDF: pdfminer

  • CSV: csv

  • Markdown格式:非结构化markdown

  • HTML: bshtml

  • XML: 非结构化xml

📌JSON 不会默认生效,因为您必须将 jq_schema 指定为内容的关键值。

这是一个关于特定文件类型的完整模块的YAML文件示例。

modules:
  # PDF
  - module_type: langchain_parse
    file_type: pdf
    parse_method: pdfminer
  # CSV
  - module_type: langchain_parse
    file_type: csv
    parse_method: csv
  # JSON
  - module_type: langchain_parse
    file_type: json
    parse_method: json
    jq_schema: .content
  # Markdown
  - module_type: langchain_parse
    file_type: md
    parse_method: unstructuredmarkdown
  # HTML
  - module_type: langchain_parse
    file_type: html
    parse_method: bshtml
  # XML
  - module_type: langchain_parse
    file_type: xml
    parse_method: unstructuredxml

运行解析管道

1. 设置解析器实例

from autorag.parser import Parser

parser = Parser(data_path_glob="your/data/path/*")

📌 参数: data_path_glob

解析器实例需要data_path_glob参数。 该参数用于指定待解析文档的路径。

仅支持通配符模式。

您可以使用通配符 * 来指定多个文件。

您可以指定文件扩展名如*.pdf来限定特定文件类型。

想要指定项目文件夹吗?

您可以通过--project_dir选项或project_dir参数指定项目目录。

2. 设置YAML文件

以下是使用langchain_parse模块的示例。

modules:
  - module_type: langchain_parse
    file_type: pdf
    parse_method: pdfminer

3. 开始解析

使用start_parsing函数开始解析。

parser.start_parsing("your/path/to/parse_config.yaml")

4. 查看结果

如果设置了project_dir参数,您可以在项目目录中查看结果。 如果未设置,则可以在当前目录中查看结果。

如果解析成功完成,将在project_dir目录中创建以下三种类型的文件。

  1. 解析结果

  2. 使用的YAML文件

  3. 摘要文件

使用所有文件

每次只能使用一种解析方法。

解析结果将保存为parsed_result.parquet

如需使用两种all_files解析方法,您需要使用两个不同的YAML文件分别运行两次解析流程。

最后,在summary.csv文件中,您可以查看解析结果的相关信息,例如使用了哪种解析方法进行处理。

使用特定文件类型

例如,如果您需要解析的文件类型是PDF、XML和JSON, 您的项目目录中将会包含pdf.parquetxml.parquetjson.parquet文件。 所有这些文件合并后的结果将生成parsed_result.parquet

输出列

  • texts: 从文档中解析出的文本内容。

  • path: 文档路径。

  • pages: 文档中的页数。如果按页解析则包含页码,否则为-1。

    • 按页面解析的模块:[ clova, table_hybrid_parse ]

    • 不按页面解析的模块:[ langchain_parse, llama_parse ]

  • last_modified_datetime: 文档的最后修改时间。

支持的解析模块

📌 您可以在此处查看我们所有的解析模块 here