정의
컨텍스트 압축(Context Compression)은 대규모 언어 모델(LLM)에 제공되는 입력 데이터(컨텍스트 창)의 크기나 복잡성을 줄이면서도 원하는 출력을 위해 필요한 가장 중요한 의미론적 정보를 보존하는 데 사용되는 일련의 기술을 의미합니다.
이 과정은 LLM에 컨텍스트 창 제한이 있다는 점과, 매우 긴 입력을 처리하는 것이 계산 비용이 많이 들고 느리다는 점에서 매우 중요합니다.
중요성
실제 애플리케이션에서 사용자는 종종 전체 문서, 긴 채팅 기록 또는 복잡한 코드베이스와 같은 방대한 양의 텍스트를 컨텍스트로 제공합니다. 이 모든 원시 데이터를 모델에 전송하면 상당한 비용(토큰당 가격 책정)이 발생하고 추론 지연 시간이 증가합니다.
컨텍스트 압축은 이러한 병목 현상을 직접적으로 해결하여 기업이 강력한 LLM을 경제적이고 대규모로 배포할 수 있도록 합니다.
작동 방식
컨텍스트 압축을 위해 여러 방법론이 사용되며, 종종 함께 사용됩니다.
- 요약(Summarization): 작은 전문 LLM을 사용하여 긴 입력에 대한 밀도 높고 추상적인 요약을 생성한 다음, 이를 주 모델에 공급합니다.
- 검색 증강 생성(RAG) 정제(Refinement): 검색된 모든 문서를 전달하는 대신, 재순위 지정(re-ranking) 또는 쿼리 확장(query expansion)과 같은 기술을 사용하여 가장 관련성 높은 청크만 선택합니다.
- 개체/키워드 추출(Entity/Keyword Extraction): 장황한 채움 텍스트를 버리고 핵심 개체, 날짜 및 조치 항목만 식별하고 추출합니다.
- 슬라이딩 윈도우/청킹(Sliding Window/Chunking): 컨텍스트를 체계적으로 분할하고 가장 최근 또는 가장 관련성 높은 세그먼트만 전달합니다.
일반적인 사용 사례
컨텍스트 압축은 여러 엔터프라이즈 사용 사례에서 필수적입니다.
- 문서 질의응답(Document Q&A): 토큰 제한을 초과하지 않으면서 수백 페이지에 달하는 법률 계약에 대해 사용자가 질문할 수 있도록 합니다.
- 장기 채팅 봇(Long-Term Chatbots): 과거 대화 기록을 압축하여 긴 세션 동안 대화의 일관성을 유지합니다.
- 코드 분석(Code Analysis): 대규모 저장소나 복잡한 함수 정의를 LLM에 공급하여 버그 감지 또는 리팩토링 제안을 받습니다.
주요 이점
컨텍스트 압축을 구현하는 주요 이점은 세 가지입니다.
- 비용 절감: 처리되는 토큰 수가 줄어들면 API 사용 비용이 직접적으로 감소합니다.
- 지연 시간 개선: 입력 크기가 작아지면 계산 시간이 덜 필요하므로 최종 사용자에게 더 빠른 응답 시간을 제공합니다.
- 컨텍스트 집중: 노이즈를 걸러냄으로써 모델이 주의 집중 능력을 가장 중요한 정보에 할애할 수 있게 되어 최종 답변의 품질을 향상시킬 수 있습니다.
과제
유용성에도 불구하고, 컨텍스트 압축은 완벽한 과학은 아닙니다. 주요 과제는 다음과 같습니다.
- 정보 손실: 지나치게 공격적인 압축은 정확한 응답에 필요한 미묘하지만 중요한 정보를 의도치 않게 폐기할 수 있습니다.
- 구현의 복잡성: 올바른 압축 파이프라인(예: 어떤 요약 모델을 사용할지 결정)을 설계하는 데 상당한 엔지니어링 노력이 필요합니다.
관련 개념
이 기술은 검색 증강 생성(RAG), 파인튜닝(fine-tuning), 프롬프트 엔지니어링과 밀접하게 관련되어 있습니다. RAG가 관련 데이터를 검색하는 데 중점을 두는 반면, 컨텍스트 압축은 이미 검색되었거나 제공된 데이터를 압축하는 데 중점을 둡니다.