// education

PDF 문서를 읽고 답하는 RAG 문서 질의응답 시스템

수백 페이지에 달하는 PDF 문서, 규정집, 매뉴얼을 읽고 사용자의 질문에 해당 문서 구절을 출처로 인용하여 정확히 답변하는 PDF RAG 시스템을 제작합니다.


1. PDF RAG 전문 용어 사전 (Glossary)

), 마침표(.`), 띄어쓰기를 순차적으로 파악하여 의미 단락이 끊기지 않게 분할하는 청킹 도구입니다.


2. PDF 파싱 및 RAG 질의응답 시스템 파이썬 구현

from pypdf import PdfReader
from openai import OpenAI

client = OpenAI()

def process_pdf_and_ask(pdf_filepath, user_question):
    # 1. PDF 파일 텍스트 전체 추출
    reader = PdfReader(pdf_filepath)
    raw_text = ""
    for idx, page in enumerate(reader.pages):
        raw_text += f"
--- [Page {idx+1}] ---
" + page.extract_text()

    # 2. 프롬프트 컨텍스트에 PDF 문맥 주입
    prompt = f"""
너는 제공된 PDF 문서의 내용을 기반으로 질문에 사실만을 답변하는 문서 분석관이야.
문서에 존재하지 않는 정보라면 절대로 거짓으로 답변하지 말고 "제공된 PDF 문서에 해당 내용이 존재하지 않습니다"라고 답변해 줘.

[PDF 문서 컨텍스트]
{raw_text[:4000]} # 토큰 초과 방지 슬라이싱

[사용자 질문]
{user_question}
"""

    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
        temperature=0.0
    )
    return response.choices[0].message.content

# 실행 예제
print(process_pdf_and_ask("company_rules.pdf", "연차 사용 시 며칠 전에 신청해야 하나요?"))

3. 자주 묻는 질문 (Q&A)

Q. PDF 내 표(Table)나 그래프 데이터도 RAG가 잘 읽나요? A. 단순 텍스트 추출기를 쓰면 표의 행과 열이 뭉개져 엉뚱한 수치를 읽을 수 있습니다. 표가 많은 문서의 경우 pdfplumber로 표 구조를 마크다운 테이블 형태(|---|---|)로 파싱하거나 멀티모달 LLM 비전 모델로 이미지 그대로 전달하는 방식을 써야 합니다.

← 이전음성 인식(STT)과 음성 합성(TTS) 기반 Voice AI 구현 다음 →대화 및 문서를 자동 요약하여 레포트로 생성하는 AI 서비스