PyMuPDF, LLM 및 RAG¶
PyMuPDF 를 Large Language Model (LLM) 프레임워크 및 전체 RAG (Retrieval-Augmented Generation) 솔루션에 통합하면 문서 데이터를 제공하는 가장 빠르고 신뢰할 수 있는 방법을 제공합니다.
PyMuPDF 와 자체 인터페이스를 가진 몇 가지 잘 알려진 LLM 솔루션이 있습니다. 빠르게 성장하는 분야이므로 더 발견하시면 알려주세요!
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")
자세한 내용은 Building RAG from Scratch 를 참조하세요.
청킹을 위한 데이터 준비¶
데이터 청킹(또는 분할)은 LLM 데이터에 컨텍스트를 제공하는 데 필수적이며, PyMuPDF 가 이제 Markdown 출력을 지원하므로 Level 3 chunking 이 지원됨을 의미합니다.
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 를 참조하세요.
