吴恩达《LangChain LLM 应用开发精读笔记》8-Document Loading 文档加载

作者:勇气要爆发日期:2026/4/3

在这里插入图片描述

大家好,我是飞哥!👋

欢迎来到吴恩达《LangChain:Chat with Your Data》系列课程的第二讲。上一讲我们了解了 RAG 的全流程,今天我们正式开工,攻克第一关:Document Loading (文档加载)


1. 为什么:Garbage In, Garbage Out 🗑️

💡 场景锚定

做饭要先买菜洗菜,训练 AI 也是一样。如果你喂给 AI 的数据格式乱七八糟、乱码满天飞,那么 AI 输出的答案肯定也是一塌糊涂。

  • PDF 里有复杂的表格和页眉页脚。
  • 网页里有一堆广告和导航栏。
  • YouTube 视频只有声音没有文字。

⚠️ 核心痛点

我们需要一个“万能转换器”,把这些五花八门的数据源(PDF, HTML, Audio, Notion)统一转换成 AI 能读懂的标准格式。


2. 是什么:LangChain 的 Document Loaders 🏗️

LangChain 提供了超过 80 种文档加载器(Document Loaders),它们的作用就是把各种非结构化数据加载为统一的 Document 对象。

🗂️ 80+ 种文档格式大揭秘 (分类概览)

虽然我们不可能把 80 种全列出来,但我们可以把它们分成三大类:

  1. 公共非结构化数据 (Public Unstructured Data)
    • 网页/互联网:HTML 网页、YouTube 视频字幕、Twitter 推文、Hacker News 帖子、GitHub 代码库等。
  2. 私有非结构化数据 (Proprietary Unstructured Data)
    • 本地文件:PDF、Word 文档、PowerPoint 幻灯片、Markdown 文件、TXT 纯文本。
    • 第三方SaaS工具:Notion 笔记、Figma 设计稿、Slack 聊天记录、Confluence。
  3. 结构化数据 (Structured Data)
    • 表格与数据库:CSV 表格、JSON 文件、Airbyte 数据源、Stripe 账单数据、Airtable 表格等(提取其中的文本字段用于问答)。

一个标准的 Document 对象包含两部分:

  1. page_content: 文档的文本内容(比如 PDF 的一页文字)。
  2. metadata: 文档的元数据(比如文件名、页码、来源 URL)。

3. 怎么用:实战代码 💻

3.1 加载 PDF (PyPDFLoader) 📄

这是最常见的需求。我们使用 PyPDFLoader 来处理 PDF 文件。

提示:为了保证代码可运行,脚本中默认会自动下载一个示例 PDF (helloworld.pdf)。如果你想加载自己的 PDF,只需修改代码中的路径即可。

1from langchain_community.document_loaders import PyPDFLoader
2
3# 加载 PDF (示例代码加载的是 Andrew Ng 的讲义,脚本实际运行可能加载的是 helloworld.pdf)
4loader = PyPDFLoader("docs/cs229_lectures/MachineLearning-Lecture01.pdf")
5pages = loader.load()
6
7# 查看页数
8print(len(pages)) 
9# 输出: 22 (脚本实际输出可能为 1)
10
11# 查看第一页内容(前200字符)
12print(pages[0].page_content[0:200]) 
13# 输出: MachineLearning-Lecture01 ... (脚本实际输出: Hello, world!)
14
15# 查看元数据
16print(pages[0].metadata)
17# 输出: {'source': '...', 'page': 0}
18

3.2 加载 YouTube 音频 (YoutubeAudioLoader + OpenAIWhisper) 📺

想让 AI 总结 YouTube 视频?我们可以先提取音频,再用 OpenAI 的 Whisper 模型转录成文字。

注意:这需要安装 yt_dlp, pydub, librosa 以及 ffmpeg。同时需要 OpenAI API Key (Whisper 服务)。

1from langchain_community.document_loaders.generic import GenericLoader
2from langchain_community.document_loaders.parsers import OpenAIWhisperParser
3from langchain_community.document_loaders.blob_loaders.youtube_audio import YoutubeAudioLoader
4
5url = "https://www.youtube.com/watch?v=jGwO_UgTS7I"
6save_dir = "docs/youtube/"
7
8# 组合加载器:下载音频 + 转录文字
9loader = GenericLoader(
10    YoutubeAudioLoader([url], save_dir),
11    OpenAIWhisperParser()
12)
13docs = loader.load()
14
15print(docs[0].page_content[0:500])
16# 输出: Welcome to CS229 Machine Learning. Andrew Ng here. ...
17

3.3 加载网页 (WebBaseLoader) 🌐

想爬取网页内容?WebBaseLoader 可以帮你搞定。它会自动去除 HTML 标签,只保留文本。

1from langchain_community.document_loaders import WebBaseLoader
2
3loader = WebBaseLoader("https://github.com/basecamp/handbook/blob/master/37signals-is-you.md")
4docs = loader.load()
5
6print(docs[0].page_content[:500])
7# 输出: 37signals Is You ...
8

3.4 加载 Notion (NotionDirectoryLoader) 📝

Notion 是很多人的知识库。你可以先将 Notion 页面导出为 Markdown/CSV,然后加载。

1from langchain_community.document_loaders import NotionDirectoryLoader
2
3loader = NotionDirectoryLoader("docs/Notion_DB")
4docs = loader.load()
5
6print(docs[0].page_content[:200])
7# 输出: # Blendle's Employee Handbook ...
8

📝 飞哥总结

  1. 标准化接口:无论来源是 PDF 还是 YouTube,加载后都是统一的 Document 对象。
  2. 元数据很重要metadata(如页码、来源)在后续的检索环节非常有用,可以帮你定位答案的出处。
  3. 依赖管理:不同的 Loader 需要不同的依赖包(如 pypdf, yt_dlp),用到什么装什么。

一句话记住它 💡:Document Loaders 就像是 AI 的“进食口”,把各种“生食”(原始数据)加工成 AI 能消化的“熟食”(标准文档对象)!


吴恩达《LangChain LLM 应用开发精读笔记》8-Document Loading 文档加载》 是转载文章,点击查看原文


相关推荐


CSS 全栈指南:从基础到 2025 新特性
橘子编程2026/3/25

CSS 知识详解 从层叠规则到现代布局,从自定义属性到容器查询,系统梳理 CSS 全栈知识,涵盖 W3C 2025 最新特性,助你写出优雅、高性能的样式代码。 目录 什么是 CSS语法与引入方式层叠与继承选择器优先级CSS 选择器大全伪类与伪元素CSS 盒模型Display 与定位Flexbox 弹性布局Grid 网格布局字体与文本颜色与背景变换与过渡CSS 动画自定义属性(变量)响应式设计现代 CSS 特性最佳实践 一、什么是 CSS CSS(Cascading S


【宇树机器人强化学习】(二):ActorCritic网络和ActorCriticRecurrent网络的python实现与解析
zh路西法2026/3/17

前言 Unitree RL GYM 是一个开源的 基于 Unitree 机器人强化学习(Reinforcement Learning, RL)控制示例项目,用于训练、测试和部署四足机器人控制策略。该仓库支持多种 Unitree 机器人型号,包括 Go2、H1、H1_2 和 G1。仓库地址 本系列将着手解析整个仓库的核心代码与算法实现和训练教程。此系列默认读者拥有一定的强化学习基础和代码基础,故在部分原理和基础代码逻辑不做解释,对强化学习基础感兴趣的读者可以阅读我的入门系列: 第一期


Git Worktree / Worktrunk:并行 AI 开发工作流实战
RickeyBoy2026/3/9

最近在日常开发中尝试了用 Git Worktree (Worktrunk) 配合 Claude Code 进行并行开发,体验下来效果非常好。这篇文章就来分享一下这套工作流的搭建和使用经验,希望能对大家有点帮助~ 欢迎大家点个 star:Github 以及下载我的独立 app: iColors 一、为什么需要 Git Worktree 先说一个日常开发中很常见的场景:你正在开发一个新功能,突然来了一个紧急 bug 需要修复。通常你要么 git stash,要么 git commit 一个半成品


在OrangePi-5 Plus/5 Ultra上实时运行yolo26进行无人机检测,fps超50!
吃素的力2026/3/1

在OrangePi-5 Plus/5 Ultra上使用VideoPipe与YOLO26n实现高性能无人机检测 视频效果展示 RK3588无人机检测 前言 随着低空经济的快速发展,无人机检测已成为安防监控、边境巡逻、关键区域保护等场景中的重要需求。OrangePi 5 Plus和OrangePi 5 Ultra作为瑞芯微RK3588平台的高性能开发板,凭借其强大的NPU算力,成为边缘端AI推理的理想选择。 本文将详细介绍如何基于VideoPipe框架,结合最新的Y


花 200 美刀买“黑盒”?Claude Code 这波更新,把程序员当傻子了吧…
Dcs2026/2/21

有些产品吧,功能再强,只要开始“藏事儿”,程序员的雷达立马就响了: 你到底读了哪个文件?你到底搜了啥?你到底改了啥?——别跟我说“别管细节,反正我很聪明”。哥们,工程不是玄学,是可验证、可追溯、可复盘。 然后,Claude Code 2.1.20 就真把这事做了:把“读取文件路径”和“搜索 pattern”这种最基础的可观测信息,直接干没了。 1)更新前 vs 更新后:从“可审计”变成“随缘”🤡 以前你会看到它读了哪些文件、搜了什么关键词,属于那种一眼就能判断它有没有跑偏的“低噪音透明输出”


为什么 Memo Code 先做 CLI:以及终端输入框到底有多难搞
mCell2026/2/12

同步至个人站点:为什么 Memo Code 先做 CLI:以及终端输入框到底有多难搞 如果你对我的 Code Agent项目感兴趣,可以看这里: Github Repo: Memo Code - Github 站点:Memo Web Site 大概四年前,我刚接触编程。学的是 C 语言,第一个程序当然是 hello world。 很简单,几行就写完。run 一下,弹出来一个 terminal(我已经忘了当时用的是什么:cmd?PowerShell?反正不重要),然后打印了一行: “hell


Java8 API文档搜索引擎_优化构建索引速度
_周游2026/2/3

本专栏前文已介绍完成索引模块程序: https://blog.csdn.net/m0_63299495/article/details/157515700?spm=1011.2415.3001.5331https://blog.csdn.net/m0_63299495/article/details/157515700?spm=1011.2415.3001.5331并对关键部分进行了细节整理: https://blog.csdn.net/m0_63299495/article/details


Linux软件安装 —— Flink集群安装(集成Zookeeper、Hadoop高可用)
吱唔猪~2026/1/25

文章目录 一、节点说明二、配置节点间免密登录三、JDK安装四、Zookeeper安装五、Hadoop安装六、Flink安装1、基础环境准备(1)下载安装包(2)上传并解压 2、修改配置(1)配置zookeeper(2)配置flink-conf.yaml(3)配置workers(4)创建必要的目录(5)配置环境变量 3、分发flink 七、集群测试1、启动zookeeper,hadoop2、Yarn Session测试(1)模式介绍(2)准备测试资源


图解DeepSeek最新论文,人人都能看得懂!
饼干哥哥2026/1/16

DeepSeek 又发论文了。 这一次,没有惊天动地的参数军备竞赛,没有万卡集群的暴力美学。 他们只是冷静地指出了当前 AI 届一个“皇帝的新衣”: 我们最顶尖的大模型,其实都在做着极其愚蠢的事情。 在这篇名为《Conditional Memory via Scalable Lookup》(基于可扩展查找的条件记忆)的论文中,DeepSeek 创始人梁文锋亲自署名,揭示了下一代大模型架构(V4?)的核心秘密:与其让模型更努力地“思考”,不如教它学会“作弊”。 01.愚蠢的天才:为什么要用算力去


如何在CentOS 7.9 服务器上配置并优化 Ceph 分布式存储集群,提升数据冗余与性能?
A5IDCCOM2026/1/8

本文基于A5IDC在真实生产环境(跨机房 Ceph 集群支撑虚拟机盘、对象存储及容灾复制)的实战经验,详细讲解如何从零部署 Ceph 集群在 CentOS 7.9 上,并通过硬件配置选择、网络优化、Ceph 参数调优等实用细节提升 数据冗余能力与性能表现。文章包含具体产品型号、系统配置表、命令示例与性能评估对比表,适合中大型数据中心储存架构实施。 一、背景与目标 随着业务系统对海量数据持久层的要求不断提升,我们需要一个高可靠、易扩展、具有自动自愈能力的分布式存储平台。Ceph 是开源生态

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客