PyMuPDF、LLM 与 RAG#

PyMuPDF 集成到您的大型语言模型 (LLM) 框架和整体 RAG(检索增强生成)解决方案中,提供了最快速、最可靠的方式来传递文档数据。

有一些知名的 LLM 解决方案拥有自己的 PyMuPDF 接口——这是一个快速发展的领域,如果您发现更多,请告知我们!

如果您需要导出为 Markdown 或从文件获取 LlamaIndex Document

LangChain 集成#

通过使用 LangChain 专用的加载器,可以直接与其轻松集成,如下所示

from langchain_community.document_loaders import PyMuPDFLoader
loader = PyMuPDFLoader("example.pdf")
data = loader.load()

有关完整详细信息,请参阅LangChain 使用 PyMuPDF

LlamaIndex 集成#

使用 LlamaIndex 🦙 提供的专用 PyMuPDFReader 来管理您的文档加载。

from llama_index.readers.file import PyMuPDFReader
loader = PyMuPDFReader()
documents = loader.load(file_path="example.pdf")

了解更多,请参阅从零开始构建 RAG

准备数据进行分块#

分块(或分割)数据对于为您的 LLM 数据提供上下文至关重要,并且随着 PyMuPDF 现在支持 Markdown 输出,这意味着支持3 级分块

输出为 Markdown#

为了将文档导出为 Markdown 格式,您需要一个单独的辅助工具。PyMuPDF4LLM 包是 PyMuPDF 函数的高级封装,它为每个页面输出标准文本和表格文本,并将其整合成一个跨所有文档页面的 Markdown 格式字符串

# convert the document to markdown
import pymupdf4llm
md_text = pymupdf4llm.to_markdown("input.pdf")

# Write the text to some file in UTF8-encoding
import pathlib
pathlib.Path("output.md").write_bytes(md_text.encode())

更多信息请参考:PyMuPDF4LLM

如何使用 Markdown 输出#

一旦您的数据采用 Markdown 格式,您就可以对其进行分块/分割并提供给您的 LLM。例如,如果这是 LangChain,则执行以下操作

import pymupdf4llm
from langchain.text_splitter import MarkdownTextSplitter

# Get the MD text
md_text = pymupdf4llm.to_markdown("input.pdf")  # get markdown for all pages

splitter = MarkdownTextSplitter(chunk_size=40, chunk_overlap=0)

splitter.create_documents([md_text])

更多信息请参阅5 级文本分割