
使用 xParse LangChain 插件,为 RAG、Agent、信息提取等场景的提供高效文档解析。
LangChain 是一个用于构建基于大语言模型应用的框架,提供了丰富的工具和组件,帮助开发者快速构建 RAG(检索增强生成)、Agent、信息提取等应用。
xParse 是一个端到端文档处理 AI 基础设施,致力于将非结构化文档高效转化为可查询、可分析的数据资产。
langchain-xparse 是 xParse 与 LangChain 的集成插件,通过 XParseLoader 将 xParse Pipeline API 的强大文档解析能力无缝集成到 LangChain 应用中,让您轻松实现文档解析、分块、向量化等功能。
从 PyPI 安装:
pip install langchain-xparse在使用 XParseLoader 之前,需要配置 xParse 的 API 凭证。您可以通过以下两种方式配置:
方式一:环境变量(推荐)
在终端中设置环境变量:
export XPARSE_APP_ID="your-app-id"
export XPARSE_SECRET_CODE="your-secret-code"或在 Python 代码中设置:
import os
os.environ["XPARSE_APP_ID"] = "your-app-id"
os.environ["XPARSE_SECRET_CODE"] = "your-secret-code"方式二:直接传参
在创建 XParseLoader 时直接传入凭证:
from langchain_xparse import XParseLoader
loader = XParseLoader(
file_path="doc.pdf",
app_id="your-app-id",
secret_code="your-secret-code",
)提示:请前往 TextIn 工作台(https://www.textin.com/console/dashboard/setting) 获取 API Key。
最简单的使用方式,仅解析文档内容:
from langchain_xparse import XParseLoader
# 创建加载器
loader = XParseLoader(file_path="example.pdf")
# 加载文档
docs = loader.load()
# 查看解析结果
print(docs[0].page_content[:200]) # 文档内容(Markdown 格式)
print(docs[0].metadata) # 元数据:source, category, element_id, filename, page_number, ...对于大文件或多个文件,使用懒加载可以节省内存:
from langchain_xparse import XParseLoader
loader = XParseLoader(file_path="large_document.pdf")
# 懒加载,逐个返回文档
for doc in loader.lazy_load():
print(f"页码: {doc.metadata.get('page_number')}")
print(f"内容: {doc.page_content[:100]}...")
# 处理文档支持异步加载,适合异步应用场景:
import asyncio
from langchain_xparse import XParseLoader
async def load_documents():
loader = XParseLoader(file_path="example.pdf")
async for doc in loader.alazy_load():
print(doc.page_content[:100])
# 处理文档
# 运行异步函数
asyncio.run(load_documents())使用便捷参数快速配置解析和分块:
import asyncio
from langchain_xparse import XParseLoader
async def load_documents():
loader = XParseLoader(file_path="example.pdf")
async for doc in loader.alazy_load():
print(doc.page_content[:100])
# 处理文档
# 运行异步函数
asyncio.run(load_documents())一步完成解析、分块和向量化:
from langchain_xparse import XParseLoader
loader = XParseLoader(
file_path="doc.pdf",
parse_provider="textin",
chunk_strategy="basic",
chunk_max_characters=1000,
embed_provider="qwen",
embed_model_name="text-embedding-v4",
)
docs = loader.load()
# docs 中的每个文档都包含向量(embedding)对于需要更精细控制的场景,可以使用自定义 stages:
from langchain_xparse import XParseLoader
loader = XParseLoader(
file_path="doc.pdf",
stages=[
{"type": "parse", "config": {"provider": "textin"}},
{"type": "chunk", "config": {"strategy": "by_page", "max_characters": 800}},
],
)
docs = loader.load()支持同时处理多个文件:
from langchain_xparse import XParseLoader
loader = XParseLoader(file_path=["a.pdf", "b.pdf", "c.pdf"])
for doc in loader.lazy_load():
print(f"文件: {doc.metadata.get('source')}")
print(f"内容预览: {doc.page_content[:50]}...")支持直接传入文件对象:
from langchain_xparse import XParseLoader
with open("doc.pdf", "rb") as f:
loader = XParseLoader(file=f, metadata_filename="doc.pdf")
docs = loader.load()注意:当传入文件对象时,必须设置 metadata_filename 参数。
A:xParse API 凭证:请前往 TextIn 工作台 - 账号与开发者信息 获取 XPARSE_APP_ID 和 XPARSE_SECRET_CODE,详细获取方式请参考 [API Key 文档](/pipeline/api-key)。
A: xParse 支持以下文件格式:
A: 根据文档类型和需求选择合适的解析引擎:
A: 根据文档类型和用途选择:
A: XParseLoader 返回的是 LangChain 的 Document 对象,包含:
A: 支持。使用 alazy_load() 方法进行异步加载:
async for doc in loader.alazy_load():
# 处理文档A: 可以。传入文件路径列表即可:
loader = XParseLoader(file_path=["file1.pdf", "file2.pdf"])A: 使用 stages 参数进行高级配置:
loader = XParseLoader(
file_path="doc.pdf",
stages=[
{"type": "parse", "config": {"provider": "textin", "parse_mode": "auto"}},
{"type": "chunk", "config": {"strategy": "by_title", "max_characters": 800}},
],
)更多配置选项请参考 Pipeline API 文档(https://docs.textin.com/api-reference/endpoint/pipeline)。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。