🔥🔥🔥一文搞懂Langchain Document Loader(二)

Transform Loaders:将数据从特定格式加载到文档格式

转换加载器(Transform Loaders:)就像上文提到的的TextLoader一样 - 它们将输入格式转换为我们的文档格式。LangChain中有越来越多的转换加载器,包括但不限于以下几种:

  • CSV
  • Email
  • HTML
  • Markdown
  • Microsoft Word/PowerPoint
  • Notion (raw files or through API integration)
  • Reddit
  • PDF

许多这些加载器的基础是Unstructured Python库。这个库非常擅长将各种文件类型转换为我们文档所需的文本数据。

无结构分区(Unstructured Partitions)

Unstructured库的核心概念是将文档划分为元素。当传递一个文件时,库将读取源文档,将其分割为多个部分,对这些部分进行分类,然后提取每个部分的文本。在划分之后,返回一个文档元素列表。

以下是直接使用库时的例子:

python 复制代码
from unstructured.partition.auto import partition
elements = partition(filename="dashboard.html")

该库在底层使用了一些工具来自动检测文件类型,并根据文件类型正确地进行划分。

例子:加载Microsoft Word文档

让我们看一下加载Microsoft Word文档的过程是什么样的。

这是我们的样例Word文档:

现在我们可以使用LangChain的UnstructuredWordDocumentLoader来划分这个文档。

python 复制代码
from langchain.document_loaders import UnstructuredWordDocumentLoader

# use mode="elements" to return each Element as a Document
# otherwise it defaults the "single" option which returns a single document
loader = UnstructuredWordDocumentLoader(file_path="test_doc.docx", mode="elements")

data = loader.load()

print(data)

当使用mode="elements"时的结果,它将为源文档中的每个元素返回一个文档。

python 复制代码
[
    Document(page_content = 'Title Text', metadata = {
        'source': 'test_doc.docx',
        'filename': 'test_doc.docx',
        'filetype': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
        'page_number': 1,
        'category': 'Title'
    }),
    Document(page_content = 'Heading 1', metadata = {
        'source': 'test_doc.docx',
        'filename': 'test_doc.docx',
        'filetype': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
        'page_number': 1,
        'category': 'Title'
    }),
    Document(page_content = 'This is paragraph 1', metadata = {
        'source': 'test_doc.docx',
        'filename': 'test_doc.docx',
        'filetype': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
        'page_number': 1,
        'category': 'NarrativeText'
    }),
    Document(page_content = 'Heading 2', metadata = {
        'source': 'test_doc.docx',
        'filename': 'test_doc.docx',
        'filetype': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
        'page_number': 1,
        'category': 'Title'
    }),
    Document(page_content = 'This is paragraph 2', metadata = {
        'source': 'test_doc.docx',
        'filename': 'test_doc.docx',
        'filetype': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
        'page_number': 1,
        'category': 'NarrativeText'
    })
]

使用默认的mode="single"时的结果,它将为源文档中的所有文本返回一个单一的文档。

python 复制代码
[
	Document(
		page_content='Title Text\n\nHeading 1\n\nThis is paragraph 1\n\nHeading 2\n\nThis is paragraph 2', 
		metadata={'source': 'test_doc.docx'}
	)
]

总结下,在"single"模式下,元素之间使用"\n\n"分隔符连接。接下来我们介绍文本拆分器时,这是字符拆分器的默认拆分字符。

相关推荐
Proaiapi4 小时前
一张图介绍gpt-image-2.5
人工智能·gpt
Maynor9964 小时前
GPT Image 2.5 高阶玩法开源了!
gpt
视***间5 小时前
视程空间GPT-OSS 开源大推理模型部署与使用实战教程
gpt·ai算力·本地部署大模型·ai推理·大模型本地部署·gpt-oss·本地推理
Dawson Zhu5 小时前
AI 辅助调试陷入「反复修改」循环?用证据驱动的四步法破局
人工智能·语言模型·架构·aigc·agi
Behaviour6 小时前
iPhone Duo 来了,苹果 Siri AI 接入定制 Gemini
人工智能·ios·语言模型·aigc·iphone
Joker-Zohar7 小时前
GPT-Image-2.5 双版本上线:8 组压力测试的提示词拆解,中文渲染零乱码
人工智能·gpt
奇牙coding1239 小时前
GPT-5.5 升级 GPT-5.6 接入指南:流式调用配置与常见问题
java·网络·gpt·ai
浩风祭月9 小时前
GPT Image 2.5 Sunburst还是Flare?模型选型、Python接入与成本避坑
python·aigc·openai·图像生成·gpt image 2.5
手写码匠9 小时前
DeepSeek 函数调用实战:从零搭建一个会“动手“的 AI 助手
人工智能·深度学习·算法·aigc
吨吨ai10 小时前
2026年9月10日|ChatGPT Pro + Codex:GPT‑6 Astra 团队研发协作
gpt·chatgpt