Skip to main content
LangChain 是一个用于构建基于大语言模型应用的框架,提供了丰富的工具和组件,帮助开发者快速构建 RAG(检索增强生成)、Agent、信息提取等应用。 xParse 是一个端到端文档处理 AI 基础设施,致力于将非结构化文档高效转化为可查询、可分析的数据资产。 langchain-xparse 是 xParse 与 LangChain 的集成插件,通过 XParseLoader 将 xParse Pipeline API 的强大文档解析能力无缝集成到 LangChain 应用中,让您轻松实现文档解析、分块、向量化等功能。

xParse LangChain 插件亮点

  • 强大的文档处理能力:支持 PDF、Word、Excel、PPT、图片等多种格式,准确提取标题、公式、图表、表格等元素,保留文档的语义结构
  • 灵活的解析配置:支持 TextIn、MinerU、PaddleOCR 等多种解析引擎,可根据文档类型灵活选择
  • 便捷的集成方式:提供 XParseLoader 类,与 LangChain 的文档加载器接口完全兼容,支持同步、异步、懒加载等多种加载方式
  • 完整的 Pipeline 支持:支持 parse、chunk、embed 三个阶段,可单独使用或组合使用,满足不同场景需求
  • 丰富的元数据:解析结果包含丰富的元数据信息,如页码、元素类型、坐标等,便于后续处理和分析

安装与配置

安装

从 PyPI 安装:

配置 API 凭证

在使用 XParseLoader 之前,需要配置 xParse 的 API 凭证。您可以通过以下两种方式配置:

方式一:环境变量(推荐)

在终端中设置环境变量:
或在 Python 代码中设置:

方式二:直接传参

在创建 XParseLoader 时直接传入凭证:
提示:请前往 TextIn 工作台 - 账号与开发者信息 获取 API Key,详细获取方式请参考 API Key 文档

基本使用方法

基础解析(parse only)

最简单的使用方式,仅解析文档内容:

懒加载(lazy load)

对于大文件或多个文件,使用懒加载可以节省内存:

异步加载(async)

支持异步加载,适合异步应用场景:

便捷参数(parse + chunk)

使用便捷参数快速配置解析和分块:

解析 + 分块 + 向量化

一步完成解析、分块和向量化:

自定义 stages(高级用法)

对于需要更精细控制的场景,可以使用自定义 stages:

多文件处理

支持同时处理多个文件:

文件对象处理

支持直接传入文件对象:
注意:当传入文件对象时,必须设置 metadata_filename 参数。

常见问题

Q: 如何获取 API Key?

A: xParse API 凭证:请前往 TextIn 工作台 - 账号与开发者信息 获取 XPARSE_APP_IDXPARSE_SECRET_CODE,详细获取方式请参考 API Key 文档

Q: xParse 支持哪些文件格式?

A: xParse 支持以下文件格式:
  • 文档格式:PDF、Word(.docx)、Excel(.xlsx)、PPT(.pptx)
  • 图片格式:JPG、PNG、BMP、TIFF 等常见图片格式

Q: 如何选择合适的解析引擎?

A: 根据文档类型和需求选择合适的解析引擎:
  • textin:适合大多数场景,速度和准确性俱佳(推荐)
  • textin-lite:适合纯文本、表格图片、电子档 PDF 等场景,速度更快,价格更低
  • mineru:适合学术论文等场景,表现优异
  • paddle:适合多语言和复杂文档场景(如 PPT),表现优异

Q: 分块策略(chunk_strategy)如何选择?

A: 根据文档类型和用途选择:
  • basic:基础分块,按固定字符数切分,适合简单文档
  • by_title:按标题分块,保留文档的层级结构,适合结构化文档(推荐)
  • by_page:按页分块,适合页面独立性强的文档

Q: 解析后的结果格式是什么?

A: XParseLoader 返回的是 LangChain 的 Document 对象,包含:
  • page_content:文档内容(Markdown 格式)
  • metadata:元数据信息,包括:
    • source:文件路径或标识
    • filename:文件名
    • page_number:页码
    • category:元素类型(如 title、paragraph、table 等)
    • element_id:元素 ID
    • 其他解析相关的元数据

Q: 支持异步处理吗?

A: 支持。使用 alazy_load() 方法进行异步加载:

Q: 可以处理多个文件吗?

A: 可以。传入文件路径列表即可:

Q: 如何自定义解析配置?

A: 使用 stages 参数进行高级配置:
更多配置选项请参考 Pipeline API 文档

相关资源