핵심 요약
인도 법률 문서를 대상으로 Qdrant와 Supabase를 활용해 문서 변경 시 기존 벡터를 자동 삭제하고 재인덱싱하는 멱등성 기반의 RAG 시스템 구축 사례이다.
배경
인도 법률(헌법, IT법 등)을 다루는 AI 서비스를 개발하며, 법령 개정 시 발생하는 벡터 데이터의 불일치와 중복 문제를 해결하기 위해 SHA-256 해시 기반의 문서 관리 시스템을 구축했다.
의미 / 영향
이 사례는 RAG 시스템이 단순한 검색을 넘어 데이터 생명주기 관리(Lifecycle Management)가 중요함을 시사한다. 특히 법률과 같이 정확성이 생명인 분야에서는 해시 기반의 버전 관리와 부모-자식 청킹이 표준적인 설계 패턴이 될 수 있다.
커뮤니티 반응
작성자의 구체적인 아키텍처 공유에 대해 긍정적인 반응이며, 특히 법률 도메인에서의 데이터 정확성 확보 방안에 주목하고 있다.
주요 논점
01찬성다수
별도의 Postgres 레지스트리를 사용하는 것이 Qdrant 페이로드 스캔보다 조회 성능(O(1))과 감사 추적 측면에서 유리하다.
합의점 vs 논쟁점
합의점
- 법률 도메인에서는 단 하나의 잘못된 조항이 전체 추론 체인을 망칠 수 있으므로 데이터 일관성이 최우선이다.
- 단순 재인덱싱은 벡터 중복 문제를 야기하므로 명시적인 삭제 또는 덮어쓰기 전략이 필요하다.
실용적 조언
- 벡터 ID 생성 시 파일 해시와 인덱스를 조합한 uuid5를 사용하면 중복 인덱싱 문제를 원천 차단할 수 있다.
- 자식 청크 페이로드에 부모 텍스트를 미리 저장해두면 검색 후 추가 쿼리 없이 즉시 LLM 프롬프트를 구성할 수 있다.
전문가 의견
- 데이터 일관성이 중요한 프로덕션 환경에서는 벡터 DB를 유일한 신뢰 소스로 사용하기보다 관계형 DB와 동기화하는 아키텍처가 더 견고하다.
언급된 도구
섹션별 상세
문서 버전 관리와 벡터 중복 문제 해결을 위해 Postgres를 '신뢰 소스(Source of Truth)'로 삼아 파일 해시(SHA-256)를 비교하는 레지스트리 시스템을 도입했다. 단순한 재업로드는 구버전과 신버전 벡터가 공존하게 하여 검색 정확도를 떨어뜨리므로, 레지스트리를 통해 신규, 변경, 삭제된 파일을 식별하고 변경된 경우에만 기존 벡터를 삭제 후 재인덱싱하여 데이터 일관성을 유지한다.
Qdrant 페이로드 필터를 활용하여 효율적인 파일 단위 삭제를 구현했다. 개별 벡터 ID를 일일이 추적하는 대신 모든 청크에 'source_file' 필드를 인덱싱된 페이로드로 추가했다. Python 클라이언트의 Filter 기능을 사용하여 특정 파일명과 일치하는 모든 포인트를 한 번의 API 호출로 제거함으로써 관리 복잡도를 낮추고 고아 벡터 발생을 방지했다.
정밀도와 문맥을 모두 확보하기 위해 부모-자식 청킹(Parent-Child Chunking) 전략을 사용했다. 검색은 400자의 작은 자식 청크로 수행하여 정밀도를 높이고, LLM에 전달할 때는 2000자의 부모 청크를 제공하여 풍부한 문맥을 확보했다. 각 자식 청크의 페이로드에 부모 텍스트를 직접 포함시켜 추가 쿼리 없이 한 번의 조회로 필요한 정보를 모두 가져오도록 설계했다.
결정론적 UUID를 통해 인덱싱 파이프라인의 멱등성을 확보했다. 파일 해시와 청크 인덱스를 조합한 'uuid.uuid5'를 사용하여 벡터 ID를 생성함으로써 동일한 내용의 청크는 항상 동일한 ID를 갖게 했다. 이는 시스템 장애로 인덱싱이 중복 실행되어도 Qdrant에서 덮어쓰기(Upsert)로 처리되어 데이터 중복이 발생하지 않는 효과를 준다.
대규모 문서 처리를 위한 임베딩 배치 최적화를 진행했다. 인도 헌법과 같은 대용량 파일 처리 시 Jina AI API 타임아웃 문제를 해결하기 위해 배치 크기를 5개로 제한하고 200ms의 지연 시간을 두는 전략을 사용했다. 처리 속도는 다소 느려졌으나 모든 파일 크기에서 안정적인 임베딩 생성이 가능해졌음을 확인했다.
실무 Takeaway
- RAG 시스템에서 문서 변경 관리를 위해 벡터 DB 외에 별도의 메타데이터 레지스트리(Postgres 등) 운영이 필수적이다.
- 부모-자식 청킹 전략은 검색의 정밀도와 생성의 문맥 품질 사이의 균형을 맞추는 효과적인 방법이다.
- 결정론적 ID 생성(uuid5)을 통해 인덱싱 파이프라인의 멱등성을 확보하고 중복 데이터를 방지할 수 있다.
- 대용량 문서 임베딩 시 API 제한을 고려한 적절한 배치 처리와 예외 처리가 시스템 안정성에 중요하다.
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료