RAG는 인덱스 구축과 질의 처리에 일을 나눕니다. 사전 계산의 이득은 갱신 비용과 최종 답변 품질까지 포함해 판단해야 합니다.
문서 표현과 요약을 미리 만들면 질의마다 같은 처리를 반복하지 않을 수 있습니다. 그러나 사전 계산이 검색기 개선보다 항상 중요하거나 품질의 상한을 혼자 정하는 것은 아닙니다. 이 글은 두 시점에 어떤 일을 둘지 비교하는 설계 기준을 정리합니다.
두 시점의 역할
인덱스 시점에는 원문을 분할하고 표현을 계산해 저장합니다. 질의 시점에는 현재 질문과 권한에 맞는 후보를 고르고 답을 생성합니다. 두 단계의 예산과 갱신 주기는 시스템마다 다릅니다.
flowchart LR
subgraph idx["인덱스 시점"]
A[원문과 버전] --> B[청크와 구조 추출]
B --> C[표현과 검색 색인]
end
subgraph qry["질의 시점"]
Q[질의와 현재 권한] --> R[후보 검색]
R --> K[근거 선택과 확인]
K --> G[답변 생성]
end
C --> R
후속 단계가 검색 후보만 사용한다면 후보에서 빠진 근거는 재정렬만으로 복구할 수 없습니다. 원문 다시 읽기나 재검색을 허용하면 추가 경로가 생기지만 그 비용도 계산해야 합니다. 따라서 인덱스와 질의 처리의 책임을 함께 정합니다.
미리 계산할 수 있는 표현
DPR는 패시지 표현을 사전에 계산하고 질의 표현과 비교하는 밀집 검색 방법입니다. ColBERTv2는 문서의 토큰 표현과 잔차 압축을 사용합니다. 두 방법은 질의 전에 저장할 표현을 정하는 기존 연구의 사례입니다.
사전 계산은 저장 공간과 구축 비용을 사용합니다. 임베딩 모델이나 청크 규칙을 바꾸면 기존 표현과의 호환성과 재색인 범위를 확인해야 합니다. 질의 지연만 줄었는지, 갱신까지 포함한 총비용도 줄었는지를 구분합니다.
요약과 원문을 함께 두기
RAPTOR는 청크를 군집화하고 요약해 계층을 만들며, 원문 청크와 요약 노드를 검색에 사용합니다. 이 방법은 구조를 미리 만드는 사례입니다. 원문을 요약 하나로 대체해야 한다는 결론은 아닙니다.
문서의 목차나 엔티티 관계를 색인에 넣는 구현도 생각할 수 있습니다. 다만 추출한 구조가 틀리거나 오래됐을 때 되돌아갈 원문과 버전을 남겨야 합니다. 구조 추출이 답변 품질을 얼마나 바꾸는지는 자체 질문 집합에서 확인합니다.
질의 시점에 확인할 조건
필터와 접근 권한은 현재 요청에 따라 달라질 수 있습니다. 색인에 메타데이터를 저장해도 실행 시점의 권한 검사를 대신하지 못합니다. 검색 결과를 필터링했을 때 필요한 근거가 남는지, 허용되지 않은 문서가 노출되는지를 따로 시험합니다.
문서 간 충돌도 날짜와 적용 범위를 확인해야 합니다. 원문 보존과 최신 버전 표시는 그 판단의 입력을 제공하지만, 충돌을 자동으로 해결하지는 않습니다. 사전 요약을 갱신하지 않은 채 최신 문서로 표시하지 않도록 해야 합니다.
사전 계산을 늘리기 전
아래 표는 실험할 선택지이며 각 조건의 최적 해법을 검증한 결과는 아닙니다.
| 상황 | 비교할 선택 | 함께 확인할 비용 |
|---|---|---|
| 질문이 반복되는 안정된 문서 | 사전 표현·요약의 재사용 | 저장과 구축 비용 |
| 긴 문서의 구조가 중요함 | 청크 검색과 계층 검색 | 구조 추출 오류와 근거 누락 |
| 필터가 자주 바뀜 | 필터 적용 위치와 후보 수 | 회수율과 권한 검사 |
| 문서가 자주 갱신됨 | 부분 갱신과 전체 재색인 | 신선도와 갱신 지연 |
| 생성기나 리랭커를 교체함 | 전체 파이프라인 재평가 | 답변과 인용의 변화 |
같은 평가 질문에서 구축·갱신 비용, 질의 비용과 답변 품질을 함께 기록합니다. 표본 질의만 맞추기 위해 사전 요약을 수정했다면 별도 질문으로 검증합니다. 변경 전후의 출처와 문서 버전도 보존합니다.
정리
RAG의 사전 계산과 질의 처리는 서로 다른 비용과 책임을 갖습니다. DPR, ColBERTv2와 RAPTOR는 미리 계산할 표현과 구조의 기존 사례를 제공합니다. 실제 선택은 갱신 주기, 권한과 근거 보존을 포함한 전체 파이프라인 평가로 결정해야 합니다.