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 级文本分割