Skip to content

数据加载Document Loaders

在 LangChain 中,Document Loaders 是用于从各种数据源加载文档的工具。这些文档可以是文本文件、PDF、网页、数据库记录等。Document Loaders 的主要作用是将这些数据源中的内容加载为 LangChain 可以处理的格式,通常是 Document 对象。

常见的 Document Loaders

  1. TextLoader: 用于加载纯文本文件。

    python
    from langchain.document_loaders import TextLoader
    
    loader = TextLoader("example.txt")
    documents = loader.load()
  2. PDFLoader: 用于加载 PDF 文件。

    python
    from langchain.document_loaders import PDFLoader
    
    loader = PDFLoader("example.pdf")
    documents = loader.load()
  3. WebBaseLoader: 用于加载网页内容。

    python
    from langchain.document_loaders import WebBaseLoader
    
    loader = WebBaseLoader("https://example.com")
    documents = loader.load()
  4. CSVLoader: 用于加载 CSV 文件。

    python
    from langchain.document_loaders import CSVLoader
    
    loader = CSVLoader("example.csv")
    documents = loader.load()
  5. DirectoryLoader: 用于加载一个目录下的所有文件。

    python
    from langchain.document_loaders import DirectoryLoader
    
    loader = DirectoryLoader("path/to/directory", glob="*.txt")
    documents = loader.load()
  6. NotionLoader: 用于加载 Notion 页面。

    python
    from langchain.document_loaders import NotionLoader
    
    loader = NotionLoader("notion_page_url")
    documents = loader.load()

自定义 Document Loader

如果你需要从特定的数据源加载文档,而 LangChain 没有提供现成的 Loader,你可以自定义一个 Loader。自定义 Loader 需要继承 BaseLoader 类,并实现 load 方法。

python
from langchain.document_loaders.base import BaseLoader
from langchain.schema import Document

class CustomLoader(BaseLoader):
    def __init__(self, data_source):
        self.data_source = data_source

    def load(self):
        # 实现加载逻辑
        data = self._fetch_data_from_source()
        documents = [Document(page_content=item) for item in data]
        return documents

    def _fetch_data_from_source(self):
        # 从数据源获取数据
        return ["data1", "data2", "data3"]

# 使用自定义 Loader
loader = CustomLoader("custom_data_source")
documents = loader.load()

处理加载的文档

加载的文档通常是 Document 对象的列表,每个 Document 对象包含 page_contentmetadata 两个属性。

python
for doc in documents:
    print(f"Content: {doc.page_content}")
    print(f"Metadata: {doc.metadata}")

Document Loaders 是 LangChain 中非常重要的组件,它们帮助我们从各种数据源中加载文档,并将其转换为 LangChain 可以处理的格式。通过使用现有的 Loader 或自定义 Loader,你可以轻松地将不同来源的数据集成到你的 LangChain 应用中。