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向量化 增强检索
1678 2
|
存储 人工智能 数据库
【AI大模型应用开发】【LangChain系列】2. 一文全览LangChain数据连接模块:从文档加载到向量检索RAG,理论+实战+细节
【AI大模型应用开发】【LangChain系列】2. 一文全览LangChain数据连接模块:从文档加载到向量检索RAG,理论+实战+细节
970 0
|
机器学习/深度学习 人工智能 JSON
LangChain + ChatGLM2-6B 搭建个人专属知识库
之前教过大家利用 langchain + ChatGLM-6B 实现个人专属知识库,非常简单易上手。最近,智谱 AI 研发团队又推出了 ChatGLM 系列的新模型 ChatGLM2-6B,是开源中英双语对话模型 ChatGLM-6B 的第二代版本,性能更强悍。 树先生之所以现在才更新 ChatGLM2-6B 知识库教程,是想等模型本身再多迭代几个版本,不至于刚出的教程很快不适配,或者项目本身一堆 bug,那样大家使用体验也不好。
3385 3
|
弹性计算 机器人 开发工具
AIGC:在云上从0开始搭建langchain-ChatGLM,构建私域知识问答机器人DEMO
AIGC短板:知识茧房(缺少行业领域的私域数据,专有问题解答效果差;数据时效性缺陷,对实时要求高的问题效果差)。 解法之一:私域数据Embedding +向量数据库(语义检索---向量相似度匹配)。将问题向量化,结合私域知识库中匹配到的“精确”内容,生成高质量prompt,再结合LLM的既有知识,以及概括、推理、扩展等能力,大大提升回答的准确性。 本文介绍了在阿里云上从0开始搭建langchain-ChatGLM,构建私域知识问答机器人DEMO。可用于日常学习和研究,减少环境搭建时踩坑。
5489 0
AIGC:在云上从0开始搭建langchain-ChatGLM,构建私域知识问答机器人DEMO
|
监控 Apache 微服务
微服务调用链监控开源工具CAT
本文详解微服务调用链监控的重要性,对比CAT、Zipkin、SkyWalking等主流方案,涵盖选型、性能测试与异步支持,助力构建高效可观测系统。
964 0
微服务调用链监控开源工具CAT
|
存储 缓存 NoSQL
Redis数据结构的最佳实践
本文深入解析Redis核心数据结构,涵盖String、List、Set、Hash及Sorted Set的底层实现与应用场景。内容包括redisObject通用结构、SDS动态字符串、单线程高性能原理、ziplist与hashtable编码优化,以及各类数据类型的常用命令与实战技巧,助力开发者高效运用Redis提升系统性能。
509 0
Redis数据结构的最佳实践
|
存储 消息中间件 Java
Spring分布式事务实现
Spring 分布式事务实现
288 0
|
数据库 索引 存储
Java电商系统数据库设计及开发规范
本文详解电商数据库设计规范,涵盖命名、索引、字段类型、SQL开发等最佳实践,助力高效构建高性能、易维护的数据库系统。
424 0
Java电商系统数据库设计及开发规范
|
JavaScript 前端开发 网络协议
前端基础:node.js、npm、webpack
本文详解Node.js、npm、Webpack核心概念与命令,涵盖前端性能优化(如DNS预解析)、数据接口设计及浏览器存储机制(Cookie、localStorage等),助力全栈开发进阶。
286 0
前端基础:node.js、npm、webpack
|
设计模式 架构师 Java
架构师教你kill祖传石山代码重复/大量ifelse
本文详解如何通过工厂+模板方法、注解+反射及Bean映射工具消除重复代码,提升代码可维护性。结合实战案例,教你重构技巧,告别CRUD误区,实现高质量编程。
291 0
架构师教你kill祖传石山代码重复/大量ifelse

热门文章

最新文章