프로덕션 RAG: 500만 개 문서 처리하며 배운 것들
게시일: 2025년 11월 23일 | 원문 작성일: 2025년 10월 20일 | 저자: Abdellatif Abdelfattah | 원문 보기
핵심 요약
지난 8개월간 RAG 최전선에서 싸우며 발견한 진실: 데모와 프로덕션 사이의 차이는 항상 똑같은 것들 때문이에요.
- 쿼리 생성과 리랭킹이 가장 큰 효과가 있어요
- 청킹 전략은 시간이 제일 많이 걸리지만 필수입니다
- 메타데이터를 LLM에 넘기는 것만으로도 엄청난 개선이 있어요
- 모든 질문이 RAG로 해결되는 건 아니에요 - 쿼리 라우팅이 필요합니다
저는 지난 8개월을 RAG에 파묻혀 보냈어요. 실제로 작동한 것과 시간 낭비였던 것을 공유하고 싶네요. Usul AI (900만 페이지)와 이름을 밝힐 수 없는 법률 AI 엔터프라이즈 (400만 페이지)를 위한 RAG를 만들었습니다.
Langchain + Llamaindex
유튜브 튜토리얼부터 시작했어요. 처음엔 Langchain → Llamaindex 순으로요. 며칠 만에 작동하는 프로토타입을 만들었고 잘 되고 있다고 생각했죠. 데이터 일부(100개 문서)로 테스트를 돌렸고 결과가 훌륭해 보였어요. 다음 며칠은 프로덕션 데이터셋에 파이프라인을 돌리는 데 보냈고, 일주일 만에 모든 게 작동했어요 — 놀라웠죠.
그런데 아니었어요. 결과가 형편없었지만 실제 사용자들만 그걸 체감했죠. 다음 몇 달간 시스템의 각 부분을 하나씩 다시 작성하면서 성능을 원하는 수준으로 끌어올렸어요. 여기 ROI 순으로 정리한 우리가 한 일들이 있어요.
실제로 효과가 있었던 것들
쿼리 생성 (Query Generation)
모든 맥락이 사용자의 마지막 쿼리에만 담기는 건 아니에요. LLM이 스레드를 리뷰하고 여러 개의 시맨틱 + 키워드 쿼리를 생성하도록 했어요. 이 쿼리들을 모두 병렬로 처리하고 리랭커로 전달했죠. 덕분에 더 넓은 범위를 다룰 수 있었고 하이브리드 검색으로 계산한 점수에 의존하지 않아도 됐어요.
리랭킹 (Reranking)
추가할 5줄 코드 중 가장 큰 효과를 내요. 청크 순위가 엄청나게 많이 바뀌었어요. 예상보다 훨씬 더요. 리랭킹은 청크를 충분히 주기만 하면 나쁜 셋업도 많이 보완할 수 있어요. 이상적인 리랭커 셋업은 50개 청크 입력 → 15개 출력이었습니다.
청킹 전략 (Chunking Strategy)
이건 엄청난 노력이 필요해요. 대부분의 시간을 여기에 쓸 거예요. 두 엔터프라이즈 모두를 위한 커스텀 플로우를 만들었어요. 데이터를 이해하고, 청크를 리뷰하고, a) 청크가 단어나 문장 중간에서 잘리지 않는지 b) 각 청크가 논리적 단위이고 독립적으로 정보를 담고 있는지 확인해야 해요.
메타데이터를 LLM에 전달
처음엔 청크 텍스트만 LLM에 전달했어요. 실험을 돌려봤더니 관련 메타데이터(제목, 저자 등)도 함께 주입하면 맥락과 답변이 엄청나게 개선되더라고요.
쿼리 라우팅 (Query Routing)
많은 사용자가 RAG로 답할 수 없는 질문을 해요 (예: 기사를 요약해줘, 이거 누가 썼어). RAG 전체 셋업 대신 API 호출 + LLM으로 이런 질문들을 감지하고 답하는 작은 라우터를 만들었어요.
우리의 기술 스택
오픈소스로 공개
배운 것들을 모두 오픈소스 프로젝트에 담았어요: agentset-ai/agentset MIT 라이선스로요. 궁금한 게 있으면 연락 주세요.
저자 소개: Abdellatif Abdelfattah는 Usul AI와 법률 AI 엔터프라이즈를 위한 RAG 시스템을 구축한 엔지니어입니다.
참고: 이 글은 실전 RAG 시스템 구축 경험을 담은 개인 블로그 포스트를 번역한 것입니다.
원문: Production RAG: what I learned from processing 5M+ documents - Abdellatif Abdelfattah (2025년 10월 20일)
생성: Claude (Anthropic)