Author
Published On
Sep 11, 2025
Category

模块二:数据增强模块 (RAG) - 让LLM拥有“外部知识”

第二课时:打造你的“知识仓库”——文档加载实战

Part 1: 回顾与启程——从“开卷考试”到“准备教材”

上节课,我们理解了RAG的核心理念——让LLM像参加“开卷考试”一样,带着外部资料来回答问题。 那么,考试的第一步是什么?当然是准备好所有的“教材”和“参考书”! 在我们的RAG流程中,这些“教材”就是我们的外部数据源:PDF报告、Word文档、网页文章、数据库记录等等。它们格式各异,散落在各处。 LangChain的文档加载器,就是我们准备教材的“万能搬运工”。它的任务只有一个:将各种来源、各种格式的数据,统一加载并转换成LangChain能够处理的标准格式。 今天,我们就来学习如何指挥这些“搬运工”,把我们的知识仓库填满。

Part 2: 知识的“标准集装箱”——认识Document对象

在开始搬运之前,我们需要先了解一下LangChain使用的“标准集装箱”——Document对象。 无论你加载的是PDF、TXT还是网页,最终都会被转换成一个或多个Document对象。每个Document对象都包含两个核心部分:
  1. page_content (字符串):这是文档的实际文本内容。比如,PDF某一页的文字,或TXT文件的全部内容。
  1. metadata (字典):这是关于这份文档的描述性信息。比如,它来自哪个文件(source)、在第几页(page)、作者是谁等等。元数据非常重要,它能帮助我们追溯答案的来源。 我们的目标就是:用各种Loader,把原始数据装进一个个标准的Document“集装箱”里。

Part 3: 实战演练——调用你的“搬运工”团队

【实战准备】
  1. 在你的项目文件夹 my_langchain_project 下,创建一个名为 data 的子文件夹。
  1. data 文件夹中,放入一个 .txt 文件(例如 story.txt,内容随意)和一个 .pdf 文件(例如任何一份你手头的PDF报告)。
  1. 安装处理PDF和网页所需的额外依赖:
    现在,创建一个新文件 loading_demo.py,开始我们的实战! 【代码实现】

    运行并观察结果! 你会看到,无论是本地的TXT、PDF,还是远方的网页,都被成功地“搬运”了进来,并统一转换成了包含page_contentmetadataDocument对象列表。

    总结与预告

    恭喜你!今天,你已经掌握了RAG流程的第一步,也是至关重要的一步。 我们学会了:
    • Document对象:LangChain处理知识的标准格式。
    • TextLoader:加载纯文本文件。
    • PyPDFLoader:逐页加载PDF文档。
    • DirectoryLoader:一键批量加载整个文件夹。
    • WebBaseLoader:从互联网上抓取实时信息。 你的“知识仓库”现在已经堆满了各种原始的“教材”。但是,这些教材(尤其是长篇的PDF)对于LLM来说太长了,直接塞给它,效果不好,而且浪费Token。 下一节课,我们将学习RAG流程的第二步:文本分割。我们将像一位耐心的图书管理员,把这些又长又乱的文档,切分成一段段精悍、连贯的知识片段,为后续的快速检索做好准备。准备好,拿起你的“切割刀”吧!

    Loading...
    数字Baby
    数字Baby
    AIGC加速人类文明
    公告
    🎉Dify/n8n视频课程已经上线🎉
    -- 感谢您的支持 ---
    👏欢迎体验👏
    🎉更多惊喜🎉
    咨询微信:myaigcpro