최근 TurboQuant가 대두되면서 KV cache 얘기가 많이 나오는데, 간략히 이에 대한 개념을 정리할 겸 글을 써봅니다.
일단 쉽게 이해하는이니까 정보 전달에 대해서부터 말해보겠습니다.
텍스트 데이터는 순서가 중요한 데이터입니다. 주가처럼 전형적인 시계열과는 조금 다르지만 앞에서 나온 정보가 뒤의 해석에 영향을 준다는 점에서 넓게 보면 같은 순서 기반 데이터라고 볼 수있습니다.
우리는 특정 단어를 볼 때 그 단어만 따로 보지 않습니다. 항상 앞에 어떤 말이 나왔는지, 즉 맥락을 함께 보고 뜻을 이해합니다. 같은 표현이라도 앞 문장에 따라 의미가 달라지기 때문입니다.
그래서 언어모델도 현재 토큰을 이해하려면, 이전에 등장한 정보들이 어느 정도 뒤로 전달되어야 합니다.
컴퓨터는 언어를 그대로 이해하지 못하기 때문에 텍스트를 숫자의 형태로 바꿔서 처리합니다.
흔히 컴퓨터는 0과 1로 대화한다고 하고 01010111111111010 과 같은 이미지나 글을 종종 보곤 하는데, 이러한 이유 때문입니다.
다만 단어를 너무 단순하게 숫자 하나로만 바꾸면 문제가 생깁니다.
예를 들어 봄, 여름, 가을, 겨울을 각각 1, 2, 3, 4로 바꾼다면 원래는 없는 크기 관계가 생깁니다.
현실에서는 겨울이 가을보다 "크다"거나, 가을이 여름보다 "높다"는 개념은 없지만 숫자로 두면 4 > 3 > 2 > 1 같은 관계가 생깁니다.
그래서 실제로는 이런 범주형 정보를 보통 벡터 형태로 바꿔 표현합니다.
예를 들면
봄 = [1, 0, 0, 0],
여름 = [0, 1, 0, 0],
가을 = [0, 0, 1, 0],
겨울 = [0, 0, 0, 1]
같은 식입니다.
즉, 컴퓨터는 언어를 단순한 번호표가 아니라 숫자의 묶음인 벡터로 바꿔 다룹니다.
그렇다면 긴 문장에서 앞쪽 정보를 뒤로 어떻게 전달할까? 라는 의문을 던져보면,
가장 직관적인 방법은 특정 정보를 저장하는 칸을 하나 두고 그 칸을 ...




