안녕하세요! LLM 데이터 엔지니어링 시리즈, 5탄의 주제는 '그라운딩(Grounding)'입니다.
4탄에서는 PDF 내 표(Table) 데이터를 추출해 Pandas DataFrame으로 변환하는 파이프라인]을 다루었는데요. 오늘은 LLM 기반 문서 처리와 RAG(검색 증강 생성) 파이프라인을 구축할 때 마주치는 가장 거대한 벽 중 하나, 바로 '환각(Hallucination)과 출처 신뢰성 문제'를 해결하는 테크닉을 이야기해보려 합니다.
계약서나 재무제표 같은 엔터프라이즈 환경에서 AI가 "4페이지에 위약금 조항이 있습니다"라고 그럴듯하게 답변했는데, 막상 가보면 없거나 다른 조항인 경험 다들 있으실 겁니다. 모델이 강력해질수록 틀린 답을 더 자신 있게 말하곤 하죠.
이 문제를 뿌리부터 해결해 줄 핵심 개념이 바로 '그라운딩(Grounding)'입니다.
1. 그라운딩(Grounding)과 Ground Truth
그라운딩이란 AI의 출력 결과를 원본 근거 데이터에 단단히 연결하는 작업을 뜻합니다. 단순히 문맥상 그럴듯한 텍스트를 만들어내는 것이 아니라, 원본 문서에 사실로서 검증 가능하게 존재하는 내용인지 추적할 수 있도록 보장하는 것이죠.
이 개념은 측량학에서 유래한 'Ground Truth(실제 현장 측정값)'와 맞닿아 있습니다. 비정형 문서 추출에서 Ground Truth는 인간이 검증한 최종 정답을 의미합니다. 원본 문서 내에서 AI 답변의 근거를 기하학적으로 고정(그라운딩)할 수 있다면, 우리는 언제든 정답을 검증할 수 있는 신뢰성 높은 파이프라인을 얻게 됩니다.
2. 왜 LLM은 문서 출처를 자꾸 틀릴까?
가장 큰 이유는 대형 언어 모델(LLM)이 '토큰(Token) 공간'에서만 작동하기 때문입니다. LLM은 텍스트를 읽고 생성할 뿐, 문서가 가진 '공간적 구조'나 '물리적 위치'를 스스로 인식하지 못합니다.
"몇 번째 문단, 몇 번째 줄" 같은 텍스트 기반의 참조는 문서 렌더링 방식이나 청킹 기준에 따라 완전히 어긋나기 십상입니다. 반면, PDF 내부의 문자가 가진 '물리적 공간 좌표(Bounding Box)'는 **절대로 변하지 않는 결정론적 데이터(Source of Record)**입니다.
따라서 완벽한 그라운딩을 구현하려면, 의미론적(Semantic) 영역의 텍스트 데이터를 기하학적(Geometric) 영역의 좌표 데이터로 변환해 주는 다리가 필요합니다. PyMuPDF의 search_for 함수가 바로 이 역할을 수행합니다.
3. 실무 코드: '좌표 기반 앵커'를 활용한 LLM 컨텍스트 검증 파이프라인
실무에서 활용할 수 있는 구조는 간단합니다. 인덱싱(데이터 저장) 단계에서 텍스트의 좌표를 메타데이터로 함께 DB에 저장해두고, 쿼리(사용자 질문) 단계에서 LLM이 내뱉은 답변의 진위 여부를 이 좌표를 통해 검증하고 하이라이트 치는 구조입니다.
import pymupdf
import json
doc = pymupdf.open("annual_report.pdf")
# 인덱싱 시점: 공간 메타데이터를 포함한 코퍼스 구축
chunks = []
for page_num, page in enumerate(doc):
blocks = page.get_text("blocks") # (x0,y0,x1,y1, 텍스트, ...)
for block in blocks:
text = block[4].strip()
if not text:
continue
rect = pymupdf.Rect(block[:4])
chunks.append({
"page": page_num,
"text": text,
"bbox": list(rect), # 실제 현장 측정값(Ground Truth) 역할을 할 공간 앵커
})
# 쿼리 시점: LLM이 "net revenue declined"라는 문구를 인용하여 답변을 생성함
# 해당 주장의 실제 물리적 위치를 찾아 진위 여부를 검증
page = doc[3]
hits = page.search_for("net revenue declined")
if hits:
# LLM의 주장이 실제 존재하는 위치와 매핑됨을 확인하고
# 사용자를 위해 해당 영역에 하이라이트 표시를 추가
page.add_highlight_annot(hits)
4. 공간 좌표 그라운딩이 LLM 워크플로우에 가지는 의미
- 시각적 인용(Citation) 제공: "모델이 답변했습니다"라는 텍스트 나열을 넘어, 사용자에게 원본 문서의 정확한 하이라이트 영역을 크롭(Crop) 이미지나 주석으로 보여줄 수 있어 사용자 신뢰도가 극대화됩니다.
- RAG 청크 검증을 위한 체크섬(Checksum): 검색(Retrieve)된 텍스트가 컨텍스트 윈도우 안에서 꼬이거나 모델이 엉뚱한 조항과 매칭했을 때, 저장된
bbox좌표 연산을 통해 프로그램적으로 필터링할 수 있습니다. - 구조화된 공간 필터링: 재무제표를 예시로 들자면, 'Total(합계)'이라는 단어가 수십 번 나열됩니다. 단순 프롬프트 엔지니어링 대신,
page.find_tables()의 테이블 좌표와 문자의rect좌표 간의 교집합(Intersect)을 구해 어떤 테이블의 합계인지 수학적으로 특정할 수 있습니다 - 크로스 모달(Vision LLM) 양방향 그라운딩: 멀티모달 모델이 페이지 이미지에서 특정 관심 영역을 픽셀로 인지하면,
clip파라미터를 사용해 해당 영역의 정확한 시맨틱 텍스트를 복구할 수 있습니다.
인사이트
LLM 데이터 엔지니어링에서 그라운딩은 단순한 '텍스트 검색' 유틸리티가 아닙니다. 비정형 텍스트의 모호함을 PDF의 고정된 물리 구조와 단단히 묶어주는 연결고리입니다.
환각과 출처 오인 리스크를 완전히 제거하고 '감사 가능한(Auditable) AI 파이프라인'을 만들고 싶으시다면, 오늘부터 청크 아웃풋에 공간 좌표 시스템을 결합해 보시는 것을 강력히 추천합니다.
원문 참고: 문서 데이터 추출에서 그라운딩(Grounding)이란?
지난 시리즈 보기: