当前位置: 首页 > news >正文

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 的GenericLoaderBlobLoaderBaseBlobParser,灵活创建自定义文档加载器。通过这种方式,无论是特殊格式文件、小众数据源,还是特定场景下的数据读取需求,均可得到满足。具体实现方法与详细示例,您可参考 LangChain 官方文档获取指导。

    Custom Document Loader | LangChain中文网

    相关文章:

  • Arm系统ubuntu20.04中自带的火狐浏览器打开网页B站视频和百度网盘网页视频,视频无法打开,并且没有声音——(本质上解决)
  • DeepSeek-V3技术架构深度解析与性能优化实践
  • 力扣每日打卡 1534. 统计好三元组 (简单)
  • 从代码学习深度学习 - 自注意力和位置编码 PyTorch 版
  • 记录 | Pycharm中如何调用Anaconda的虚拟环境
  • 基于MCP协议的多模态思维链在医疗系统改造中的融合研究
  • 【Code】《代码整洁之道》笔记-Chapter16-重构SerialDate
  • 驱动开发硬核特训 · USB 摄像头专题:原理 + 实战深度解析(基于 linux-imx)
  • Python爬虫第14节-如何爬取Ajax的数据
  • 代码随想录笔记-哈希表
  • 万字长篇————C语言指针学习汇总
  • 数据库表设计五层分类系统表设计
  • 测试定时发布
  • How AI could empower any business - Andrew Ng
  • VueDOMPurifyHTML 防止 ​​XSS(跨站脚本攻击)​​ 风险
  • 组合数哭唧唧
  • C# 基类型和派生类型之间的转型
  • DDS信号发生器设计(Quartus)
  • 35. 搜索插入位置
  • python数据类型处理题,输出素数题
  • 巴防长称中俄可参与克什米尔恐袭事件国际调查,外交部回应
  • 野猪穿过江苏电视台楼前广场,被抓捕后送往红山森林动物园
  • 最高法专门规范涉企案件审执工作:从源头防止趋利性执法司法
  • 保时捷中国研发中心落户上海虹桥商务区,计划下半年投入运营
  • 金正恩出席朝鲜人民军海军驱逐舰入水仪式
  • 政治局会议深度|提出“设立新型政策性金融工具”有何深意?