PyMuPDF,LLM 和 RAG#

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

有一些知名的 LLM 解决方案,它们与 PyMuPDF 具有自己的接口 - 这是一个快速增长的领域,所以如果您发现更多,请告知我们!

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

LangChain 的集成#

通过使用他们专用的加载器,直接与 LangChain 集成是简单的,如下所示:

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

有关详细信息,请参阅 LangChain Using 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 格式导出您的文档,您需要一个单独的助手。包 PyMuPDF4LLMPyMuPDF 函数的高级封装器,它为每一页输出标准和表格文本,形成一个跨所有文档页面的集成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 Levels of Text Splitting