当前位置: 首页 > ds >正文

【LangChain基础系列】深入全面掌握文本加载器

前言

以下我们对于常见的文本数据的加载方式,进行一一解析,掌握好这几个常见的加载器,为我们以后的文本分割打好基础。

加载Text 文件

from langchain_community.document_loaders import TextLoaderloader = TextLoader("D:\\111.txt", "utf-8")data = loader.load()
print(data)
# 返回的数据式一个列表,列表中包含一个Document对象
# Document对象包含两个属性,metadata和page_content
# metadata是一个字典,page_content是一个字符串,字符串中包含了文件的内容。
# [Document(metadata={'source': 'D:\\111.txt'}, page_content='111\n222\n333')]

# 返回的数据式一个列表,列表中包含一个Document对象

# Document对象包含两个属性,metadata和page_content

# metadata是一个字典,page_content是一个字符串,字符串中包含了文件的内容。

# [Document(metadata={'source': 'D:\\111.txt'}, page_content='111\n222\n333')]

注意:声明loader一定要指定编码格式为:utf-8,否则中文会出现乱码!

加载 CSV 文件

from langchain_community.document_loaders import CSVLoaderloader = CSVLoader("E:\\dev\\langchain\\loaders\\data.csv",
)data = loader.load()
print(data)

[

        Document(metadata={'source': 'E:\\dev\\langchain\\loaders\\data.csv', 'row': 0}, page_content='name: dongchenxu\nage: 35'),

        Document(metadata={'source': 'E:\\dev\\langchain\\loaders\\data.csv', 'row': 1}, page_content='name: zhangli\nage: 25')

 ]

从结果来看,解析到数据表示一行数据一个Document,可以遍历这个Document列表来获取每一行的数据。

加载 JSON 文件

data.json:

{

    "name": "langchain基础系列",

    "version": "1.0.0",

    "description": "",

    "author": "",

    "license": "ISC",

    "chapters": [

        { "title": "LangChain基础", "path": "langchain基础.md", "description": "LangChain基础" },

        { "title": "LangChain进阶", "path": "langchain进阶.md", "description": "LangChain进阶"},

        { "title": "LangChain实战", "path": "langchain实战.md", "description": "LangChain实战" }

    ]

}  

from langchain_community.document_loaders import JSONLoader# 可以通过metadata_func来修改metadata,进而修改Document对象的metadata属性。
def metadata_func(record: dict, metadata: dict) -> dict:metadata['name'] = record.get('name')return metadataloader = JSONLoader("D:\\data.json", jq_schema='.chapters[] | {title, description}', text_content=False,metadata_func= metadata_func,
)data = loader.load()
print(data)

jq_schema字段指定获取json数据的范围:

1、jq_schema='.' 表示获取全部

2、jq_schema='.name':表示获取name字段

3、jq_schema='.chapters[]':表示获取chapters数组

4、jq_schema='.chapters[].title':表示获取chapters中的title

5、jq_schema='.chapters[] | {title, description}':表示获取chapters中的titledescription

当输出的page_content不是text时,text_content字段要设置为False,否则会报错,建议这个字段总是设置为False,即可以接收text,也可以接收json

加载 Markdown 文件

from langchain_community.document_loaders import UnstructuredMarkdownLoaderloader = UnstructuredMarkdownLoader(file_path="E:\\dev\\langchain\\loaders\\data.md", mode="elements",
)data = loader.load()
print(data)

其中mode参数很重要:

1、mode为空或者设置为single,表示整个文档是一个Document

2、mode为elements,表示按照元素拆分为多个Document

加载 PDF 文件

提取出来的数据是Document的数组,每一页都是一个Document。

from langchain_community.document_loaders import PyPDFLoader
from pydantic import FilePathloader = PyPDFLoader(file_path = "E:\\dev\\langchain\\loaders\\data.pdf", extract_images=True,
)
# pdf的每一页都被视为一个Document对象,每个Document对象都包含一个metadata属性,
# metadata属性是一个字典,包含了pdf的一些元数据,比如pdf的页数,pdf的文件名,pdf的路径等等。
# 每个Document对象都包含一个page_content属性,page_content属性是一个字符串,
# 字符串中包含了pdf的内容。# extract_images=True, 表示提取pdf中的图片中的文字
# 如果pdf是扫描的,那么需要设置extract_images=True,否则无法提取内容
data = loader.load()
print(data)

对于加载pdf的场景,最好是设置extract_images=True, 表示提取pdf中的图片中的文字。

http://www.xdnf.cn/news/4903.html

相关文章:

  • PH热榜 | 2025-05-08
  • 安防多协议接入/视频汇聚平台EasyCVR助力工地/工程/建筑施工领域搭建视频远程监控系统
  • [git]如何关联本地分支和远程分支
  • 网络安全赛题解析
  • SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(三)完结
  • 用于构建安全AI代理的开源防护系统
  • Java 基础知识点——数组相关
  • 使用Mathematica内置函数绘制Sierpinski地毯
  • rce-labs level 3,4,5
  • 3.2.3 掌握RDD转换算子 - 5. 合并算子 - union()
  • 飞云分仓操盘副图指标操作技术图文分解
  • 平板收银系统、国产系统,鸿蒙系统,小键盘的封装与应用—仙盟创梦IDE
  • 基于FPGA控制PCF8591开展ADC采样,以采样烟雾模块输出模拟电压为例(IIC通信)
  • OpenTelemetry 介绍
  • neo4j官方示例
  • 汽车为什么需要以太网?带宽?实时?
  • stable diffusion的attention-map:提取和可视化跨注意力图
  • CLR是什么
  • 【Linux网络】Socket-UDP相关函数
  • 一天学会Maven
  • QMK配置器详解:QMK Configurator
  • 开启智能Kubernetes管理新时代:kubectl-ai让操作更简单!
  • 101alpah_第5个alpha学习
  • C++GO语言微服务基础技术②
  • 【HarmonyOS 5】App Linking 应用间跳转详解
  • 初始AMBA总线
  • Python实现文件批量改名功能
  • DMC-1410/1411/1417USER MANUAL 手侧
  • Go主要里程碑版本及其新增特性
  • 【JAVA】十三、基础知识“接口”精细讲解!(三)(新手友好版~)