TL;DR
작성자는 LlamaParse가 인도 헌법처럼 각주가 많고 조문 경계가 중요한 문서에서 대규모 청크 병합과 각주 흡수로 인해 환각을 유발했다고 진단했고, PyMuPDF로 원시 텍스트를 추출해 각주 구분선 정규표현식으로 하단을 제거하고 Article 경계 기반으로 청킹해 3,248개의 정밀 청크를 생성했다고 보고했다. 각 청크에 article_number 메타데이터를 주입하고 LangGraph가 질의에서 특정 Article을 감지하면 Pinecone에 정확한 메타데이터 필터({"article_number": {"$eq": "19"}})를 적용해 벡터 검색을 우회하는 방식을 도입해 환각을 근본적으로 차단했다. 운영 안정성을 위해 파일 수준 SHA-256 해시와 결정론적 MD5 청크 ID를 도입해 변경된 파일만 재처리하고 upsert로 덮어쓰게 설계했으며, 이로써 재동기화 시 중복과 불일치 없이 안전하게 운영할 수 있다고 보고되었다.
실용적 조언
- 법률·헌법처럼 조문 경계와 각주가 중요한 문서는 범용 LLM 기반 파서를 신뢰하면 안 된다는 경험이 반복됐다. 원문 텍스트를 PyMuPDF로 직접 추출하고 문서 고유의 표식을 정규표현식으로 분할해 각주를 배제하는 전처리 파이프라인이 실무에서 효과를 냈다. 또한 질의 의도에서 특정 조문을 판별할 수 있다면 메타데이터 필터를 활용해 벡터 검색을 우회하는 것이 환각을 줄이는 실전적 방법이다.
섹션별 상세
용어 해설
- 검색 증강 생성(RAG)
- — RAG는 외부 문서에서 관련 컨텍스트를 검색해 LLM의 입력으로 주입한 뒤 답변을 생성하는 파이프라인이다. 이 방식은 검색 단계에서 불필요한 노이즈가 줄어들면 정확도가 크게 개선되지만, 검색 결과가 부정확하거나 메타데이터 필터링이 없으면 LLM이 잘못된 문맥을 근거로 환각을 생성한다. 본문에서는 RAG에서 정확한 청킹과 메타데이터 기반 필터링이 환각 방지에 핵심임을 전제로 삼는다.
- PyMuPDF
- — PyMuPDF는 PDF에서 텍스트와 페이지 구조를 직접 추출하는 경량 파서 라이브러리이다. 본문에서는 LLM 기반 파서 대신 PyMuPDF로 원문 텍스트를 얻어 정규표현식으로 페이지 내 구획(예: 각주 구분선)을 자르고 불필요 구간을 제거하는 데 사용되었다. 직접 텍스트를 제어하면 청킹 기준을 더 엄격하고 결정론적으로 만들 수 있다.
- 메타데이터 필터링(Metadata Filtering)
- — 메타데이터 필터링은 벡터 검색 이전에 메타데이터 조건(예: article_number)을 적용해 후보 문서를 선별하는 기법이다. 본문에서는 질의 의도에서 특정 조문을 감지하면 Pinecone 쿼리에 엄격한 article_number 일치 필터를 적용해 벡터 검색을 우회하고 정확한 문서만 반환하도록 설계했다. 이 방식은 숫자·표식 기반의 오탐지를 효과적으로 차단한다.
- 결정론적 청킹(Deterministic Chunking)
- — 결정론적 청킹은 같은 입력에서 항상 동일한 청크 ID와 분할 결과가 나오도록 해 재처리·동기화 시 중복을 방지하는 전략이다. 본문에서는 chunk ID를 MD5(filename + page + parent_idx + child_idx)로 생성하고 파일 해시(SHA-256)를 기록해 변경이 없으면 전처리를 건너뛰는 방식으로 구현되었다. 이 방식은 Pinecone upsert가 덮어쓰기 동작을 하도록 유도해 데이터 중복과 불일치를 제거한다.
언급된 도구
범용 LLM 기반 문서 파싱 도구로 사용되었으나 각주·조문 분할에서 실패했다.
PDF에서 원시 텍스트와 페이지 구조를 직접 추출하는 라이브러리로 각주 제거와 정규표현식 기반 분할에 사용되었다.
벡터 인덱스에 청크를 저장하고 메타데이터 필터를 적용해 조문 단위 검색을 수행하는 벡터 데이터베이스로 사용되었다.
질의의 의도를 판별해 retriever로 메타데이터를 전달하는 라우터 역할을 수행했다.
파일의 SHA-256 해시를 저장해 변경 검사를 수행하고 이던포턴시를 관리하는 저장소로 사용되었다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.