Amazon Bedrock RAG의 토큰 비용 문제와 압축 솔루션

RAG(검색 증강 생성, 외부 데이터를 검색해 답변 생성하는 기술) 시스템에서 검색 단계의 높은 재현율 설정은 쿼리당 수천 개의 입력 토큰을 발생시켜 운영 비용을 높인다. 일반적으로 RAG 검색은 정답이 될 가능성이 있는 광범위한 청크(Chunk, 텍스트를 나눈 작은 단위) 세트를 반환하도록 튜닝하며, 보통 5개에서 20개의 청크를 결과로 내놓는다. 이는 주 모델이 추론 시점에 충분하고 철저한 소스 자료를 확보하게 하여 답변의 신뢰도를 높이려는 설계 선택이다. 이러한 방식은 개발자가 정답 정보가 누락되지 않았다는 확신을 갖게 하지만, 워크로드가 확장될수록 주 모델이 처리하는 입력 토큰의 양은 비용 부담으로 직결되며 이는 답변 품질을 유지하면서도 토큰 수를 줄여야 하는 비용-성능 최적화 과제로 이어진다.

쿼리 인식 압축(Query-aware compression)은 검색된 결과가 최종 답변 생성 모델에 도달하기 전 단계에 배치되는 사후 처리 공정이다. 이 방식은 검색 엔진이 반환한 모든 컨텍스트가 주 모델에 그대로 전달되는 기존 방식과 달리, 사용자 쿼리를 기준으로 관련 없는 내용을 먼저 필터링한다. 소형 모델이 검색된 청크들을 하나씩 검토하여 현재의 사용자 질문에 실질적으로 기여하는 정보만 남기고 불필요한 부분을 제거하는 구조를 가진다. 이렇게 정제된 데이터만 주 모델에 전달함으로써 모델이 처리해야 할 입력 토큰의 절대량을 줄여 비용 효율성을 확보한다.

이 압축 패턴은 검색과 최종 답변 호출 사이의 중간 지점에서 작동하며, Amazon Bedrock의 파운데이션 모델과 기능을 활용해 구축한다. [Figure 1: Query-aware context compression architecture on Amazon Bedrock] 불필요한 컨텍스트를 제거하는 과정은 단순히 토큰 비용을 절감하는 경제적 이득에 그치지 않고 모델의 환각(Hallucination, 사실과 다른 내용을 생성하는 현상) 발생 가능 영역을 축소하는 효과를 준다. 주 모델이 방대한 양의 무관한 정보 속에서 정답을 찾아내려 애쓰는 대신, 소형 모델이 1차로 걸러낸 핵심 정보 위주로 컨텍스트를 처리하기 때문에 정보 간의 간섭과 혼선이 줄어들기 때문이다.

RAG 파이프라인에서 재현율을 높게 유지하는 이유는 검색 단계에서 정답이 될 핵심 정보가 누락되는 위험을 최소화하기 위해서다. 하지만 검색된 20개의 청크가 모두 정답과 밀접한 관련이 있는 경우는 거의 없으며, 상당수는 벡터 유사도 기반 검색의 특성상 포함된 노이즈 데이터인 경우가 많다. 쿼리 인식 압축은 이러한 노이즈를 소형 모델이라는 저비용 필터를 통해 사전에 제거함으로써 주 모델의 연산 부하를 덜어주는 역할을 수행한다. 결과적으로 개발자는 높은 재현율을 통해 정보 누락의 불안감을 해소하는 동시에, 실제 주 모델 호출 시 발생하는 입력 토큰 비용을 최적화하여 대규모 서비스 운영이 가능한 구조를 만들 수 있다.

AWS Lambda와 Converse API를 이용한 2단계 압축 구조

Claude Haiku를 압축 모델로 사용하며 `temperature` 설정을 0.0으로 고정해 결정론적인 텍스트 추출을 수행한다. 여기서 온도 설정은 모델 출력의 무작위성을 조절하는 매개변수로, 0.0으로 설정하면 동일한 입력에 대해 항상 동일한 결과가 나오는 결정론적 특성을 갖는다. 압축 단계의 핵심은 정보를 요약하거나 압축하는 것이 아니라, 원문 그대로의 구간인 verbatim span을 정확히 추출해내는 것이다. 프롬프트에 패러프레이징이나 재작성을 엄격히 금지하는 제약을 명시하여, 소형 모델이 임의로 문장을 수정하거나 새로운 단어를 추가하면서 발생할 수 있는 정보 왜곡과 환각 가능성을 원천적으로 차단한다.

전체 오케스트레이션은 단일 AWS Lambda 함수 내에서 순차적으로 이루어진다. AWS Lambda는 서버리스 컴퓨팅 서비스로, 특정 이벤트에 반응해 코드를 실행하는 환경이다. 이 함수는 Amazon Bedrock Converse API를 통해 모델을 호출한다. Converse API는 서로 다른 모델들을 하나의 통합된 인터페이스로 제어할 수 있게 돕는 도구로, 모델마다 제각각인 API 규격을 맞출 필요 없이 일관된 요청과 응답 형식을 사용할 수 있게 한다. 이를 통해 개발자는 모델 교체 시에도 코드 수정 범위를 최소화할 수 있다. 단일 함수 구조를 통해 소형 모델의 추출 작업과 주 모델의 답변 생성을 하나의 실행 흐름으로 묶어, 별도의 외부 워크플로우 관리 도구 없이도 지연 시간을 최소화한 데이터 파이프라인을 구축한다.

데이터 흐름은 검색기에서 시작해 Lambda 함수를 거쳐 최종 답변으로 이어진다. Amazon Bedrock Knowledge Bases 같은 검색기가 사용자 쿼리를 벡터로 변환하는 임베딩 과정을 거쳐, 유사도가 높은 상위 k개의 텍스트 조각인 top-k chunks를 반환한다. Knowledge Bases는 Amazon OpenSearch Serverless를 기반으로 하는 완전 관리형 RAG 기능으로, 대규모 문서 집합에서 관련 정보를 빠르게 찾는 역할을 수행한다. Lambda 함수는 이 청크들을 입력으로 받아 먼저 소형 모델에게 전달하며, 모델은 사용자 쿼리를 기준으로 각 청크 내에서 답변 생성에 직접적으로 기여하는 텍스트 구간만을 남기고 나머지는 모두 제거한다. 이 과정에서 소형 모델은 쿼리와의 상관관계를 분석해 텍스트의 유효성을 판단하는 필터 역할을 수행한다.

[Figure 1: Query-aware context compression architecture on Amazon Bedrock]

소형 모델이 걸러낸 정제된 컨텍스트는 즉시 동일한 Lambda 함수 내에서 주 모델의 입력값으로 전달된다. 이 구조는 표준 RAG 흐름에 소형 모델 호출이라는 단일 단계를 추가한 형태다. Amazon Bedrock 내의 동일한 모델 제품군 내에서 소형 모델과 주 모델 쌍을 구성하여 모델 간의 언어 이해 방식 차이를 줄이고 호환성을 확보한다. 주 모델은 소형 모델이 필터링한 집중된 컨텍스트만을 처리하므로, 불필요한 노이즈가 제거된 상태에서 최종 답변을 생성하게 된다. 결과적으로 주 모델이 처리해야 할 입력 토큰의 물리적 양을 획기적으로 줄여 연산 효율을 높이고 비용을 절감하는 구조적 기반을 만든다.

압축 및 Rerank 적용 시 비용과 환각률 변화

단순 압축은 비용을 33% 절감하고 입력 토큰 수를 8.6배 줄이지만, Rerank(재순위화: 검색 결과의 관련성을 다시 평가해 순서를 조정하는 과정)를 병행하면 비용 절감률은 36%까지 올라가고 입력 토큰은 10.1배 감소한다. [Figure 2] 단순 압축만 적용했을 때보다 재순위화 단계를 추가했을 때 주 모델로 전달되는 데이터 양이 더 정교하게 제어되기 때문이다. 입력 토큰의 감소 폭이 클수록 API 호출 비용이 직접적으로 낮아지는 구조이며, 10.1배의 토큰 감소는 주 모델이 처리해야 할 컨텍스트의 부하를 크게 줄인 결과다. 이는 검색 단계에서 이미 정제된 상위 문서들만 압축 모델에 전달함으로써 최종적으로 주 모델에 도달하는 정보의 관련성을 높였기에 가능하다.

환각률(Hallucination rate: 근거 문서에 없는 내용을 사실처럼 답변하는 비율)은 아무런 조치를 취하지 않은 베이스라인의 51%에서 단순 압축 적용 시 44%로, Rerank와 압축을 모두 적용했을 때 38%까지 낮아진다. [Figure 3] 환각률 측정은 참조 문서에 의해 뒷받침되지 않는 주장이 하나라도 포함된 답변의 비율을 계산해 산출했다. [Figure 4] [Figure 5] 불필요한 컨텍스트가 제거되어 모델이 참고할 정보의 밀도가 높아지면 잘못된 정보를 생성할 확률이 줄어든다. 특히 재순위화를 통해 관련성이 낮은 청크를 미리 걸러내고 남은 핵심 구간만 압축해 전달하는 방식이 환각 현상을 억제하는 데 더 효과적이다. 정보의 양을 줄이는 과정이 단순히 비용 문제를 해결하는 것을 넘어 답변의 신뢰도를 직접적으로 높이는 결과를 낸다.

답변 품질을 측정하는 정답률(Correctness: 답변이 사실적으로 정확한지 측정하는 지표)은 베이스라인 대비 0.07 이내의 차이를 유지하며 성능 저하를 최소화했다. [Figure 3] LLM-judge(대규모 언어 모델을 판별자로 사용하여 답변의 품질을 평가하는 방식)를 통해 4가지 답변 품질 차원을 분석한 결과, 입력 토큰을 10배 가까이 줄여도 핵심 정보만 보존된다면 모델의 추론 능력에 큰 영향을 주지 않는 것으로 나타났다. 다만 이 수치는 특정 코퍼스(Corpus: 분석 대상이 되는 텍스트 뭉치)와 단일 도메인, 그리고 특정 쿼리 분포를 기반으로 도출한 벤치마크 결과다. 실제 적용 환경에서 사용하는 문서의 길이, 도메인 지식의 복잡도, 사용자 쿼리의 특성에 따라 비용 절감 폭과 품질 유지 정도는 다르게 나타날 수 있다.

지연 시간과 답변 품질의 트레이드오프 분석

소형 모델 호출 단계가 추가되면서 전체 요청 경로의 레이턴시(Latency, 데이터가 전송되어 응답이 돌아오는 시간)는 필연적으로 증가한다. 하지만 주 모델이 처리해야 할 컨텍스트(Context, 모델이 참고하는 입력 정보) 크기가 줄어들면서 실제 답변을 생성하는 시간은 단축된다. 주 모델은 입력 토큰이 많을수록 연산량이 늘어나 응답 속도가 느려지는데, 소형 모델이 이를 사전에 쳐내어 처리 효율을 높이는 방식이다. 결과적으로 추가 호출로 인해 발생하는 지연 시간의 일부가 주 모델의 처리 속도 향상으로 상쇄된다. 이는 비용이 저렴한 소형 모델을 앞단에 배치해 비싼 주 모델의 입력 부하를 줄임으로써 전체 시스템의 효율을 최적화하려는 전략이다. 특히 주 모델로의 호출 전 단계에서 컨텍스트를 다듬는 과정이 전체 비용 절감의 핵심 동력이 된다.

답변 품질의 변화는 LLM-judge(거대언어모델이 다른 모델의 답변을 평가하는 방식)를 통해 1점에서 5점 사이의 점수로 측정했다. 분석 결과 정답률(Correctness)은 모든 실험 조건에서 베이스라인과 0.07 이내의 아주 작은 차이만을 보이며 성능이 유지되었다. 다만 정보를 압축하는 과정에서 완결성(Completeness, 질문에 필요한 모든 정보를 빠짐없이 포함하는 정도)과 인용 정확도(Citation accuracy, 답변의 근거가 되는 원문 위치를 정확히 지칭하는 정도)는 약간 낮아지는 결과가 나타났다. 대신 불필요한 수식어나 중복된 정보가 제거되면서 간결성(Conciseness)은 베이스라인 대비 향상되는 특성을 보였다. 이는 정답의 정확도는 유지하되, 답변의 풍부함보다는 핵심 정보 위주의 효율적인 응답을 생성하는 방향으로 품질이 이동했음을 의미한다. 네 가지 품질 차원에서 나타난 이 수치들은 압축 모델의 성능이 주 모델의 추론 능력에 미치는 영향을 구체적으로 보여준다.

구현 단계에서 소형 모델의 `temperature` 설정은 0.0으로 고정한다. 온도(Temperature)는 모델 응답의 무작위성을 조절하는 파라미터로, 이를 0으로 설정하면 모델의 출력이 결정론적(Deterministic, 동일 입력에 항상 동일 출력)으로 변한다. 이를 통해 소형 모델이 임의로 내용을 요약하거나 패러프레이징하지 않고, 원문의 구간(Span)을 그대로 복사하여 추출하도록 강제한다. 이러한 오케스트레이션 구조는 환경 변수에서 모델 ID를 읽어온 뒤 Amazon Bedrock Converse API를 통해 소형 모델과 주 모델을 순차적으로 호출하며 완성된다. 대규모 코퍼스를 다루는 환경에서 비용 절감 효과가 뚜렷하지만, 사용자 경험이 중요한 서비스에서는 주의가 필요하다. 특히 초 단위의 즉각적인 응답이 필요한 실시간 채팅 서비스의 경우, 실제 운영 환경에서 레이턴시를 정밀하게 측정하여 압축 단계의 추가 시간이 주는 손실이 토큰 감소로 얻는 이득보다 크지 않은지 검증해야 한다. 워크로드의 성격에 따라 이 트레이드오프의 결과가 달라지기 때문이다.

한국 기업의 대규모 문서 RAG 도입 시 판단 기준

일반적인 청크 크기로 5~20개의 문서를 검색하면 기술 문서나 법률 RAG 워크로드는 쿼리당 수천 개의 입력 토큰이 발생한다. 입력 토큰 수를 줄이는 것은 운영 비용 절감과 직결된다. 경제성 판단의 핵심은 Amazon Bedrock 내 소형 모델과 주 모델 사이의 가격 비율(Price Ratio)과 소형 모델이 달성하는 압축률(Compression Ratio)에 있다. 이 두 변수가 비용 효율성을 결정하는 결정적 요인이다.

경제성 판단을 위한 비용 공식은 소형 모델의 입력 및 출력 비용 합계가 주 모델에서 절감된 입력 토큰 비용보다 적어야 한다는 원칙을 따른다. 구체적으로 소형 모델의 입력 토큰 가격인 P_small_in과 출력 토큰 가격인 P_small_out의 합산 비용이, 주 모델의 입력 토큰 가격인 P_large_in에 압축률 c를 적용해 줄어든 비용보다 낮을 때 도입 가치가 있다. 여기서 c는 1보다 큰 값으로 설정되며, 소형 모델이 원문에서 필요한 구간만 추출해 주 모델로 전달하는 효율을 의미한다. 이러한 계산 방식은 단순한 토큰 수 감소가 아니라 실제 청구 금액의 차이를 기준으로 한다.

기술 문서나 법률 문서처럼 청크 크기가 크고 입력 토큰 양이 많은 워크로드일수록 이 방식의 비용 절감 효과는 극대화된다. 단순 압축 시 비용은 33% 절감되고 입력 토큰은 8.6배 감소하며, Rerank(재순위화, 검색 결과의 순서를 다시 매겨 정확도를 높이는 기술)와 결합하면 비용 36% 절감과 입력 토큰 10.1배 감소라는 결과가 나온다. 쿼리의 성격에 따라 절감 폭은 차이를 보이는데, 일반적인 쿼리 세트에서는 37%에서 40% 사이의 비용이 절감되었고, 난도가 높은 하드 쿼리 세트에서는 26%에서 30% 사이의 절감률을 기록했다. 여기에 Prompt Caching(프롬프트 캐싱, 동일한 프롬프트를 재사용해 비용과 시간을 줄이는 기능)이나 Intelligent Prompt Routing(지능형 프롬프트 라우팅, 쿼리 난이도에 따라 적절한 모델로 배분하는 기술)을 함께 적용하면 추가적인 비용 최적화가 가능하다. 이는 대규모 문서를 처리하는 한국 기업의 인프라 환경에서 운영 부담을 실질적으로 낮추는 수단이 된다.

실제 적용 환경에 따라 수치는 달라질 수 있으나, 벤치마크 결과 베이스라인 51%였던 환각률은 압축 시 44%, Rerank 결합 시 38%까지 낮아졌다. 답변의 정답률은 베이스라인 대비 0.07 이내의 차이로 유지되어 품질 저하 없이 비용을 줄일 수 있음을 확인했다. 특히 대규모 코퍼스를 다루는 환경에서는 입력 토큰의 양이 기하급수적으로 늘어나므로, 소형 모델을 통한 전처리가 전체 파이프라인의 경제성을 결정하는 핵심 변수가 된다. 따라서 소형 모델의 전체 호출 비용이 주 모델의 입력 토큰 절감액보다 낮은지 계산하여 도입 여부를 결정해야 한다.