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 格式导出您的文档,您需要一个单独的助手。包 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 Levels of Text Splitting