LLM 애플리케이션을 위한 RAG 파이프라인 구축 실전 가이드
검색 증강 생성(RAG) 파이프라인을 처음부터 설계하는 방법을 정리한다. 청킹 전략, 임베딩 모델 선택, 벡터 데이터베이스, 리랭킹, 환각 억제까지 실무 관점으로 다룬다.
LLM 애플리케이션을 위한 RAG 파이프라인 구축 실전 가이드
대규모 언어 모델을 실무에 투입할 때 가장 큰 걸림돌은 환각과 최신성 부족이다. 모델은 학습 시점 이후의 정보를 알지 못하고, 조직 내부 문서에는 접근할 수 없다. 검색 증강 생성, 즉 RAG는 외부 지식 베이스에서 관련 정보를 검색해 프롬프트에 주입함으로써 이 문제를 해결한다. 2026년 현재 RAG는 사내 지식 검색, 고객 지원 봇, 문서 분석 도구의 사실상 표준 아키텍처가 되었다. 이 글은 실전 RAG 파이프라인의 각 단계를 구체적으로 다룬다.
문서 처리와 청킹 전략
RAG의 품질은 검색 품질에 좌우되고, 검색 품질은 청킹에서 시작된다. 문서를 무작정 고정 길이로 자르면 문맥이 중간에 끊겨 검색 정확도가 떨어진다. 실전에서는 문서의 구조를 존중하는 청킹이 중요하다. 마크다운의 헤딩, 코드 블록, 표 같은 구조적 경계를 인식해 의미 단위로 나누고, 청크 간에 일정 부분을 겹치게 해 문맥 손실을 완화한다.
청크 크기는 트레이드오프다. 너무 작으면 문맥이 부족하고, 너무 크면 검색 시 노이즈가 섞인다. 일반 텍스트 기준으로 수백 토큰 규모에서 시작해 실제 질의 패턴으로 조정하는 것이 정석이다. 또한 각 청크에 출처 문서, 섹션 제목, 갱신 일자 같은 메타데이터를 부착하면, 나중에 메타데이터 필터링으로 검색 범위를 좁히고 답변에 출처를 표시할 수 있다. 부모-자식 청킹처럼 작은 단위로 검색하되 답변 생성 시에는 더 넓은 문맥을 제공하는 계층적 전략도 정확도를 크게 높인다.
임베딩과 벡터 데이터베이스
청크를 벡터로 변환하는 임베딩 모델 선택은 성능과 비용을 동시에 좌우한다. 다국어 지원, 임베딩 차원, 최대 입력 길이를 기준으로 후보를 추리고, 실제 도메인 데이터로 검색 정확도를 측정해 결정해야 한다. 임베딩 모델과 생성 모델은 반드시 같을 필요가 없으며, 검색 전용으로 경량 임베딩 모델을 쓰는 편이 비용 효율적이다.
벡터 데이터베이스는 저장된 임베딩 중 질의와 가장 유사한 것을 근사 최근접 이웃 탐색으로 빠르게 찾는다. 데이터 규모가 작다면 기존 관계형 데이터베이스의 벡터 확장으로 충분하지만, 수백만 건 이상을 다룬다면 전용 벡터 데이터베이스의 인덱싱과 필터링 성능이 필요하다. 검색 정확도를 높이는 핵심 기법은 하이브리드 검색이다. 의미 기반의 밀집 벡터 검색과 키워드 기반의 희소 검색을 결합하면, 고유명사나 전문 용어처럼 임베딩이 놓치기 쉬운 정확한 일치를 함께 잡아낸다.
# 하이브리드 검색 후 리랭킹의 개념적 흐름
dense_hits = vector_db.search(embed(query), top_k=20)
sparse_hits = keyword_index.search(query, top_k=20)
candidates = merge(dense_hits, sparse_hits)
reranked = reranker.rank(query, candidates)[:5]
리랭킹과 환각 억제
초기 검색은 재현율을 높이기 위해 넉넉히 후보를 가져오고, 그다음 리랭커로 정밀도를 끌어올리는 2단계 구조가 효과적이다. 리랭커는 질의와 각 후보의 관련성을 정교하게 재평가해, 진짜 관련 있는 소수의 청크만 최종 프롬프트에 담는다. 이는 컨텍스트 창을 효율적으로 쓰면서 노이즈를 줄여 답변 품질을 높인다.
환각을 억제하려면 프롬프트 설계가 결정적이다. 검색된 문맥에 근거해서만 답하고, 근거가 없으면 모른다고 답하도록 명확히 지시해야 한다. 답변에 인용 표시를 강제하면 사용자가 출처를 검증할 수 있고, 모델도 근거 기반 답변에 집중하게 된다. 마지막으로 RAG 시스템은 반드시 평가 체계를 갖춰야 한다. 검색 단계의 재현율과 정밀도, 생성 단계의 사실 충실성과 답변 관련성을 별도로 측정해야 어느 단계가 병목인지 진단할 수 있다. 대표 질의 세트를 만들어 정기적으로 회귀 평가를 돌리는 것이, 파이프라인을 지속적으로 개선하는 유일하게 신뢰할 수 있는 방법이다.
고급 검색 전략과 에이전트형 RAG
기본 RAG가 자리를 잡으면 검색 품질을 한 단계 끌어올리는 고급 전략을 고려하게 된다. 질의 변환은 사용자의 짧고 모호한 질문을 검색에 유리한 형태로 다듬는 기법이다. 원 질문을 여러 관점의 하위 질의로 확장하거나, 반대로 여러 질문을 하나의 핵심 의도로 압축하면 검색 재현율이 높아진다. 가설적 문서 임베딩 기법은 질문에 대한 임시 답변을 먼저 생성하고 그 답변을 임베딩해 검색함으로써, 질문과 문서 사이의 표현 격차를 좁힌다. 이런 기법들은 특히 전문 용어가 많거나 사용자 질문이 불완전한 도메인에서 효과가 크다.
에이전트형 RAG는 검색을 한 번으로 끝내지 않고 반복적으로 수행하는 접근이다. 모델이 처음 검색 결과를 보고 정보가 부족하다고 판단하면, 스스로 후속 질의를 만들어 추가 검색을 수행한다. 여러 데이터 소스를 상황에 맞게 선택하거나, 계산이나 외부 도구 호출을 결합하기도 한다. 이 방식은 복잡한 다단계 질문에 강하지만, 반복마다 지연과 비용이 늘어나므로 무한 루프를 막는 종료 조건과 단계 수 제한을 반드시 설계해야 한다.
운영 단계에서는 비용과 지연의 균형이 현실적인 과제가 된다. 임베딩과 생성 호출은 비용이 발생하므로, 자주 반복되는 질의는 결과를 캐싱해 재사용하고, 검색 후보 수와 컨텍스트 길이를 필요한 최소한으로 조절한다. 민감한 문서를 다룰 때는 접근 권한을 검색 단계에 통합해, 사용자가 볼 수 없는 문서가 답변에 섞이지 않도록 필터링해야 한다. 로그와 사용자 피드백을 수집해 어떤 질의에서 검색이 실패하는지 지속적으로 분석하면, 청킹과 검색 전략을 데이터에 기반해 개선하는 선순환을 만들 수 있다.