002:RAG 入门-LangChain 读取文本
002RAG 入门-LangChain 读取文本一、从 RAG 到文本读取为什么需要这一步在构建 RAG检索增强生成系统时第一步往往被低估如何将原始文本数据加载到可处理的格式中。RAG 的核心流程是“检索 → 增强 → 生成”而“检索”的前提是我们需要先把文档拆解成机器能理解的小块。LangChain 作为最流行的 RAG 框架之一提供了丰富的文档加载器Document Loaders帮助我们轻松读取各种格式的文本。想象一个场景你想让 AI 回答关于公司内部政策的问题但政策文档是 PDF 或网页格式。直接让大模型处理原始文件是不现实的——它需要结构化、分段的文本。今天我们就从最简单的文本读取开始一步步掌握 LangChain 的文档加载能力。## 二、基础概念什么是 Document Loader在 LangChain 中Document是核心数据结构包含两个字段-page_content字符串存储实际文本内容-metadata字典存储来源、页码等辅助信息而Document Loader就是负责将不同来源的数据如文本文件、PDF、网页转换为Document对象的工具。LangChain 内置了超过 100 种加载器覆盖了从本地文件到云存储的多种场景。## 三、实战第一段读取纯文本文件让我们从最基础的文件类型开始.txt文件。假设我们有一个名为company_policy.txt的文件内容如下公司假期政策1. 年假员工每年享有15天带薪年假。2. 病假每年12天带薪病假需提供医疗证明。3. 事假每年3天无薪事假需提前申请。### 代码示例 1使用 TextLoader 读取文本python# 首先安装 LangChain 核心库# pip install langchain-communityfrom langchain_community.document_loaders import TextLoader# 步骤1创建 TextLoader 实例指定文件路径# 注意文件路径可以是相对路径或绝对路径loader TextLoader(company_policy.txt, encodingutf-8)# 步骤2调用 load() 方法加载文档# 返回一个 Document 对象的列表即使只有一个文件documents loader.load()# 步骤3查看加载结果print(f文档数量{len(documents)})print(f文档内容预览前100字符\n{documents[0].page_content[:100]})print(f文档元数据{documents[0].metadata})输出示例文档数量1文档内容预览前100字符公司假期政策1. 年假员工每年享有15天带薪年假。2. 病假每年12天带薪病假需提供医疗证明。3. 文档元数据{source: company_policy.txt}关键要点-TextLoader是最简单的加载器适合处理纯文本文件-encoding参数很重要中文文本建议使用utf-8- 元数据自动包含source字段记录文件来源## 四、进阶用法批量读取与路径处理实际项目中我们经常需要处理多个文件。LangChain 提供了DirectoryLoader来批量读取整个目录的文本文件。假设我们有一个docs文件夹包含多个.txt文件。### 代码示例 2使用 DirectoryLoader 批量加载pythonfrom langchain_community.document_loaders import DirectoryLoader# 步骤1创建 DirectoryLoader 实例# 第一个参数目录路径# glob匹配模式这里只加载 .txt 文件# loader_cls指定使用哪种加载器默认 TextLoader# show_progress显示加载进度条适合大量文件loader DirectoryLoader( path./docs, # 文档目录 glob**/*.txt, # 递归匹配所有 .txt 文件 loader_clsTextLoader, # 使用 TextLoader 读取每个文件 show_progressTrue # 显示进度条)# 步骤2加载所有文档documents loader.load()# 步骤3遍历文档查看每个文件的开头for i, doc in enumerate(documents): print(f--- 文档 {i1} ---) print(f来源{doc.metadata[source]}) # 只显示前50个字符 print(f内容预览{doc.page_content[:50]}\n)输出示例--- 文档 1 ---来源docs/meeting_notes.txt内容预览2024年第一季度会议纪要------ 文档 2 ---来源docs/company_policy.txt内容预览公司假期政策1. 年假员工每年享有15天重要参数解析| 参数 | 作用 ||------|------||path| 要扫描的目录 ||glob| 文件匹配模式**表示递归子目录 ||loader_cls| 自定义每个文件使用的加载器 ||show_progress| 是否显示 tqdm 进度条 |## 五、处理大文件懒加载与分块当处理超大文本文件如日志文件或整本书时直接全部加载到内存可能导致溢出。LangChain 提供了懒加载Lazy Loading机制通过lazy_load()方法逐条返回文档。此外阅读文本后通常需要分块Chunking这部分会在后续文章详细讲解但这里先了解概念。### 懒加载示例基于 TextLoaderpython# 对于超大文件使用 lazy_load() 替代 load()loader TextLoader(large_log.txt)# lazy_load() 返回一个迭代器逐个生成 Documentfor chunk in loader.lazy_load(): # 每次只处理一个文档内存友好 process_chunk(chunk) # 假设的处理器 if some_condition: break # 可以提前终止何时使用懒加载- 文件超过 100MB- 需要流式处理- 内存受限的环境如服务器函数## 六、特殊格式CSV 与 JSON 的读取虽然本文聚焦“文本读取”但实际项目中常遇到结构化文本。LangChain 的CSVLoader和JSONLoader能自动解析这些格式。这里简要说明区别| 加载器 | 读取内容 | 典型用途 ||--------|----------|----------||TextLoader| 原始文本 | 纯文本文件 ||CSVLoader| 每行作为独立 Document | 表格数据 ||JSONLoader| 根据 jq 语法提取字段 | API 响应、配置文件 |## 七、常见问题与调试技巧1.编码错误遇到UnicodeDecodeError时尝试修改encoding参数python loader TextLoader(file.txt, encodinggbk) # 中文 Windows 常用2.文件路径问题使用pathlib确保跨平台兼容python from pathlib import Path loader TextLoader(Path(data) / docs / policy.txt)3.元数据自定义可以通过继承加载器来添加自定义元数据python class CustomTextLoader(TextLoader): def load(self): docs super().load() for doc in docs: doc.metadata[custom_field] value return docs## 八、总结文本读取是 RAG 的基石通过本文你学会了- 使用TextLoader读取单个文本文件- 使用DirectoryLoader批量处理目录中的文件- 理解Document对象的结构内容 元数据- 掌握懒加载处理大文件的方法进阶思考文本读取只是 RAG 管线的第一环。下一篇文章我们将学习如何将读取的文本分割成适当大小的块Chunking这是决定检索质量的关键步骤。记住好的开始是成功的一半正确读取文本能避免后续许多调试痛苦。现在打开你的编辑器试着读取几个.txt文件吧如果遇到问题可以检查文件编码和路径是否正确。RAG 的世界从这一行代码开始TextLoader(my_doc.txt).load()。

相关新闻

HackRF One Toolkit — 把频谱扫描、IQ 抓包重放、GPS 模拟装进浏览器的自托管 Web 控制台(开源)

HackRF One Toolkit — 把频谱扫描、IQ 抓包重放、GPS 模拟装进浏览器的自托管 Web 控制台(开源)

[AI 整理声明] 本文基于作者的项目文档与开发实践,由 AI 辅助整理输出,核心内容与数据均来自作者本人。 目录安装设备频谱抓包重放GPS参数档架构注意用 HackRF One 做信号录制或重放的时候,每次都要拼一长串 hackrf_transfer 参数&#xff0c…

2026/7/23 15:11:12 阅读更多 →
基于YOLO与SpringBoot的茶叶病害智能检测系统实践

基于YOLO与SpringBoot的茶叶病害智能检测系统实践

1. 项目背景与核心价值茶叶作为我国重要的经济作物,其生长过程中常受到各类病害威胁。传统人工检测方式存在效率低、主观性强等问题,而基于深度学习的视觉检测技术为解决这一痛点提供了新思路。本项目将YOLO系列最新算法与SpringBoot后端框架结合&#x…

2026/7/23 15:11:12 阅读更多 →
AI安全测试危机:Fable 5封禁与大模型评估挑战

AI安全测试危机:Fable 5封禁与大模型评估挑战

1. 事件背景:Fable 5封禁风波始末 2023年第三季度,AI行业发生了一起标志性事件——知名AI安全研究机构Fable Research突然宣布对旗下第五代模拟测试平台Fable 5实施全面封禁。该平台原本是众多AI公司进行模型安全评估的黄金标准,其封禁直接影…

2026/7/23 15:10:12 阅读更多 →

最新新闻

PlantUML+EA描述《分析模式》第6章存货和会计(5)

PlantUML+EA描述《分析模式》第6章存货和会计(5)

《GJJ-004 分析模式及实现》,umlchina.com/url/video.html 原图6.17 EA绘制 图6.17 用后向链式触发请求明细账户要它的分录。 PlantUML startuml start :更新账户; :返回分录; stop enduml 原图6.18 EA绘制 图6.18 更新账户的方法。 在正在处理的账户的每个…

2026/7/23 15:21:16 阅读更多 →
2026年EOR品牌权威排行榜:全球TOP 10服务商深度评测与排名

2026年EOR品牌权威排行榜:全球TOP 10服务商深度评测与排名

2026年EOR品牌权威排行榜:全球TOP 10服务商深度评测与排名第一章:2026 EOR市场现状与排名标准EOR市场演变时期市场特征排名标准2019-2021野蛮生长覆盖国家数量2021-2023融资大战融资规模2023-2025产品竞争平台功能2025-2026分化整合多维度评估2026年的新…

2026/7/23 15:21:16 阅读更多 →
AI从工具到岗位:小白程序员必看!收藏这波企业级应用案例

AI从工具到岗位:小白程序员必看!收藏这波企业级应用案例

本文聚焦企业AI应用,通过AI客服、问诊、实验系统、心理咨询等案例,揭示AI从浅层工具向稳定岗位转变的趋势。核心观点是AI能接住企业中重复性高、易出错的工作,如客服问答、文书整理等,为企业降本增效。文章强调AI落地关键在于找到…

2026/7/23 15:21:16 阅读更多 →
光纤配线架选型与部署实战:数据中心高密度布线的那些坑

光纤配线架选型与部署实战:数据中心高密度布线的那些坑

做过几个大型数据中心布线项目的人都知道,机柜里最不起眼但又最容易翻车的组件,就是光纤配线架。选错了规格,后期扩容时的光缆走线和跳线管理会让你头疼到怀疑人生;安装不到位,OTDR测试一跑,衰减指标直接超…

2026/7/23 15:21:16 阅读更多 →
深度改写模式和普通模式效果差多少深度解读:降AI两种模式选择影响完整分析

深度改写模式和普通模式效果差多少深度解读:降AI两种模式选择影响完整分析

深度改写模式和普通模式效果差多少深度解读:降AI两种模式选择影响完整分析 关于深度改写和普通模式降AI效果对比,我系统研究过一段时间,也实际验证过各种说法。 这篇文章把关键逻辑理清楚——知道了原理,遇到问题就知道该怎么处…

2026/7/23 15:21:16 阅读更多 →
springboot印刷行业系统

springboot印刷行业系统

一、关键词印刷行业系统、印刷行业、印刷行业信息管理、印刷行业后台管理二、作品包含源码数据库万字设计文档PPT全套环境和工具资源本地部署教程三、项目技术前端技术: Html、Css、Js、Vue3.2、Element-Plus后端技术:Java、SpringBoot3.3.0、MyBatis-Pl…

2026/7/23 15:20:15 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻