LangChain - Loader
概念
LangChain内置了许多种类的文档加载器
- 文档加载器均继承于BaseLoader类,返回Document类型的对象;
- load方法一次性批量加载(返回 list[Document]),如内容过多可能list太大,出现内存溢出问题;
- lazy_load方法会得到生成器对象,可用for循环依次获取单个Document对象,适用于大文档避免内存存不下。
CSVLoader
CSVLoader用于加载CSV文件,加载成功得到的即Document对象
使用方法:

JSONLoader
JSONLoader用于将JSON数据加载为Document类型对象。
使用JSONLoader需要额外安装: pip install jq
jq是一个跨平台的json解析工具,LangChain底层对JSON的解析就是基于jq工具实现的。
将JSON数据的信息抽取出来,封装为Document对象,抽取的时候依赖jq_schema语法。
使用方法
JSONLoader使用jq的解析语法,常见如:
- .表示根、[]表示数组
- .name表示从根取name的值
- .hobby[1]表示取hobby对应数组的第二个元素
- .[]表示将数组内的每个字典(JSON对象)都取到
- .[].name表示取数组内每个字典(JSON)对象的name对应的值
JSONLoader初始化有4个主要参数:
- file_path:文件路径,必填
- jq_schema:jq解析语法,必填
- text_content:抽取到的是否是字符串,默认True,非必填
- json_lines:是否是JsonLines文件,默认False,非必填
- JsonLines文件:每一行都是一个独立的字典(Json对象)
运行demo

PyPDFLoader
LangChain内支持许多PDF的加载器,选择其中的PyPDFLoader使用。
loader = PyPDFLoader(
file_path="./data/pdf1.pdf",
# single模式,不管有多少页,只返回1个Document文档
# 默认Page模式,每一个页面生成一个Document文档
mode="single",
password='password', # 文件密码
)
运行demo

TextLoader
TextLoader是一个简单的加载器,可以加载文本文件内容,返回仅有一个Document对象的list。
RecursiveCharacterTextSplitter递归字符文本分割器,是LangChain官方推荐的默认分割器。
- 基于文本的自然段落分割大文档为小文档
- 可以指定小文档的最大字符数、重叠字符数
- 可以手动指定段落划分的依据(符号)以及字符数量统计函数

