지금까지 AI 에게 정보를 알려줄 때 (예: "이 회사의 매출은 얼마야?") 는 검색해서 찾은 긴 글 (문서) 을 AI 에게 매번 다시 읽어주었습니다.
비유: 당신이 친구에게 "내 친구 민수는 키가 180cm 야"라고 알려주고 싶다고 상상해 보세요.
기존 방식 (RAG): 친구가 기억을 못 하니까, 민수에 대한 긴 프로필 (이름, 나이, 키, 취미, 좋아하는 음식 등) 을 글로 적어서 친구에게 다시 읽어주는 거예요.
문제점: 친구가 5 번이나 다른 질문을 한다면, 당신은 5 번이나 그 긴 프로필을 다시 읽어줘야 합니다. 말 (토큰) 이 너무 많이 소모되고, 친구의 머릿속 (메모리) 이 금방 꽉 차버립니다.
2. 새로운 방식 (지식 팩): "기억 조각 (KV Cache) 을 바로 끼우기"
이 논문은 "아니, 굳이 글로 다시 읽힐 필요 없잖아?"라고 말합니다. 대신 AI 가 그 글을 이미 읽었을 때 머릿속에 생긴 **완성된 기억 조각 (KV Cache)**을 미리 만들어 두었다가, 질문이 들어오면 그 조각을 바로 끼워 넣는 것입니다.
비유: 친구가 민수에 대한 프로필을 이미 읽어서 기억하고 있다면, 당신은 그 긴 글을 다시 읽히지 않아도 됩니다. 대신 **"민수 = 180cm"라는 기억이 담긴 작은 카드 (기억 조각)**를 친구의 책상 위에 바로 올려놓으면 됩니다.
효과:
비용 0: 친구에게 다시 읽어줄 필요가 없으니, 말 (토큰) 을 전혀 쓰지 않습니다.
정확도 100%: 기억 조각을 끼워 넣으면, 글로 다시 읽어준 것과 완전히 똑같은 대답을 합니다. (논문에 따르면 700 번의 테스트에서 오차 0%)
한계: 이 기억 조각은 특정 AI 모델 (친구) 에만 맞습니다. A 모델용 카드를 B 모델에 끼우면 작동하지 않습니다. (친구마다 기억하는 방식이 조금 다르기 때문)
3. 중요한 주의사항: "말투 (템플릿) 를 맞춰줘야 한다"
이 기술이 작동하려면 아주 중요한 규칙이 하나 있습니다. 바로 AI 가 좋아하는 '말투 (Chat Template)'를 지켜야 한다는 것입니다.
비유: 당신이 친구에게 카드를 줄 때, "여기 카드 있어"라고 그냥 던지면 친구가 무시할 수 있습니다. 하지만 "친구야, 이거 받아봐"라고 정중한 인사말 (시스템 토큰) 과 함께 주면 친구가 바로 받아들입니다.
결과: 말투를 맞추지 않고 그냥 텍스트만 주면, AI 는 "이게 뭐지?"라고 혼란을 느껴 정답률이 6~7% 나 떨어집니다. 이전 연구들 중 "기억 조각이 더 좋다"고 한 건, 사실 말투를 잘못 맞춰서 비교한 경우가 많았을 수 있다고 논문은 지적합니다.
4. 추가 기능: "성격 조절 (Steering)"
이 기술은 지식 전달뿐만 아니라 AI 의 성격이나 말투를 조절하는 데에도 쓸 수 있습니다.
비유: 기억 조각을 끼워 넣을 때, 단순히 정보만 넣는 게 아니라 **"조금 더 조심스럽게 말해줘"**라는 신호 (벡터) 를 함께 섞어 넣는 것입니다.
신기한 점:
중간층 효과: AI 의 뇌 (레이어) 중 중간 부분만 건드리면 성격이 바뀝니다. 처음이나 마지막 부분을 건드리면 효과가 없습니다.
동시 사용: "지식"을 전달하는 것과 "성격"을 조절하는 것을 동시에 할 수 있습니다. (예: "민수에 대해 알려주면서, 동시에 예의 바르게 말해줘")
결과: 지식 전달의 정확성은 그대로 유지하면서, AI 가 더 정중하거나 방어적인 태도를 취하게 만들 수 있습니다.
5. 요약: 왜 이것이 중요한가요?
돈과 시간 절약: AI 에게 정보를 줄 때 긴 글을 다시 읽히지 않아도 되므로, 토큰 비용 (비용) 을 95% 까지 아낄 수 있습니다.
정확한 기억: 기억 조각을 끼워 넣으면, 글로 읽힌 것과 완전히 똑같은 결과를 냅니다.
새로운 가능성: 단순히 정보를 넣는 것을 넘어, AI 의 말투나 태도를 조절할 수 있는 새로운 방법을 제시합니다.
한 줄 요약:
"AI 에게 정보를 줄 때, 긴 글을 다시 읽어주는 대신 '기억 조각'을 바로 끼워 넣으면, 비용은 0 이고 정확도는 그대로 유지됩니다. 다만, AI 가 좋아하는 '말투'를 맞춰서 주어야 합니다."
논문 제목: Zero-Token Knowledge Delivery via KV Cache Injection (Knowledge Packs)
저자: Andrey Pustovit (Independent Researcher)
1. 문제 정의 (Problem)
기존의 검색 증강 생성 (RAG, Retrieval-Augmented Generation) 은 외부 지식을 모델의 프롬프트에 텍스트 형태로 삽입하여 해결합니다. 그러나 이는 다음과 같은 심각한 비효율성을 초래합니다.
토큰 비용의 선형적 증가: 에이전트가 여러 번 검색을 수행할 경우, 사실 (fact) 만으로도 수백 개의 토큰을 소모하여 컨텍스트 윈도우 예산을 빠르게 고갈시킵니다.
비효율성: 5 번의 검색만으로도 700 개 이상의 토큰이 소모될 수 있습니다.
이전 연구의 오해: 일부 기존 연구에서는 KV 캐시 주입이 RAG 보다 성능이 뛰어나다고 주장했으나, 이는 채팅 템플릿 (Chat Template) 포맷팅 오류로 인한 성능 저하를 제대로 통제하지 못해 발생한 착각일 가능성이 높습니다.
2. 제안 방법 (Methodology)
저자는 "Knowledge Packs" 라는 개념을 제안하며, 사전에 계산된 KV 캐시 (Key-Value Cache) 를 직접 주입하여 제로 토큰 (Zero-Token) 비용으로 지식을 전달하는 방법을 제시합니다.
2.1 KV 캐시 주입 (KV Cache Injection)
오프라인 작성 단계: 사실 (fact) 문장들을 모델의 채팅 템플릿 (Chat Template) 에 맞춰 포맷팅 (예: <|system|> 태그 포함) 한 후, 모델에 프론트워드를 실행하여 KV 캐시를 사전에 계산하고 저장합니다.
온라인 추론 단계: 사용자의 질문 (Query) 이 들어오면, 사전 계산된 KV 캐시를 past_key_values 로 주입하고 질문만 토큰화하여 생성을 수행합니다.
핵심 요구사항: 지식 텍스트는 반드시 모델의 채팅 템플릿에 맞춰 특수 토큰 (special tokens) 으로 감싸져야 합니다. 이를 무시하고 원시 텍스트 (Raw text) 를 사용하면 분포 이탈 (OOD) 로 인해 성능이 급격히 저하됩니다.
2.2 KV-프refix 동등성 (KV-Prefix Equivalence)
이론적 증명: 인과적 어텐션 (Causal Attention) 을 가진 디코더 전용 트랜스포머에서, 텍스트 F에 대한 단독 프론트워드의 KV 캐시는 F와 질문 q를 연결한 텍스트 (F∘q) 에 대한 공동 프론트워드의 KV 엔트리와 비트 단위 (bit-identical) 로 동일합니다.
결과: KV 캐시 주입을 통한 지식 전달과 프롬프트 내 텍스트 삽입은 완전히 동일한 출력을 생성하며, 토큰 비용은 O(n)에서 O(1)로 감소합니다.
2.3 확장성 및 구성 (Scaling & Composition)
뱅크 라우팅 (Banked Routing): 대량의 지식을 처리하기 위해 BGE 임베딩을 기반으로 사실을 클러스터링하여 뱅크로 나누고, 쿼리 시 가장 가까운 뱅크의 KV 캐시를 선택하거나 온-the-fly 재계산합니다.
KV 구성 (Composition): 독립적으로 생성된 KV 캐시들을 단순히 연결하는 것은 RoPE (Rotary Positional Embedding) 위치 인코딩 충돌로 실패합니다. 대신, 캐시 A 를 프refix 로 사용하여 캐시 B 를 순차적으로 처리하는 방식으로 구성해야 정확도가 유지됩니다.
2.4 행동 유도 (Behavioral Steering via Value Deltas)
값 (Value) 공간 조작: RoPE 는 키 (Key) 를 회전시키지만 값 (Value) 은 회전시키지 않는 특성을 이용합니다. 키에 산술 연산을 가하면 일관성이 깨지지만, 값 (Value) 에만 대비적 델타 (Contrastive Delta) 를 적용하면 모델의 행동 양식을 유도할 수 있습니다.
중간 레이어 집중: 행동 유도 효과는 모델의 중간 레이어 (33~66%) 의 값에 국한되어 발생하며, 서로 다른 방향 (예: 방어적 코딩 vs 문서화) 의 델타는 거의 직교하여 동시에 적용 가능합니다.
3. 주요 기여 (Key Contributions)
KV-프refix 동등성 증명 및 검증: Qwen3-8B 와 Llama-3.1-8B 모델에서 700 개의 질문에 대해 KV 주입과 텍스트 프롬프트 삽입 간 0 개의 편차 (Zero Divergences) 를 확인했습니다.
채팅 템플릿의 중요성 규명: KV 캐시 생성 시 채팅 템플릿을 무시하면 정확도가 6~7%p 하락함을 발견했습니다. 이는 기존 연구에서 KV 가 RAG 보다 우월하다는 잘못된 주장의 원인이 되었을 가능성을 제시합니다.
토큰 비용 절감: 다단계 검색 (5 단계) 시 최대 95% 의 토큰 절감 효과를 입증했습니다.
이중 채널 아키텍처: 지식 전달 (전체 KV) 과 행동 유도 (중간 레이어 Value Delta) 를 동시에 수행하여, α≤0.7 수준에서 정확도 저하 없이 행동 양식을 변경할 수 있음을 보였습니다.
4. 실험 결과 (Results)
HotpotQA 벤치마크:
정확도: KV-chat 과 RAG 는 동일한 정확도 (예: Qwen3-8B 기준 65.2%) 를 보였으며, 700 번의 비교에서 출력 결과가 완전히 일치했습니다.
포맷팅 오류 영향: 템플릿 없이 원시 텍스트를 사용한 KV-raw 는 정확도가 6.0%p (Qwen) 와 5.5%p (Llama) 하락했습니다. 특히 여러 사실을 연결해야 하는 'Bridge' 질문에서 저하가 심했습니다.
토큰 비용 스케일링:
RAG 는 검색 단계가 늘어날수록 토큰 비용이 선형적으로 증가하지만 (단계당 140150 토큰), KV 주입은 질문 토큰만 사용하므로 비용이 일정합니다 (31~35 토큰).
5 단계 검색 시 쿼리당 약 700 토큰을 절약할 수 있습니다.
행동 유도 (Value Steering):
코딩 태스크에서 방어적 코딩 패턴을 유도하는 데 성공했습니다.
최적의 α (Qwen: 2.0, Llama: 1.5) 에서 텍스트 프롬프트 방식의 약 절반 수준 (Text-in-prompt 점수 대비) 의 효과를 보였으며, 중간 레이어 (33~66%) 만 조작해도 전체 레이어 조작과 동일한 효과를 얻었습니다.
지식 전달과 행동 유도를 동시에 적용할 때, α≤0.7에서는 사실적 정확도 (EM) 가 유지되면서 형식성 (Formality) 이 20% 향상되었습니다.
5. 의의 및 결론 (Significance & Conclusion)
손실 없는 최적화: Knowledge Packs 는 RAG 의 프롬프트 삽입을 대체하는 손실 없는 (Lossless) 최적화입니다. 추가 학습이나 가중치 수정 없이, 동일한 정확도를 유지하면서 토큰 비용을 극도로 줄일 수 있습니다.
실용적 적용: 토큰 기반 과금 API, 긴 대화 컨텍스트, 에이전트 워크플로우 등에 매우 유리합니다.
새로운 제어 가능성: KV 캐시를 통해 모델의 내부 상태 (특히 Value 공간) 에 직접 접근하여, 텍스트로 표현할 수 없는 새로운 행동 양식을 유도할 수 있는 가능성을 열었습니다.
한계점: KV 캐시는 모델 아키텍처에 종속적이므로 (Llama 캐시는 Qwen 에서 사용 불가) 이식성이 떨어집니다. 또한, 행동 유도 효과는 텍스트 프롬프트 방식보다 약하며, 현재는 코딩 스타일 등 특정 영역에서만 검증되었습니다.
이 논문은 RAG 의 비효율성을 해결할 수 있는 강력한 대안을 제시함과 동시에, 트랜스포머 모델의 KV 캐시 구조와 채팅 템플릿의 미세한 차이가 성능에 미치는 영향을 명확히 규명했다는 점에서 의의가 큽니다.