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]