用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tomevault-io/skills-registry --skill langchain-document-loaders命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | langchain-document-loaders |
| description | 使用 LangChain 中的文档加载器集成指南,用于处理 PDF、网页、文本文件和 API Use when this capability is needed. |
| metadata | {"author":"evanfang0054"} |
文档加载器将来自各种来源和格式的数据提取到 LangChain 的标准化文档格式中。它们对于构建 RAG 系统至关重要,因为它们将原始数据转换为可处理的文本块和元数据。
pageContent(文本)和 metadata(来源信息、页码等)的对象| 加载器类型 | 最适合 | 包 | 主要特性 |
|---|---|---|---|
| PDFLoader | PDF 文件 | @langchain/community | 提取文本和页码 |
| CheerioWebBaseLoader | 网页(静态) | @langchain/community | 使用 Cheerio 进行 HTML 解析 |
| PlaywrightWebBaseLoader | 网页(动态) | @langchain/community | JavaScript 渲染的内容 |
| TextLoader | 纯文本文件 | langchain/document_loaders/fs/text | 简单文本文件 |
| JSONLoader | JSON 文件/API | langchain/document_loaders/fs/json | 提取特定 JSON 字段 |
| CSVLoader | CSV 文件 | @langchain/community | 表格数据 |
| DirectoryLoader | 多个文件 | langchain/document_loaders/fs/directory | 从目录批量加载 |
| GithubRepoLoader | GitHub 仓库 | @langchain/community | 克隆和加载仓库文件 |
| NotionLoader | Notion 页面 | @langchain/community | Notion 工作区数据 |
选择 PDFLoader 如果:
选择 CheerioWebBaseLoader 如果:
选择 PlaywrightWebBaseLoader 如果:
选择 TextLoader 如果:
import { PDFLoader } from "@langchain/community/document_loaders/fs/pdf";
// 加载 PDF 文件
const loader = new PDFLoader("path/to/document.pdf");
const docs = await loader.load();
console.log(`加载了 ${docs.length} 页`);
docs.forEach((doc, i) => {
console.log(`第 ${i + 1} 页:`, doc.metadata);
console.log(doc.pageContent.substring(0, 100));
});
// 每页都是单独的文档
// metadata 包括:source、pdf.totalPages、loc.pageNumber
import { CheerioWebBaseLoader } from "@langchain/community/document_loaders/web/cheerio";
// 加载单个 URL
const loader = new CheerioWebBaseLoader(
"https://docs.langchain.com"
);
const docs = await loader.load();
console.log(docs[0].pageContent);
console.log(docs[0].metadata); // { source: url, ... }
// 使用自定义选择器
const loaderWithSelector = new CheerioWebBaseLoader(
"https://news.ycombinator.com",
{
selector: ".storylink", // 仅提取特定元素
}
);
// 多个 URL
const loaderMultiple = new CheerioWebBaseLoader([
"https://example.com/page1",
"https://example.com/page2",
]);
const allDocs = await loaderMultiple.load();
import { PlaywrightWebBaseLoader } from "@langchain/community/document_loaders/web/playwright";
// 用于 JavaScript 渲染的页面
const loader = new PlaywrightWebBaseLoader("https://spa-app.com", {
launchOptions: {
headless: true,
},
gotoOptions: {
waitUntil: "networkidle", // 等待 JS 完成
},
evaluateOptions: {
// 自定义评估函数
evaluate: (page) => page.evaluate(() => document.body.innerText),
},
});
const docs = await loader.load();
import { TextLoader } from "langchain/document_loaders/fs/text";
const loader = new TextLoader("path/to/file.txt");
const docs = await loader.load();
// 返回包含整个文件内容的单个文档
console.log(docs[0].pageContent);
console.log(docs[0].metadata.source); // 文件路径
import { JSONLoader } from "langchain/document_loaders/fs/json";
// 使用特定字段提取加载 JSON
const loader = new JSONLoader(
"path/to/data.json",
["/texts/*/content"] // JSONPointer 以提取特定字段
);
const docs = await loader.load();
// 示例 JSON:{ "texts": [{ "content": "...", "id": 1 }] }
// 每个匹配的字段都成为一个文档
import { CSVLoader } from "@langchain/community/document_loaders/fs/csv";
const loader = new CSVLoader("path/to/data.csv", {
column: "text", // 用作 page_content 的列
separator: ",",
});
const docs = await loader.load();
// 每行都成为一个文档
// 其他列存储在 metadata 中
import { DirectoryLoader } from "langchain/document_loaders/fs/directory";
import { TextLoader } from "langchain/document_loaders/fs/text";
import { PDFLoader } from "@langchain/community/document_loaders/fs/pdf";
// 从目录加载所有文件
const loader = new DirectoryLoader(
"path/to/documents",
{
".txt": (path) => new TextLoader(path),
".pdf": (path) => new PDFLoader(path),
}
);
const docs = await loader.load();
console.log(`从目录加载了 ${docs.length} 个文档`);
import { GithubRepoLoader } from "@langchain/community/document_loaders/web/github";
const loader = new GithubRepoLoader(
"https://github.com/langchain-ai/langchainjs",
{
branch: "main",
recursive: true,
ignorePaths: ["node_modules/**", "dist/**"],
maxConcurrency: 5,
}
);
const docs = await loader.load();
// 每个文件都成为一个文档
import { CheerioWebBaseLoader } from "@langchain/community/document_loaders/web/cheerio";
const loader = new CheerioWebBaseLoader("https://blog.com/post");
const docs = await loader.load();
// 添加自定义元数据
const enrichedDocs = docs.map(doc => ({
...doc,
metadata: {
...doc.metadata,
loadedAt: new Date().toISOString(),
category: "blog",
},
}));
import { PDFLoader } from "@langchain/community/document_loaders/fs/pdf";
const loader = new PDFLoader("large-file.pdf");
// 使用 lazy() 处理大文件 - 流式传输文档
for await (const doc of loader.lazy()) {
console.log("正在处理页面:", doc.metadata.loc.pageNumber);
// 一次处理一页,而不将所有页面加载到内存中
}
✅ 从各种来源加载
✅ 带元数据提取
✅ 高效处理
✅ 自定义提取
❌ 从加密/受保护的文件中提取
❌ 直接处理二进制数据
❌ 处理所有 PDF 类型
❌ 绕过速率限制
// ❌ 如果未安装 pdf-parse 将失败
import { PDFLoader } from "@langchain/community/document_loaders/fs/pdf";
const loader = new PDFLoader("file.pdf");
// ✅ 首先安装依赖项
// npm install pdf-parse
const loader = new PDFLoader("file.pdf");
const docs = await loader.load(); // 有效!
修复:安装所需的依赖项:npm install pdf-parse
// ❌ 可能因 CORS 或阻止而失败
const loader = new CheerioWebBaseLoader("https://protected-site.com");
await loader.load(); // 错误!
// ✅ 检查 robots.txt 并使用适当的加载器
// 对于客户端阻止,在 Node.js 中运行(服务端)
// 对于动态内容,使用 Playwright
const loader = new PlaywrightWebBaseLoader("https://protected-site.com");
修复:对于被阻止的站点,使用 PlaywrightWebBaseLoader 或检查 robots.txt。
// ❌ 将巨大的 PDF 加载到内存中
const loader = new PDFLoader("huge-book.pdf");
const docs = await loader.load(); // 可能会崩溃!
// ✅ 使用延迟加载
for await (const doc of loader.lazy()) {
processDocument(doc);
// 一次只有一页在内存中
}
修复:对大文件使用 lazy() 方法。
// ❌ 相对路径可能无法按预期工作
const loader = new TextLoader("./data/file.txt");
// ✅ 使用绝对路径或 path 模块
import path from "path";
const filePath = path.join(process.cwd(), "data", "file.txt");
const loader = new TextLoader(filePath);
修复:使用绝对路径或 path 模块以确保可靠性。
// ❌ 对动态内容使用 Cheerio
const loader = new CheerioWebBaseLoader("https://react-app.com");
const docs = await loader.load();
// 内容为空或不完整!
// ✅ 对 JavaScript 渲染的页面使用 Playwright
const loader = new PlaywrightWebBaseLoader("https://react-app.com", {
gotoOptions: { waitUntil: "networkidle" }
});
修复:对 SPA 和动态内容使用 Playwright。
// ❌ 错误的 JSON 指针格式
const loader = new JSONLoader("data.json", ["texts.content"]);
// ✅ 正确的 JSON 指针格式(以 / 开头)
const loader = new JSONLoader("data.json", ["/texts/0/content"]);
修复:JSON 指针必须以 / 开头并使用 / 作为分隔符。
// ❌ 扩展名不匹配
const loader = new DirectoryLoader("docs", {
"txt": (path) => new TextLoader(path), // 错误!
});
// ✅ 包括点
const loader = new DirectoryLoader("docs", {
".txt": (path) => new TextLoader(path),
".pdf": (path) => new PDFLoader(path),
});
修复:文件扩展名必须包括点(.txt、.pdf)。
# 社区加载器
npm install @langchain/community
# PDF 支持
npm install pdf-parse
# 用于动态网页的 Playwright
npm install playwright
npx playwright install
Converted and distributed by TomeVault — claim your Tome and manage your conversions.