AI大模型企业应用实战(11)-Document Loader文件加载器机制

简介: 本文详解LangChain文档加载器(Loader)机制,涵盖Markdown、CSV、Excel、HTML、JSON、PDF等多格式文件的智能解析与文本提取。依托unstructured等库,实现结构化内容抽取,为RAG系统构建高质量知识库提供核心支持。(239字)

0 前言

loader机制让大模型具备实时学习的能力:

1 加载markdown

准备一个 md 文件:

# 使用loader来加载markdown文本
from langchain_community.document_loaders import TextLoader

loader = TextLoader("loader.md")
loader.load()

[Document(metadata={
   'source': 'loader.md'}, page_content='# 我是一个markdown加载示例\n- 第一项目\n- 第二个项目\n- 第三个项目\n\n## 第一个项目\n编程严选网,最厉害专业的AI研究基地\n\n## 第二个项目\nAIGC打造未来AI应用天地\n\n## 第三个项目\n编程严选网是一个非常牛逼的AI媒体')]

2 加载cvs

#使用 CSVLoader 来加载 csv 文件
from langchain.document_loaders.csv_loader import CSVLoader

#loader = Loader(file_path="loader.")
loader = CSVLoader(file_path="loader.csv")
data = loader.load()
print(data)

先下包:

! pip install "unstructured[xlsx]"

unstructured处理非结构化文档的 Python 库,支持解析多种格式的文件,包括 PDF、Word、HTML、Markdown、图片等。而RAG核心需求之一就是从各种格式文档中提取文本内容,再将其向量化存入知识库供后续检索。

[xlsx]是unstructured的一个可选依赖组(extras)。其采用模块化设计,核心包本身很轻量,只有在需要处理特定格式时才安装对应的额外依赖。该扩展专门用于支持解析 Excel 文件(.xlsx 格式),它会额外安装 openpyxl 等处理 Excel 所需的依赖库。

# 某目录下有excel文件,要把目录下所有的xlxs文件加载进来
from langchain_community.document_loaders import DirectoryLoader

# 目录下的.html和.rst文件不会被这种loader加载
# loader = DirectoryLoader("目录地址",glob="指定加载说明格式的文件")
loader = DirectoryLoader(path="./example/",glob="*.xlsx")
docs = loader.load()
len(docs)

3 加载html

3.1 UnstructuredHTMLLoader

LangChain 中用于加载和解析 HTML 文件的文档加载器。基于 unstructured 库实现,智能地从 HTML 文件中提取文本内容,自动过滤掉 HTML 标签、脚本、样式等无关内容,只保留有意义的文本信息。

与普通的 HTML 解析器相比,其

3.1.1 核心优势

使用 unstructured 库的智能文档分析能力,能够识别 HTML 文档的结构(如标题、段落、列表、表格等),并将其转换为结构化的文本块。这对于 RAG 场景非常有价值,因为保留文档结构有助于提高后续检索的准确性。

3.1.2 使用方式

返回的是一个 Document 对象列表,每个 Document 包含两个核心属性:

  • page_content:提取出来的纯文本内容
  • metadata:包含文件来源路径等元数据信息

UnstructuredHTMLLoader v.s BSHTMLLoader(基于 BeautifulSoup)

  • 前者对复杂 HTML 结构的处理更智能,但需额外安装 unstructured 依赖
  • 后者更轻量,但对复杂布局的解析能力相对有限

处理结构复杂的网页时,推荐优先使用UnstructuredHTMLLoader。

from langchain_community.document_loaders import UnstructuredHTMLLoader

loader = UnstructuredHTMLLoader("loader.html")
data = loader.load()
data

加载 html 所有内容:

from langchain.document_loaders import BSHTMLLoader
loader = BSHTMLLoader("loader.html")
data = loader.load()
data

只加载去除标签后的关键内容:

from langchain_community.document_loaders import BSHTMLLoader
loader = BSHTMLLoader("loader.html")
data = loader.load()
data

4 加载JSON

先装 jq 包:

 ! pip install jq
from langchain_community.document_loaders import JSONLoader
loader = JSONLoader(
    file_path = "simple_prompt.json",jq_schema=".template",text_content=True
)
data = loader.load()
print(data)

[Document(metadata={
   'source': '/Users/javaedge/soft/PyCharmProjects/AIAgent/base/simple_prompt.json', 'seq_num': 1}, page_content='给我讲一个关于{name}的{what}故事')]

5 加载PDF

先装包:

! pip install pypdf
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("loader.pdf")
pages = loader.load_and_split()
pages[0]
目录
相关文章
|
存储 人工智能 架构师
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
1903 2
|
存储 人工智能 数据库
【AI大模型应用开发】【LangChain系列】2. 一文全览LangChain数据连接模块:从文档加载到向量检索RAG,理论+实战+细节
【AI大模型应用开发】【LangChain系列】2. 一文全览LangChain数据连接模块:从文档加载到向量检索RAG,理论+实战+细节
1104 0
|
存储 消息中间件 缓存
腾讯自研万亿级消息中间件TubeMQ捐赠给Apache!(下)
腾讯自研万亿级消息中间件TubeMQ捐赠给Apache!(下)
395 58
腾讯自研万亿级消息中间件TubeMQ捐赠给Apache!(下)
|
机器学习/深度学习 人工智能 JSON
LangChain + ChatGLM2-6B 搭建个人专属知识库
之前教过大家利用 langchain + ChatGLM-6B 实现个人专属知识库,非常简单易上手。最近,智谱 AI 研发团队又推出了 ChatGLM 系列的新模型 ChatGLM2-6B,是开源中英双语对话模型 ChatGLM-6B 的第二代版本,性能更强悍。 树先生之所以现在才更新 ChatGLM2-6B 知识库教程,是想等模型本身再多迭代几个版本,不至于刚出的教程很快不适配,或者项目本身一堆 bug,那样大家使用体验也不好。
3518 3
|
消息中间件 Java 数据库
突破Java面试(44)-分布式事务解决方案
0 Github 1 面试题 分布式事务了解吗?你们如何解决分布式事务问题的? 2 考点分析 只要聊到做了分布式系统,必问分布式事务,若你对分布式事务一无所知的话,确实很坑,起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。
4556 0
|
Java 中间件 测试技术
殷浩详解DDD系列 第二讲 - 应用架构
# 第二讲 - 应用架构 架构这个词源于英文里的“Architecture“,源头是土木工程里的“建筑”和“结构”,而架构里的”架“同时又包含了”架子“(scaffolding)的含义,意指能快速搭建起来的固定结构。而今天的应用架构,意指软件系统中**固定不变**的代码结构、设计模式、规范和组件间的通信方式。在应用开发中架构之所以是最重要的第一步,因为一个好的架构能让系统安全、稳定、快速迭代
26270 2
|
监控 Apache 微服务
微服务调用链监控开源工具CAT
本文详解微服务调用链监控的重要性,对比CAT、Zipkin、SkyWalking等主流方案,涵盖选型、性能测试与异步支持,助力构建高效可观测系统。
1053 0
微服务调用链监控开源工具CAT
|
存储 缓存 NoSQL
Redis数据结构的最佳实践
本文深入解析Redis核心数据结构,涵盖String、List、Set、Hash及Sorted Set的底层实现与应用场景。内容包括redisObject通用结构、SDS动态字符串、单线程高性能原理、ziplist与hashtable编码优化,以及各类数据类型的常用命令与实战技巧,助力开发者高效运用Redis提升系统性能。
581 0
Redis数据结构的最佳实践

热门文章

最新文章