langchain框架-文档加载器详解
摘要
本文基于 LangChain 0.3.21 版本源码,梳理langchain_community.document_loaders
中涵盖的各类文档加载器。读者可按需查找,快速确认所需加载的文档能否能借助 LangChain 进行便捷的处理。
分类一:本地文件类型加载器
分类 | 加载器名称及说明 |
---|---|
本地文件类型加载器 - 文本类 | TextLoader:加载纯文本文件 PythonLoader:加载 Python 代码文件 TomlLoader:处理 Toml 格式文件 JSONLoader:读取 JSON 数据 |
本地文件类型加载器 - 文档类 | Docx2txtLoader:处理 Word 文档 PDFMinerLoader、PDFMinerPDFasHTMLLoader、PDFPlumberLoader、PyMuPDFLoader、PyPDFLoader、PyPDFium2Loader:加载 PDF 文件 UnstructuredWordDocumentLoader:处理 Word 相关文档 UnstructuredODTLoader:加载 OpenDocument 文本格式文件 VsdxLoader:加载 Visio 绘图文件 |
本地文件类型加载器 - 表格类 | CSVLoader:加载 CSV 表格文件 UnstructuredExcelLoader:处理 Excel 文件 UnstructuredTSVLoader:加载 TSV 文件 |
本地文件类型加载器 - 演示类 | UnstructuredPowerPointLoader:加载 PPT 文件 |
本地文件类型加载器 - 其他 | BibtexLoader:处理 BibTeX 文献数据 MHTMLLoader:加载 MHTML 文件 NotebookLoader:加载 Jupyter Notebook 文件 UnstructuredRSTLoader:处理 reStructuredText 文件 UnstructuredRTFLoader:加载 RTF 文件 UnstructuredXMLLoader:读取 XML 文件 |
word文档处理 :
Docx2txtLoader VS UnstructuredWordDocumentLoader
-
UnstructuredWordDocumentLoader:
-
结构化解析:可以识别文档中的不同元素,如标题、段落、列表等,将其转换为带有元数据的文本块,方便后续根据不同元素进行处理。
-
支持多种文件格式:除了标准的
.docx
文件,还可能支持其他与 Word 相关的文件格式。 -
可定制性强:可以通过配置参数来控制解析的方式和提取的内容。
-
-
Docx2txtLoader:
-
简单文本提取:仅提取文档中的文本内容,不考虑文档的结构信息,适用于只需要获取文本内容的场景。
-
轻量级处理:处理速度相对较快,因为只进行简单的文本提取,不涉及复杂的解析过程。
-
-
选择建议
-
若需要对文档进行深度分析,如识别不同的文本元素、根据标题和段落进行分层处理,建议使用
UnstructuredWordDocumentLoader
。 -
若仅需要获取文档中的纯文本内容,对处理速度有较高要求,且不关心文档的结构信息,
Docx2txtLoader
是更合适的选择。
-
PDF 文档处理:
-
PyPDFLoader:依赖
pypdf
库,主要用于文本提取,功能相对基础,但简单易用,适合快速提取文本信息。 -
PDFMinerLoader:基于
pdfminer.six
库,可以将 PDF 内容解析为文本,适用于需要提取纯文本信息的场景。 -
PDFMinerPDFasHTMLLoader:基于
pdfminer.six
库,将 PDF 转换为 HTML 格式,保留了一定的文档结构和格式信息,适合需要保留部分格式的场景。 -
PDFPlumberLoader:依赖
pdfplumber
库,它建立在pdfminer.six
之上,除了文本提取外,还能提取表格、图像等元素,并且可以获取页面布局信息,对于处理包含表格的 PDF 非常有用。 -
PyMuPDFLoader:依赖
PyMuPDF
(也称为fitz
),支持文本提取、图像提取、页面渲染等功能,能够处理复杂的 PDF 文档,并且在处理速度上有一定优势。 -
PyPDFium2Loader:依赖
pypdfium2
库,在处理加密、受保护的 PDF 文件方面表现较好,同时也能进行文本提取和页面渲染。PDFium 是一个开源的 PDF 渲染引擎,被广泛应用于 Chrome 等浏览器中。
选择建议
-
仅需提取纯文本信息:如果只需要提取 PDF 中的纯文本内容,且对格式要求不高,
PyPDFLoader
是一个简单易用的选择;如果需要处理一些复杂的 PDF 文档,PDFMinerLoader
也是一个不错的选择。 -
需要保留部分格式信息:
PDFMinerPDFasHTMLLoader
可以将 PDF 转换为 HTML 格式,保留一定的文档结构和格式信息,适合需要保留部分格式的场景。 -
处理包含表格的 PDF:
PDFPlumberLoader
能够提取表格、图像等元素,并且可以获取页面布局信息,是处理包含表格的 PDF 的首选。 -
处理复杂 PDF 文档:
PyMuPDFLoader
支持多种功能,能够处理复杂的 PDF 文档,并且在处理速度上有一定优势,适合处理大型、复杂的 PDF 文件。 -
处理加密、受保护的 PDF 文件:
PyPDFium2Loader
在处理加密、受保护的 PDF 文件方面表现较好,如果你需要处理这类文件,可以选择它。
分类二:云存储与数据库类型加载器
分类 | 加载器名称及说明 |
---|---|
云存储与数据库类型加载器 - 云存储 | AzureBlobStorageContainerLoader、AzureBlobStorageFileLoader:加载 Azure Blob 存储数据 GCSDirectoryLoader、GCSFileLoader:读取 Google Cloud Storage 文件 S3DirectoryLoader、S3FileLoader:处理 Amazon S3 存储的文件 OBSDirectoryLoader、OBSFileLoader:用于华为云对象存储 TencentCOSDirectoryLoader、TencentCOSFileLoader:加载腾讯云对象存储文件 OneDriveFileLoader、OneDriveLoader:获取 OneDrive 文件 |
云存储与数据库类型加载器 - 数据库 | AthenaLoader:连接 Amazon Athena 数据库 BigQueryLoader:读取 Google BigQuery 数据 CassandraLoader:加载 Apache Cassandra 数据库内容 DuckDBLoader:处理 DuckDB 数据 GitLoader:获取 Git 仓库信息 MongodbLoader:读取 MongoDB 数据 OracleAutonomousDatabaseLoader、OracleDocLoader:连接 Oracle 数据库 SQLDatabaseLoader:用于通用 SQL 数据库加载 SnowflakeLoader:加载 Snowflake 数据库数据 SurrealDBLoader:处理 SurrealDB 数据 TiDBLoader:连接 TiDB 数据库 |
分类三:网络与在线平台类型加载器
分类 | 加载器名称及说明 |
---|---|
网络与在线平台类型加载器 - 网页相关 | AsyncChromiumLoader、AsyncHtmlLoader、BSHTMLLoader、BrowserbaseLoader、BrowserlessLoader、PlaywrightURLLoader、SeleniumURLLoader、UnstructuredHTMLLoader、WebBaseLoader:用于加载网页内容 RecursiveUrlLoader:递归加载网页链接 SitemapLoader:读取网站地图文件 |
网络与在线平台类型加载器 - 在线平台 | ArxivLoader:获取 arXiv 论文 BiliBiliLoader:加载哔哩哔哩视频信息 CollegeConfidentialLoader:读取 College Confidential 网站内容 ConfluenceLoader:获取 Confluence 平台文档 DocusaurusLoader:加载 Docusaurus 文档 DiffbotLoader:从 Diffbot 平台获取数据 DocugamiLoader:读取 Docugami 文档 FacebookChatLoader:加载 Facebook 聊天记录 FigmaFileLoader:获取 Figma 文件 GitHubIssuesLoader:读取 GitHub 问题 GitbookLoader:加载 Gitbook 文档 GithubFileLoader:获取 GitHub 文件 GoogleDriveLoader:读取 Google Drive 文件 HNLoader:加载 Hacker News 内容 IFixitLoader:获取 IFixit 维修指南 IMSDbLoader:读取 IMSDb 电影信息 JoplinLoader:加载 Joplin 笔记 MastodonTootsLoader:获取 Mastodon 平台帖子 ModernTreasuryLoader:读取 Modern Treasury 平台数据 NewsURLLoader:加载新闻网页 NotionDBLoader、NotionDirectoryLoader:读取 Notion 数据 OpenCityDataLoader:获取开放城市数据 PsychicLoader:从 Psychic 平台加载数据 PubMedLoader:获取 PubMed 医学文献 ReadTheDocsLoader:加载 Read the Docs 文档 RedditPostsLoader:读取 Reddit 帖子 RoamLoader:加载 Roam Research 笔记 ScrapflyLoader、ScrapingAntLoader:用于网页抓取 SharePointLoader:获取 SharePoint 文档 SlackDirectoryLoader:加载 Slack 目录 TelegramChatApiLoader、TelegramChatFileLoader、TelegramChatLoader:获取 Telegram 聊天数据 TwitterTweetLoader:加载 Twitter 推文 WhatsAppChatLoader:读取 WhatsApp 聊天记录 WikipediaLoader:获取维基百科内容 YuqueLoader:加载语雀文档 |
分类四:特殊类型加载器
分类 | 加载器名称及说明 |
---|---|
特殊类型加载器 - 多媒体类 | AssemblyAIAudioLoaderById、AssemblyAIAudioTranscriptLoader:加载音频及转录数据 GoogleSpeechToTextLoader:将语音转换为文本 ImageCaptionLoader:获取图像说明 SRTLoader:加载字幕文件 YoutubeAudioLoader、YoutubeLoader:获取 YouTube 视频及音频 |
特殊类型加载器 - 数据处理与分析类 | DataFrameLoader、GeoDataFrameLoader、PolarsDataFrameLoader、PySparkDataFrameLoader:加载数据框 TensorflowDatasetLoader:加载 TensorFlow 数据集 |
特殊类型加载器 - 区块链相关 | BlockchainDocumentLoader:加载区块链文档 EtherscanLoader:获取 Etherscan 区块链数据 |
特殊类型加载器 - 其他 | AcreomLoader、AirbyteCDKLoader 等以 Airbyte 开头的加载器:从不同数据源(如 Gong、Hubspot 等)获取数据 ApifyDatasetLoader:加载 Apify 数据集 ArcGISLoader:获取 ArcGIS 数据 AstraDBLoader:加载 AstraDB 数据 AzureAIDataLoader、AzureAIDocumentIntelligenceLoader:获取 Azure AI 相关数据 BlobLoader、FileSystemBlobLoader、CloudBlobLoader:处理 Blob 数据 BraveSearchLoader:从 Brave 搜索引擎获取数据 ConcurrentLoader:并发加载数据 CubeSemanticLoader:加载 Cube 语义数据 DatadogLogsLoader:加载 Datadog 日志 DedocAPIFileLoader、DedocFileLoader、DedocPDFLoader:通过 Dedoc 处理文件 HuggingFaceDatasetLoader、HuggingFaceModelLoader:加载 Hugging Face 相关数据和模型 IuguLoader:获取 Iugu 平台数据 KineticaLoader:加载 Kinetica 数据 LakeFSLoader:加载 LakeFS 数据 LarkSuiteDocLoader:加载飞书文档 LLMSherpaFileLoader:加载 LLMSherpa 文件 MWDumpLoader:加载 MediaWiki 转储文件 MathpixPDFLoader:处理 Mathpix 格式 PDF MergedDataLoader:合并数据 NeedleLoader:获取 Needle 平台数据 ObsidianLoader:加载 Obsidian 笔记 OnlinePDFLoader:加载在线 PDF PebbloSafeLoader、PebbloTextLoader:加载 Pebblo 文件 RedditPostsLoader:加载 Reddit 帖子 RSSFeedLoader:加载 RSS 订阅源 SpreedlyLoader:获取 Spreedly 数据 StripeLoader:加载 Stripe 数据 WeatherDataLoader:获取天气数据 XorbitsLoader:加载 Xorbits 数据 |
数据框加载:
数据框(DataFrame)是一种二维的数据结构,它由行和列组成,类似于电子表格或数据库中的表。数据框可以存储不同类型的数据,如数值、字符串、日期等,并且可以对数据进行各种操作和分析。以下是对这几种数据框加载器的介绍:
-
DataFrameLoader:通常用于加载常规的表格数据,支持多种数据来源,如 CSV、Excel 等格式的文件,将其转换为数据框对象,以便在后续的数据分析或机器学习任务中进行处理。它提供了基本的加载功能,能够处理常见的数据格式转换和数据清洗操作。
-
GeoDataFrameLoader:专门用于加载地理空间数据,它在 DataFrame 的基础上增加了对地理空间数据类型的支持,如点、线、面等几何对象。可以处理包含地理坐标信息的文件,如 Shapefile、GeoJSON 等格式,方便进行地理空间分析,如地图绘制、空间查询、地理信息系统(GIS)相关的操作等。
-
PolarsDataFrameLoader:使用 Polars 库来加载数据并创建数据框。Polars 是一个快速的、多线程的数据处理库,对于处理大规模数据具有较高的性能。该加载器可以利用 Polars 的高效数据处理能力,快速加载和处理数据,支持多种数据格式,如 CSV、Parquet 等,并提供了丰富的数据分析和转换功能。
-
PySparkDataFrameLoader:用于在 Apache Spark 环境中加载数据并创建数据框。它利用 Spark 的分布式计算能力,可以处理大规模的数据集,支持多种数据源,如 Hadoop 分布式文件系统(HDFS)、Amazon S3 等存储系统中的数据文件,适用于需要进行分布式数据处理和大规模数据分析的场景,如数据挖掘、机器学习算法的分布式训练等。
自定义文档加载器
若上述表格中未涵盖您所需的文档加载器,您可借助 LangChain 的GenericLoader
、BlobLoader
与BaseBlobParser
,灵活创建自定义文档加载器。通过这种方式,无论是特殊格式文件、小众数据源,还是特定场景下的数据读取需求,均可得到满足。具体实现方法与详细示例,您可参考 LangChain 官方文档获取指导。
Custom Document Loader | LangChain中文网