ColBERT류 멀티벡터 검색은 품질은 좋지만 느리다. 검색을 신경망 학습 문제로, 다시 단일벡터 검색으로 두 번 환원해 기존 인덱스로 가속한다.
한 줄 요약
ColBERT 같은 멀티벡터 검색은 품질은 좋은데 느리다. LEMUR 은 검색 문제를 두 번 접어(환원) 기존의 빠른 단일벡터 인덱스로 풀 수 있게 만들어, 선행 방식보다 한 자릿수(약 10배) 빠르게 한다.
배경 — 멀티벡터가 좋은 이유, 그리고 느린 이유
전통적 임베딩 검색은 질의·문서를 각각 벡터 한 개로 만든 뒤 코사인 유사도로 비교한다. 빠른 인덱스(HNSW, IVF 등)가 잘 발달돼 있어서 큰 코퍼스에서도 ms 단위로 검색이 된다.
그런데 의미가 길거나 단락 안에 여러 갈래의 정보가 있으면 단일벡터로는 부족하다. ColBERT 류 late-interaction 모델은 질의·문서를 토큰마다 임베딩을 하나씩 만들고, "질의 토큰 각각에 대해 문서에서 가장 가까운 문서 토큰을 골라 더하는" MaxSim 방식으로 점수를 매긴다 — 그래서 품질이 단일벡터보다 확실히 좋다.
그림 1. 단일벡터는 한 번만 비교하면 끝, 멀티벡터는 토큰 × 토큰 × 문서 — 품질은 좋지만 비교량이 폭증한다
핵심 — 두 번 접어서 단일벡터 인덱스로
LEMUR 의 아이디어는 멀티벡터 검색 문제를 두 번 환원(reduction) 하는 것이다. 한 번에 단일벡터 검색으로 가지 않고, 중간에 신경망 학습 문제를 거친다.
그림 2. 두 번의 환원 — 멀티벡터 검색 → 신경망 지도학습 문제 → 잠재공간 단일벡터 검색
두 환원 각각이 사실은 무엇을 하는가
① "검색 = 학습" 으로 보기
멀티벡터 검색 점수(MaxSim) 는 본질적으로 "질의 벡터들이 주어졌을 때 각 문서의 점수를 매기는 함수"다. 저자는 이걸 1-은닉층 신경망이 푸는 지도 학습 문제로 정식화한다 — 입력은 질의 벡터들, 출력은 문서별 점수, 라벨은 원래 MaxSim 이 매겼을 점수. 학습된 신경망은 "원래 검색기" 의 행동을 압축한 모델이 된다.
② "신경망 추론 = 단일벡터 검색" 으로 보기
이렇게 학습한 1-은닉층 신경망은, 적절히 변환하면 그 추론을 잠재공간의 단일벡터 내적 검색으로 쓸 수 있다. 즉 "이 질의에 가장 점수 높은 문서를 고르라" = "잠재공간에서 이 잠재 질의 벡터에 가장 가까운 문서 잠재 벡터를 고르라". 그 순간 기존 단일벡터 인덱스(HNSW·IVF·PQ 등)를 그대로 쓸 수 있게 된다 — 새 인덱스 구조를 발명할 필요가 없다.
그림 3. 두 번째 환원 후엔 멀티벡터 문제가 잠재공간 위의 단일벡터 최근접 검색 문제로 보인다 — 기존 인덱스가 그대로 통한다
앞의 네 편이 "에이전트가 토큰·도구·워크플로를 어떻게 쓰나"였다면, 이건 결이 살짝 다른 검색 인프라 쪽이다 — 그래도 "비싼 정확한 방법을 더 싼 풀이법으로 환원한다"는 발상 자체가 에이전트 시스템 설계 전반에 참고할 만하다. 큰 그림을 못 바꿀 땐 문제를 한 번 더 접어서 이미 잘 풀리는 문제로 만든다 — LEMUR 은 그 패턴의 깔끔한 예시다.