一键导入
langchain-document-loaders
Guide to using document loader integrations in LangChain for PDFs, web pages, text files, and APIs
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Guide to using document loader integrations in LangChain for PDFs, web pages, text files, and APIs
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | langchain-document-loaders |
| description | Guide to using document loader integrations in LangChain for PDFs, web pages, text files, and APIs |
| language | python |
Document loaders extract data from various sources and formats into LangChain's standardized Document format. They're essential for building RAG systems, as they convert raw data into processable text chunks with metadata.
page_content (text) and metadata (source info, page numbers, etc.)| Loader Type | Best For | Package | Key Features |
|---|---|---|---|
| PyPDFLoader | PDF files | langchain-community | Page-by-page extraction |
| WebBaseLoader | Web pages | langchain-community | HTML parsing with BeautifulSoup |
| TextLoader | Plain text files | langchain-community | Simple text files |
| JSONLoader | JSON files/APIs | langchain-community | Extract specific JSON fields |
| CSVLoader | CSV files | langchain-community | Tabular data |
| DirectoryLoader | Multiple files | langchain-community | Bulk loading from directories |
| UnstructuredLoader | Various formats | langchain-community | PDFs, DOCXs, PPTs, images |
Choose PyPDFLoader if:
Choose WebBaseLoader if:
Choose UnstructuredLoader if:
from langchain_community.document_loaders import PyPDFLoader
# Load PDF file
loader = PyPDFLoader("path/to/document.pdf")
docs = loader.load()
print(f"Loaded {len(docs)} pages")
for i, doc in enumerate(docs):
print(f"Page {i + 1}:", doc.metadata)
print(doc.page_content[:100])
# Each page is a separate document
# metadata includes: source, page number
# Lazy loading for large PDFs
loader = PyPDFLoader("large-file.pdf")
for doc in loader.lazy_load():
print(f"Processing page {doc.metadata['page']}")
from langchain_community.document_loaders import WebBaseLoader
# Load single URL
loader = WebBaseLoader("https://docs.langchain.com")
docs = loader.load()
print(docs[0].page_content)
print(docs[0].metadata) # {'source': url, ...}
# With custom BeautifulSoup parsing
loader = WebBaseLoader(
"https://news.ycombinator.com",
bs_kwargs={
"parse_only": bs4.SoupStrainer(class_=("storylink", "subtext"))
}
)
# Multiple URLs
loader = WebBaseLoader([
"https://example.com/page1",
"https://example.com/page2",
])
docs = loader.load()
from langchain_community.document_loaders import TextLoader
loader = TextLoader("path/to/file.txt")
docs = loader.load()
# Returns single document with entire file content
print(docs[0].page_content)
print(docs[0].metadata["source"]) # File path
# With specific encoding
loader = TextLoader("file.txt", encoding="utf-8")
from langchain_community.document_loaders import JSONLoader
import json
# Load JSON with specific field extraction
loader = JSONLoader(
file_path="path/to/data.json",
jq_schema=".texts[].content", # jq syntax to extract fields
text_content=False
)
docs = loader.load()
# Example JSON: {"texts": [{"content": "...", "id": 1}]}
# Each matching field becomes a document
# With metadata function
def metadata_func(record: dict, metadata: dict) -> dict:
metadata["id"] = record.get("id")
metadata["category"] = record.get("category")
return metadata
loader = JSONLoader(
file_path="data.json",
jq_schema=".items[]",
content_key="text",
metadata_func=metadata_func
)
from langchain_community.document_loaders import CSVLoader
loader = CSVLoader(
file_path="path/to/data.csv",
source_column="source", # Column for metadata
)
docs = loader.load()
# Each row becomes a document
# All columns stored in metadata
from langchain_community.document_loaders import DirectoryLoader, TextLoader
# Load all text files from directory
loader = DirectoryLoader(
"path/to/documents",
glob="**/*.txt", # Pattern for files to load
loader_cls=TextLoader
)
docs = loader.load()
print(f"Loaded {len(docs)} documents")
# With multiple file types
from langchain_community.document_loaders import PyPDFLoader
# Custom loader for different file types
def get_loader(file_path):
if file_path.endswith(".pdf"):
return PyPDFLoader(file_path)
elif file_path.endswith(".txt"):
return TextLoader(file_path)
from langchain_community.document_loaders import UnstructuredFileLoader
# Handles PDFs, DOCXs, PPTs, images, etc.
loader = UnstructuredFileLoader("path/to/document.docx")
docs = loader.load()
# With OCR for scanned documents
loader = UnstructuredFileLoader(
"scanned.pdf",
strategy="ocr_only", # Use OCR
languages=["eng"]
)
# UnstructuredURLLoader for web pages
from langchain_community.document_loaders import UnstructuredURLLoader
loader = UnstructuredURLLoader(urls=["https://example.com"])
docs = loader.load()
from langchain_community.document_loaders import S3FileLoader
loader = S3FileLoader(
bucket="my-bucket",
key="documents/file.pdf"
)
docs = loader.load()
# S3 Directory Loader
from langchain_community.document_loaders import S3DirectoryLoader
loader = S3DirectoryLoader(
bucket="my-bucket",
prefix="documents/"
)
docs = loader.load()
from langchain_community.document_loaders import TextLoader
from datetime import datetime
loader = TextLoader("document.txt")
docs = loader.load()
# Enrich with custom metadata
for doc in docs:
doc.metadata["loaded_at"] = datetime.now().isoformat()
doc.metadata["category"] = "research"
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("large-file.pdf")
# Stream documents one at a time
for doc in loader.lazy_load():
print(f"Processing page {doc.metadata.get('page', 0)}")
# Process without loading all pages into memory
✅ Load from various sources
✅ Extract with metadata
✅ Process efficiently
✅ Customize extraction
❌ Extract from encrypted/protected files
❌ Process all formats automatically
❌ Bypass rate limits
# ❌ OLD: Using langchain imports
from langchain.document_loaders import PyPDFLoader # Deprecated!
# ✅ NEW: Use community package
from langchain_community.document_loaders import PyPDFLoader
Fix: Use langchain-community package.
# ❌ PyPDF may not work for complex PDFs
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("complex.pdf")
docs = loader.load() # Poor extraction!
# ✅ Use Unstructured for complex PDFs
from langchain_community.document_loaders import UnstructuredPDFLoader
loader = UnstructuredPDFLoader("complex.pdf")
docs = loader.load() # Better extraction
Fix: Use UnstructuredPDFLoader for complex layouts.
# ❌ Missing dependencies
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://example.com")
# ImportError: bs4 not found!
# ✅ Install required packages
# pip install beautifulsoup4 lxml
Fix: Install beautifulsoup4 and lxml.
# ❌ Unstructured may need API key for advanced features
from langchain_community.document_loaders import UnstructuredFileLoader
loader = UnstructuredFileLoader("file.pdf", strategy="ocr_only")
# May fail without API key!
# ✅ Set API key or install dependencies
# pip install unstructured[local-inference]
# Or set UNSTRUCTURED_API_KEY environment variable
Fix: Install local dependencies or use API key.
# ❌ Default encoding may fail
loader = TextLoader("file.txt")
docs = loader.load() # UnicodeDecodeError!
# ✅ Specify encoding
loader = TextLoader("file.txt", encoding="utf-8")
docs = loader.load()
Fix: Specify correct encoding for text files.
# ❌ Missing AWS credentials
from langchain_community.document_loaders import S3FileLoader
loader = S3FileLoader("bucket", "key")
docs = loader.load() # Credential error!
# ✅ Configure AWS credentials
# Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
# Or use AWS CLI: aws configure
Fix: Configure AWS credentials properly.
# Community loaders
pip install langchain-community
# PDF support
pip install pypdf
# Web scraping
pip install beautifulsoup4 lxml
# Unstructured (advanced)
pip install unstructured
# or with local inference
pip install "unstructured[local-inference]"
Using the Deep Agents CLI - terminal interface, persistent memory with AGENTS.md, project conventions, skills directories, and CLI commands.
Understanding Deep Agents framework - what they are, how to create them with createDeepAgent, and the agent harness architecture with built-in middleware for planning, filesystems, and subagents.
Creating and using custom skills with progressive disclosure, SKILL.md format, and the Agent Skills protocol in Deep Agents.
Using the Deep Agents CLI - terminal interface, persistent memory with AGENTS.md, project conventions, skills directories, and CLI commands.
Using FilesystemMiddleware with virtual filesystems, backends (State, Store, Filesystem, Composite), and context management for Deep Agents.
Using FilesystemMiddleware with virtual filesystems, backends (State, Store, Filesystem, Composite), and context management for Deep Agents.