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]
目录
相关文章
|
存储 人工智能 架构师
|
监控 Apache 微服务
微服务调用链监控开源工具CAT
本文详解微服务调用链监控的重要性,对比CAT、Zipkin、SkyWalking等主流方案,涵盖选型、性能测试与异步支持,助力构建高效可观测系统。
1070 0
微服务调用链监控开源工具CAT
|
数据库 索引 存储
Java电商系统数据库设计及开发规范
本文详解电商数据库设计规范,涵盖命名、索引、字段类型、SQL开发等最佳实践,助力高效构建高性能、易维护的数据库系统。
506 0
Java电商系统数据库设计及开发规范
|
Java 架构师 物联网
阿里字节技术大佬都在用的List集合去重方案!
本文详解Java中List去重的多种方法,涵盖基本类型与对象去重,结合Set、Stream及重写equals/hashCode,实用性强,适合Java开发者收藏学习。
543 0
|
Java 数据库连接 数据库
适配器模式及适用场景详解
适配器模式详解:将不兼容接口转化为可兼容,使原有类能复用。适用于封装缺陷、统一多类接口、替换外部系统、兼容老版本及数据格式适配等场景,是补救设计缺陷的“补偿模式”。
335 0
适配器模式及适用场景详解
|
JavaScript 前端开发 网络协议
前端基础:node.js、npm、webpack
本文详解Node.js、npm、Webpack核心概念与命令,涵盖前端性能优化(如DNS预解析)、数据接口设计及浏览器存储机制(Cookie、localStorage等),助力全栈开发进阶。
363 0
前端基础:node.js、npm、webpack
|
设计模式 架构师 Java
架构师教你kill祖传石山代码重复/大量ifelse
本文详解如何通过工厂+模板方法、注解+反射及Bean映射工具消除重复代码,提升代码可维护性。结合实战案例,教你重构技巧,告别CRUD误区,实现高质量编程。
362 0
架构师教你kill祖传石山代码重复/大量ifelse
|
SQL 关系型数据库 MySQL
实战讲解MySQL的expain执行计划,面试官当场要了我
本文深入解析MySQL执行计划与SQL性能优化,涵盖EXPLAIN各字段含义、type类型性能对比、索引使用策略及Extra常见提示。通过分析执行计划,识别全表扫描、文件排序等性能瓶颈,指导索引设计与SQL改写,提升查询效率。
380 0
|
Java 安全 存储
Java的synchronized关键字和锁升级过程详解
本文深入解析Java锁机制,涵盖用户态与内核态、CAS原理、对象内存布局及锁升级过程。重点讲解偏向锁、轻量级锁、自旋锁、重量级锁的获取与释放流程,以及JVM锁优化技术如锁消除、锁粗化与自适应自旋,助你掌握高并发下锁性能调优核心要点。
390 0
Java的synchronized关键字和锁升级过程详解

热门文章

最新文章