시맨틱 프롬프트 압축을 통한 LLM 비용 및 성능 최적화

시맨틱 프롬프트 압축을 통한 LLM 비용 및 성능 최적화

대규모 언어 모델(LLM)이 프로덕션 워크플로우에 더 많이 통합됨에 따라, "컨텍스트 윈도우(context window)"는 중요한 병목 현상이 되었습니다. 새로운 모델들이 거대한 윈도우를 제공하긴 하지만, 노이즈가 많거나 중복되거나 관련 없는 데이터로 이를 채우는 것은 출력의 품질을 반드시 개선하지 않으면서도 지연 시간과 비용을 증가시킵니다. 바로 이 지점에서 시맨틱 프롬프트 압축이 필수적이게 됩니다.

Adola는 프라이머리 LLM에 도달하기 전에 노이즈가 섞인 컨텍스트를 다듬도록 설계된 프롬프트 압축 엔진인 Rose 1을 출시했습니다. "중요한 것을 유지한다"는 것에 집중함으로써, Rose 1은 답변의 무결성을 유지하면서 입력 토큰을 최대 70%까지 줄이는 것을 목표로 합니다.

시맨틱 압축의 작동 방식

텍스트를 무작정 잘라내는 단순 절단(truncation)이나, 중요한 뉘앙스를 잃을 수 있는 기본적인 요약(summarization)과는 달리, 시맨틱 압축은 사용자의 쿼리에 가장 관련성이 높은 특정 텍스트 구간(span)을 식별하고 보존합니다.

예를 들어, 결제 지연과 관련된 복잡한 지원 티켓 시나리오에서 프롬프트에는 중복된 노트, 관련 없는 티켓 이력, 중복된 타임라인이 포함될 수 있습니다. Rose 1은 스키마, 정책 예외 사항, 계정 등급, 인용 경로와 같은 핵심 요소를 보존하면서 이러한 노이즈를 필터링합니다. 이를 통해 모델이 수천 개의 불필요한 토큰을 처리하지 않고도 안전하고 정확하게 답변하는 데 필요한 정확한 증거를 확보할 수 있습니다.

성능 벤치마크: 품질 vs. 절감

프롬프트 압축에서 가장 주요한 우려 사항 중 하나는 모델이 유발할 수 있는 "맹목성(blindness)"입니다. 압축이 너무 공격적이면 모델이 복잡한 추론에 필요한 컨텍스트를 잃을 수 있습니다. Adola는 Rose 1이 추론, 과학, 수학 과제 전반에 걸쳐 안정성을 유지함을 보여주기 위해 6개의 평가 세트에 대한 벤치마크를 제공합니다.

데이터에 따르면, Rose 1은 일반적으로 프롬프트의 30%만 유지하면서도 정확도 저하는 무시할 수 있는 수준입니다:

벤치마크 작업 유형 정확도 영향
AIME 경연 수학 0% 감소
GPQA Diamond 전문가 과학 QA 0% 감소
GDPval-AA 전문 업무 0% 감소
CommonsenseQA 상식 추론 0% 감소
GSM8K 초등 수학 0% 감소
ARC-Challenge 초등 과학 2% 감소

이러한 결과는 대부분의 고복잡도 작업에서 일반적인 프롬프트의 노이즈 대 신호 비율이 충분히 높아서, 최종 결과에 영향을 미치지 않고 콘텐츠의 70%를 제거할 수 있음을 시사합니다.

프로덕션 사용 사례

Adola는 "프리-모델 API(pre-model API)"로 자리매김하고 있으며, 이는 최종 모델 호출 전에 컨텍스트를 축소하는 게이트웨이 역할을 한다는 것을 의미합니다. 이러한 아키텍처는 팀들이 LLM 제공업체를 자유롭게 선택할 수 있도록 하면서도 다음과 같은 몇 가지 일반적인 패턴에서 비용을 절감할 수 있게 해줍니다:

1. 에이전트 트레이스(Agent Traces)

AI 에이전트는 종종 긴 도구 실행 기록(tool transcripts)과 내부 독백을 생성합니다. 다음 계획 단계로 넘어가기 전에 이러한 트레이스를 압축하면 컨텍스트 벤도우가 중복된 로그로 가득 차는 것을 방지할 수 있습니다.

2. RAG 검색(RAG Retrieval)

검색 증강 생성(RAG)은 답변이 포함되어 있는지 확인하기 위해 너무 많은 청크(chunk)를 가져오는 "과잉 검색(over-retrieval)" 문제를 자주 겪습니다. Rose 1은 답변을 담고 있는 구간을 온전히 유지하면서 이러한 과잉 검색된 청크를 축소할 수 있습니다.

3. 고객 지원 코파일럿(Support Copilots)

고객 지원 봇은 종종 방대한 양의 티켓 이력, 정책 문서, 계정 컨텍스트를를 인지해야 합니다. 압축을 통해 이러한 봇들은 해결에 필요한 구체적인 세상을 유지하면서도 성능과 비용 효율성을 유지할 수 있습니다.

구현 및 통합

압축 레이어를 통합하는 것은 매우 간단하도록 설계되었습니다. Adola Python SDK를 사용하여 개발자는 압축 수준을을 제어하기 위해 target_ratio를 지정할 수 있습니다:

from adola import Adola

client = Adola(api_key="rose_...")
result = client.compress(
    input=open("retrieved_context.txt").read(),
    query="Which incident caused latency?",
    compression={"target_ratio": 0.3},
    include_spans=False,
)

compressed = result["output"]

최종 생각

기술 커뮤니티에서는 특정 최적화 목표(예: 더 높은 품질을 위해 더 많은 비용을 절감감할 수 있는 트레이드오프)에 따라 압축 전략을 사용자 정의할 수 있는 기능에 대한 질문이 제기되었지만, Rose 1의 핵심 가치 제안은 명확합니다: 모델을 "맹목"하게 만들지 않으면서 LLM 애플리케이션의 재정적 및 계산적 오버헤드를 줄이는 것입니다. RAG 파이프라인이나 복잡한 에이전트 워크플로우를 확장하는 팀들에게 시맨틱 프롬프트 압축은 프롬프트-출력 파이프라인을 최적화하는 데 필수적인 단계입니다.

Sources