0Pricing
LangChain / RAG / Vector DBs · 课时

加载多种文档类型

探索 LangChain 的文档加载器,处理 PDF、网页、数据库等内容,并提取信息供 RAG 系统使用

加载多种文档类型 是 CoddyKit 上的免费 LangChain / RAG / Vector DBs 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 LangChain / RAG / Vector DBs 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 LangChain / RAG / Vector DBs 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

Document Loaders: The First Step

Welcome to the world of LangChain! Before an LLM can answer questions about your data, it needs to 'read' it. This is where Document Loaders come in.

Document loaders are tools that help LangChain ingest data from various sources like text files, PDFs, web pages, or databases. They convert raw data into a standardized format called Document objects.

Loading Simple Text Files

The simplest way to load data is from a plain text file. LangChain's TextLoader is perfect for this. It reads the content and wraps it into a Document object.

Try running this example to see how it works:

import os
from langchain_community.document_loaders import TextLoader

# Create a dummy text file for demonstration
file_content = "Hello CoddyKit learners!\nThis is a sample text file."
file_path = "sample.txt"
with open(file_path, "w") as f:
    f.write(file_content)

# Initialize the TextLoader with the file path
loader = TextLoader(file_path)

# Load the documents
documents = loader.load()

# Print the content of the first document
if documents:
    print(f"Loaded content:\n{documents[0].page_content}")
    print(f"Source: {documents[0].metadata.get('source')}")

# Clean up the dummy file
os.remove(file_path)

Understanding Document Objects

When a loader processes data, it creates one or more Document objects. These objects are fundamental in LangChain.

  • page_content: This is the main text extracted from your source.
  • metadata: A dictionary containing additional information like the source file path, page number (for PDFs), URL (for web pages), etc. This metadata is super useful for tracking and filtering!

Loaders standardize diverse data into this consistent format.

Loading PDF Documents

PDFs are common sources of information. LangChain provides the PyPDFLoader to extract text from PDF files. It uses the pypdf library under the hood.

Each page of a PDF typically becomes a separate Document object, with metadata indicating the page number.

from langchain_community.document_loaders import PyPDFLoader

# To use PyPDFLoader, you'd typically have a PDF file.
# For example, let's imagine 'my_report.pdf' exists.
# loader = PyPDFLoader("my_report.pdf")
# documents = loader.load()

print("PyPDFLoader is used to load text from PDF files.")
print("It often creates one Document per PDF page.")
print("Requires 'pypdf' library (pip install pypdf).")

Extracting Web Page Content

Need to get content from a website? The WebBaseLoader is your friend! It can fetch HTML content from URLs and extract the main text.

This is extremely useful for RAG systems that need to query up-to-date information from the internet.

from langchain_community.document_loaders import WebBaseLoader

# To use WebBaseLoader, you provide a list of URLs.
# loader = WebBaseLoader(["https://www.example.com"])
# documents = loader.load()

print("WebBaseLoader fetches content from specified URLs.")
print("It's great for pulling information from websites.")
print("Requires 'bs4' and 'requests' (pip install beautifulsoup4 requests).")

Loading from Directories

What if you have many files in a folder? The DirectoryLoader can process an entire directory of documents at once!

You can specify a glob pattern to filter for specific file types (e.g., *.txt, *.md). It can also use a specific loader for the files it finds.

import os
import shutil
from langchain_community.document_loaders import DirectoryLoader, TextLoader

# Create a dummy directory and files
dir_path = "temp_docs"
os.makedirs(dir_path, exist_ok=True)
with open(os.path.join(dir_path, "doc1.txt"), "w") as f:
    f.write("Content of document 1.")
with open(os.path.join(dir_path, "doc2.txt"), "w") as f:
    f.write("Content of document 2.")

# Initialize DirectoryLoader for .txt files
loader = DirectoryLoader(
    dir_path, glob="*.txt", loader_cls=TextLoader
)

# Load documents from the directory
documents = loader.load()

print(f"Found {len(documents)} documents in '{dir_path}'.")
for i, doc in enumerate(documents):
    print(f"Doc {i+1}: {doc.page_content}")

# Clean up the dummy directory
shutil.rmtree(dir_path)

Database and API Loaders

LangChain isn't just for files! It also offers loaders for various databases and APIs:

  • SQL Databases: Load data directly from tables using SQLDatabaseLoader.
  • NoSQL Databases: Load from MongoDB, Cassandra, and more.
  • APIs: Fetch data from REST APIs, Notion, Jira, Confluence, etc.

These loaders allow you to integrate live, structured data into your RAG pipeline, keeping your LLM's knowledge up-to-date.

More Common Document Loaders

LangChain supports an extensive list of document types. Here are a few more popular ones:

  • CSVLoader: For comma-separated value files.
  • JSONLoader: For structured JSON data.
  • MarkdownLoader: For Markdown files, respecting their structure.
  • EvernoteLoader, GoogleDriveLoader, S3DirectoryLoader: For cloud storage and productivity apps.

The flexibility of document loaders means you can pull data from almost anywhere!

Choose the Right Loader

You're building a RAG system and need to ingest data from three sources: a local folder with multiple text files, a PDF user manual, and a company's public documentation website. Which LangChain loaders would be most appropriate for each source?

Recap: Loading Diverse Data

In this lesson, you learned about the crucial role of Document Loaders in LangChain. These tools are the first step in bringing your data into an LLM-powered application.

  • We explored loaders for text files, PDFs, and web pages.
  • You saw how Document objects standardize data with page_content and metadata.
  • We also touched upon loading from directories, databases, and other diverse sources.

Mastering document loading is key to building powerful RAG systems that can access and understand a wide range of information!

常见问题解答

「加载多种文档类型」课时是免费的吗?

是的 — 「加载多种文档类型」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 LangChain / RAG / Vector DBs 课程的其余内容,请升级到 CoddyKit PRO。 LangChain / RAG / Vector DBs 课程共包含 4 节课。

「加载多种文档类型」这节课中我会学到什么?

探索 LangChain 的文档加载器,处理 PDF、网页、数据库等内容,并提取信息供 RAG 系统使用 你通过在浏览器中直接运行的动手代码来练习 LangChain / RAG / Vector DBs,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 LangChain / RAG / Vector DBs 需要有经验吗?

无需任何先前经验。CoddyKit 上的 LangChain / RAG / Vector DBs 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「加载多种文档类型」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 LangChain / RAG / Vector DBs 课中编写并运行代码吗?

能。每节 LangChain / RAG / Vector DBs 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 加载多种文档类型
  2. 了解文本切分策略
  3. 自定义文档切分
  4. 处理文档元数据与筛选
← 返回 LangChain / RAG / Vector DBs