본문으로 건너뛰기

"Insight" 태그 — 4개 게시물

인사이트, 트렌드 분석 관련 글

모든 태그 보기

Context Engineering for AI Agents: Lessons from Building Manus

· 약 4분
김성연
AI Research Engineer, Brain Crew

TL;DR

AI 에이전트 개발에서 컨텍스트 엔지니어링은 모델 파인튜닝보다 빠른 반복과 확장성을 제공한다. Manus 팀은 KV-cache 히트율을 핵심 지표로 삼아 지연시간과 비용을 최적화했으며, 프롬프트 접두사 안정화, 추가 전용 컨텍스트 설계, 명시적 캐시 중단점 설정 등의 원칙을 통해 에이전트 성능을 개선했다. 컨텍스트 구성 방식이 에이전트의 속도, 복구 능력, 확장성을 결정하는 핵심 요소다.

Key Takeaways

  • KV-cache 히트율이 프로덕션 AI 에이전트의 가장 중요한 지표: 캐시된 토큰 비용은 캐시되지 않은 토큰 대비 최대 10배 저렴하며(Claude Sonnet 기준), TTFT와 추론 비용에 직접적 영향을 미친다.
  • 컨텍스트 엔지니어링이 파인튜닝보다 빠른 피드백 루프 제공: 모델 훈련은 주 단위 반복이 필요하지만, 컨텍스트 엔지니어링은 시간 단위로 개선사항 배포가 가능하여 PMF 탐색 단계에 적합하다.
  • 프롬프트 접두사 안정성 유지가 필수: 단 하나의 토큰 변경도 이후 모든 캐시를 무효화하므로, 시스템 프롬프트에 타임스탬프 같은 동적 값을 포함하지 않아야 한다.
  • 추가 전용(append-only) 컨텍스트 설계 원칙: 이전 작업이나 관찰을 수정하지 않고, JSON 직렬화 시 키 순서를 보장하여 캐시 일관성을 유지해야 한다.
  • 에이전트는 챗봇과 다른 토큰 비율 특성: 평균 입력:출력 토큰 비율이 100:1로, 프리필링 단계가 압도적으로 많아 KV-cache 최적화가 더욱 중요하다.

상세 내용

컨텍스트 엔지니어링의 전략적 선택

Manus 팀은 프로젝트 초기에 중요한 기술적 분기점에 직면했다. 오픈소스 모델을 파인튜닝하여 엔드투엔드 에이전트를 구축할 것인가, 아니면 최신 LLM의 문맥 내 학습(in-context learning) 능력을 활용할 것인가?

BERT 시대의 NLP 개발 경험은 명확한 교훈을 제공했다. 당시 모델은 작았지만 파인튜닝과 평가에 주 단위 시간이 소요되었고, 이러한 느린 피드백 루프는 빠르게 변화하는 애플리케이션 개발, 특히 PMF(Product-Market Fit) 이전 단계에서 치명적인 단점이었다. GPT-3와 Flan-T5의 등장은 문맥 내 학습이라는 새로운 패러다임을 열었고, Manus는 여기에 베팅하기로 결정했다.

이 선택의 핵심 이점은 개선사항을 몇 주가 아닌 몇 시간 내에 배포할 수 있다는 점이다. 더 중요한 것은 제품이 기반 모델과 직교(orthogonal)하도록 유지한다는 점이다. "모델의 발전이 밀물이라면, Manus는 바닷바닥에 고정된 기둥이 아닌 배가 되고자 한다"는 표현이 이를 잘 설명한다.

KV-Cache 중심 설계의 중요성

프로덕션 환경에서 AI 에이전트의 성능을 좌우하는 가장 중요한 단일 지표는 KV-cache 히트율이다. 이는 지연시간과 비용 모두에 직접적인 영향을 미친다.

에이전트의 작동 방식과 토큰 비율

일반적인 에이전트는 다음과 같이 작동한다:

  1. 사용자 입력 수신
  2. 현재 컨텍스트 기반으로 액션 선택
  3. 환경(예: VM 샌드박스)에서 액션 실행
  4. 관찰 결과를 컨텍스트에 추가
  5. 작업 완료까지 반복

이 과정에서 컨텍스트는 매 단계마다 증가하지만, 출력(주로 구조화된 함수 호출)은 상대적으로 짧다. Manus의 경우 평균 입력:출력 토큰 비율이 약 100:1로, 챗봇과 비교해 프리필링과 디코딩 간 비율이 극단적으로 치우쳐 있다.

비용 최적화의 핵심

KV-cache를 활용하면 TTFT(Time To First Token)와 추론 비용을 극적으로 줄일 수 있다. Claude Sonnet을 예로 들면:

  • 캐시되지 않은 토큰: 3 USD/MTok
  • 캐시된 토큰: 0.30 USD/MTok
  • 10배의 비용 차이

KV-Cache 히트율 향상을 위한 핵심 원칙

1. 프롬프트 접두사를 안정적으로 유지

LLM의 자기회귀적 특성상 단 하나의 토큰 차이만으로도 그 이후의 모든 캐시가 무효화된다. 흔한 실수는 시스템 프롬프트 시작 부분에 초 단위 타임스탬프를 포함하는 것이다. 모델이 현재 시간을 알 수 있게 하지만, 캐시 히트율을 심각하게 저하시킨다.

2. 컨텍스트를 추가 전용(Append-Only)으로 설계

  • 이전 작업이나 관찰을 수정하지 말 것
  • 직렬화가 결정적(deterministic)이도록 보장
  • 많은 프로그래밍 언어와 라이브러리가 JSON 객체 직렬화 시 안정적인 키 순서를 보장하지 않으므로 주의가 필요

3. 캐시 중단점을 명시적으로 표시

일부 모델 제공업체나 추론 프레임워크는 자동 증분 접두사 캐싱을 지원하지 않는다. 이런 경우 컨텍스트에 수동으로 캐시 중단점을 삽입해야 한다. 캐시 만료 가능성을 고려하고, 최소한 시스템 프롬프트 끝을 포함하도록 설정해야 한다.

vLLM 같은 프레임워크로 모델을 자체 호스팅할 경우, 접두사/프롬프트 캐싱이 활성화되어 있는지 확인이 필요하다.

확률적 대학원생 하강법(Stochastic Graduate Descent)

Manus 팀은 더 나은 컨텍스트 구성 방법을 발견할 때마다 에이전트 프레임워크를 네 번이나 재구축했다. 이러한 아키텍처 검색, 프롬프트 조정, 경험적 추측의 수동 프로세스를 팀은 "확률적 대학원생 하강법(Stochastic Graduate Descent, SGD)"이라고 부른다. 우아하지는 않지만 효과적이다.

컨텍스트 엔지니어링은 여전히 실험적 과학의 영역에 있으며, 수백만 사용자를 대상으로 한 실제 테스트를 통해 검증된 패턴이 중요하다.

미래를 위한 설계 원칙

맥락(context)이 에이전트의 행동을 정의한다:

  • 실행 속도
  • 복구 능력
  • 확장 가능성

모델이 더 강력하고, 빠르고, 저렴해지고 있지만, 아무리 뛰어난 능력도 메모리, 환경, 피드백의 필요성을 대체할 수 없다. 에이전트의 미래는 컨텍스트 하나하나로 구축될 것이다.

References

Multi Vector and Dataset Geometry

· 약 11분
김태한
AI Research Engineer, Brain Crew

TL;DR

Multi-vector retrieval 알고리즘 선택은 **유사도 함수(MaxSim/SumSim/Top-K Sum)**와 데이터 기하학(Isotropic/Anisotropic/Multi-Kernel) 두 축에 의해 결정된다. PLAID는 moderate variance + MaxSim 조합에, MUVERA는 isotropic 데이터에 최적화되어 있으며 이 조건을 벗어나면 성능이 급격히 저하된다. 흥미롭게도 SumSim은 mean-pooling으로 단일 벡터 MIPS로 환원 가능하며, ColPali는 per-token HNSW + 이진화로 32배 압축하면서도 94% recall을 유지할 수 있다. 임베딩 모델 학습 시 variance/isotropy 정규화를 통해 인덱싱 친화적 기하학을 설계할 수 있다는 점이 핵심이다.

Key Takeaways

  • 알고리즘 선택 전 데이터 기하학 분석이 필수: PLAID/MUVERA 도입 전에 intra-document variance와 anisotropy 정도를 정량화하라. 잘못된 조합은 centroid pruning 붕괴나 recall 저하를 초래한다.
  • SumSim은 특수 인프라가 불필요: 내적의 bilinearity를 활용하면 mean-pooled 단일 벡터 MIPS로 환원되어 표준 HNSW/DiskANN으로 처리 가능하다.
  • ColPali의 고정 cardinality는 게임 체인저: 1030개 고정 패치는 per-token HNSW + 이진화(32x 압축)로 효율적 처리가 가능하며, ~94% recall을 유지한다.
  • Contrastive learning이 기하학을 결정: InfoNCE 손실의 온도 파라미터와 hard negative mining이 multi-kernel anisotropic 분포를 생성하며, 이것이 인덱싱 효율성에 직접 영향을 미친다.
  • 모델 설계와 인덱싱은 독립적이지 않음: 학습 단계에서 variance/isotropy 정규화를 통해 PLAID나 MUVERA에 최적화된 임베딩 분포를 유도할 수 있다. 이는 PoBE(Preference-Optimized Binary Embedding) 같은 접근에 직접 활용 가능하다.

상세 내용

Multi-Vector Retrieval의 두 가지 핵심 축

전통적인 retrieval은 point-to-point MIPS(Maximum Inner Product Search)로 해결되지만, multi-vector retrieval은 본질적으로 집합 대 집합(set-to-set) 유사도 문제다. 각 문서와 쿼리는 단일 벡터가 아닌 임베딩 집합으로 표현된다: Q = {q₁, ..., qₘ}, P = {p₁, ..., pₙ}.

이 문제 공간은 두 개의 독립적인 축으로 분류할 수 있다:

  1. 유사도 함수(Similarity Function): 두 집합 간 유사도를 계산하는 방법
  2. 데이터 기하학(Dataset Geometry): 임베딩 공간 내 분포의 통계적 구조

대부분의 기존 논의는 MaxSim + ColBERT 스타일 분포라는 단일 조합에 집중되어 있으며, 이는 전체 문제 공간의 일부에 불과하다.

유사도 함수의 분류 체계

MaxSim (Chamfer Similarity)

ColBERT의 표준 접근법으로, 각 쿼리 토큰에 대해 가장 잘 매칭되는 문서 토큰을 찾아 합산한다:

sim_MaxSim(Q, P) = Σᵢ max_j ⟨qᵢ, pⱼ⟩
  • 비대칭적: 쿼리 토큰에 대해서만 합산 (문서→쿼리 방향은 고려하지 않음)
  • Fine-grained alignment: 각 쿼리 토큰이 독립적으로 최적 매칭을 찾음
  • Winner-takes-all 특성: 각 쿼리 토큰에 대해 단 하나의 문서 토큰만 기여

SumSim (All-Pairs)

모든 가능한 쿼리-문서 토큰 쌍의 유사도를 합산한다:

sim_SumSim(Q, P) = Σᵢ Σⱼ ⟨qᵢ, pⱼ⟩
  • 대칭적: 모든 토큰이 동등하게 기여
  • Cross-modal matching, group recommendation 등에 사용
  • PLAID의 pruning 전략과 근본적으로 비호환

Top-K Sum

각 쿼리 토큰에 대해 상위 k개 문서 토큰의 유사도를 합산:

sim_TopK(Q, P) = Σᵢ Σ(j∈TopK) ⟨qᵢ, pⱼ⟩
  • MaxSim (k=1)과 SumSim (k=|P|) 사이의 중간 지대
  • k 증가 시 PLAID의 centroid pruning 효율성 감소

Symmetric Chamfer

양방향 MaxSim의 평균:

sim_SymChamfer(Q, P) = 1/2 [sim_MaxSim(Q, P) + sim_MaxSim(P, Q)]

저자의 핵심 지적: 현재 multi-vector retrieval 담론은 MaxSim을 문제 자체와 동일시하고 있으며, 다른 유사도 함수들은 체계적으로 무시되고 있다.

Dataset Geometry: 세 가지 기하학적 체제

임베딩 분포의 통계적 구조는 인덱싱 알고리즘의 성능을 근본적으로 결정한다.

Gaussian Isotropic

모든 방향에서 균일한 분산을 가진 분포:

v ~ N(μ, σ²I)
  • 이론적 분석에서 자주 가정되지만 실제로는 드묾
  • 랜덤 하이퍼플레인 기반 LSH가 이론적 보장을 제공하는 체제

Gaussian Anisotropic

방향에 따라 분산이 다른 분포:

v ~ N(μ, Σ), Σ ≠ σ²I
  • 특정 방향(주성분)으로 데이터가 "늘어난" 형태
  • SimHash 같은 각도 기반 해싱에 문제 발생

Multi-Kernel Anisotropic

여러 Gaussian 클러스터의 혼합, 각 클러스터가 비등방적:

v ~ Σₖ πₖ · N(μₖ, Σₖ)
  • 실제 학습된 임베딩의 현실적 분포
  • ColBERTv2, ColPali 등이 이 체제에 속함
  • Contrastive learning의 자연스러운 결과물

세 가지 기하학적 체제의 비교. 실제 multi-vector 임베딩은 Multi-Kernel Anisotropic 체제에 해당한다.

Contrastive Training이 만드는 기하학

ColBERT의 InfoNCE 손실 함수는 특정 기하학적 구조를 유도한다:

온도 파라미터 τ의 역할

L_InfoNCE = -log [exp(⟨q, p⁺⟩/τ) / Σᵢ exp(⟨q, pᵢ⟩/τ)]
  • τ는 클러스터 tightness를 제어하는 파라미터
  • 낮은 τ → 더 촘촘한 클러스터 (equi-angular 형태)
  • 높은 τ → 더 넓게 퍼진 분포

Hard Negative Mining의 영향

의미적으로 유사하지만 관련 없는 문서(hard negatives)를 명시적으로 구분하도록 학습하면:

L_hard = -log [exp(⟨q, p⁺⟩/τ) / (exp(⟨q, p⁺⟩/τ) + λ·Σ exp(⟨q, p⁻_hard⟩/τ))]
  • 클러스터 간 경계 방향으로 방향성 늘어남(directional stretching) 발생
  • Within-kernel 공분산이 비구형(non-spherical)이 됨
  • 결과적으로 multi-kernel anisotropic 분포 생성

핵심 통찰: 하나의 금융 문서 내에서도 토큰들은 여러 의미적 역할(전문 용어, 기능어, 맥락 수식어)을 수행하며, 각각이 임베딩 공간의 다른 영역(다른 커널)에 매핑된다.

기하학 정량화 지표

Intra-document variance (문서 내 분산)

σ²_intra(d) = 1/|P_d| Σᵢ ‖pᵢ - μ_d‖²
μ_d = 1/|P_d| Σᵢ pᵢ
  • 높은 variance: 토큰들이 여러 의미 영역에 분산
  • PLAID의 centroid pruning 효율성에 직접 영향

Residual magnitude (잔차 크기)

centroid 할당 후 잔차:

r_i = p_i - c_assigned(i)
  • 큰 잔차: 양자화 시 재구성 노이즈 증가
  • PLAID Stage 3의 신뢰도에 영향

문서별 intra-document variance 분포. ColPali 같은 vision 모델은 텍스트 모델보다 훨씬 높은 분산을 보인다.

PLAID의 기하학적 한계

PLAID는 3단계 파이프라인으로 작동한다:

  1. Centroid Pruning: 쿼리 토큰과 관련 없는 centroid 제거
  2. Document Filtering: 관련 centroid만 포함한 문서로 후보 축소
  3. Verification: 압축된 표현으로 정확한 MaxSim 계산

Centroid Pruning의 선택성 붕괴

문서 d가 활성화하는 고유 centroid 수:

n_d = |{c_i : ∃p ∈ P_d, c_i = argmin_c ‖p - c‖}|

PLAID의 선택성(제거되는 문서 비율):

selectivity = 1 - (n_d · n_query) / (C · N_docs)
  • 높은 σ²_intra (예: ColPali) → n_d가 크게 증가
  • C = 65,536인 경우, n_d가 수천 개로 증가하면 pruning이 거의 아무것도 제거하지 못함
  • 결과: 거의 모든 문서가 Stage 2로 진입 → 계산 비용 급증

SumSim에서의 PLAID 붕괴

MaxSim의 "winner-takes-all" 특성:

  • 각 쿼리 토큰에 대해 단 하나의 문서 토큰만 승리
  • 비매칭 centroid는 max 연산에서 무시됨

SumSim의 "all-contribute" 특성:

  • 모든 문서 토큰이 모든 쿼리 토큰에 기여
  • Centroid pruning의 상한 기반 제거가 무의미해짐

PLAID Stage 2의 pruning 로직:

if max_i ⟨q_i, c_k⟩ < θ → centroid c_k 제거

이는 MaxSim에서만 유효하며, SumSim에서는:

contribution(c_k) = Σᵢ Σ(p∈cluster_k) ⟨qᵢ, p⟩

단일 쿼리 토큰과의 최대 유사도로 전체 기여를 상한할 수 없음.

Quantization 품질과 Residual Magnitude

ColBERTv2는 centroid ID + 2-bit 양자화 잔차로 압축:

재구성 오차: ‖p_i - (c_i + r_q)‖
MaxSim 근사 오차: |MaxSim_true - MaxSim_approx| ≤ Σᵢ ‖ε_i‖

MaxSim에서는 이것이 유효하지만, large residual을 가진 anisotropic 데이터에서는 2-bit 양자화가 significant noise를 도입한다.

Residual magnitude 분포. 큰 잔차는 양자화 노이즈를 증가시켜 PLAID의 정확도를 저하시킨다.

MUVERA의 기하학적 한계

MUVERA는 SimHash 기반 파티셔닝으로 multi-vector 집합을 고정 차원 벡터(FDE)로 변환한다.

SimHash와 Anisotropy의 불협화음

b개의 랜덤 하이퍼플레인 {h₁, ..., h_b}를 사용. Isotropic 데이터에서 충돌 확률:

P_collision(u, v) = 1 - θ_uv/π

이는 각도만으로 결정되며, 균일 분포에서 이론적 보장이 성립한다.

그러나 Anisotropic 데이터에서는:

Σ = [σ₁² 0; 0 σ₂²], σ₁² >> σ₂²

주축(high variance 방향) u에 수직인 랜덤 하이퍼플레인이:

  • ℓ₂ 거리에서 가까운 두 벡터를 다른 버킷으로 분리
  • 유효 각도 θ_eff > θ_uv

Anisotropic 클러스터에서 SimHash의 문제. 주축에 수직인 하이퍼플레인이 가까운 이웃을 분리한다.

Over-Partitioning 문제

올바른 충돌 확률:

P_collision^(b) = (1 - θ_eff/π)^b

b에 대해 지수적으로 감소하여, 큰 b (fine-grained FDE)는 nearest neighbor 쌍을 다른 파티션으로 분리할 확률이 높아진다.

트레이드오프 딜레마:

  • 작은 b: coarse FDE → 낮은 discrimination, 많은 false positive
  • 큰 b: fine-grained FDE → nearest neighbor 분리, recall 저하

Multi-kernel anisotropic 공간에서 elongated within-kernel 분포는 SimHash의 이론적 보장을 무효화한다.

실용적 해결책 #1: SumSim은 Mean-Pooling으로 충분하다

내적의 **bilinearity (쌍선형성)**를 활용한 핵심 증명:

sim_SumSim(Q, P) = Σᵢ Σⱼ ⟨qᵢ, pⱼ⟩
= Σᵢ Σⱼ qᵢᵀpⱼ
= (Σᵢ qᵢ)ᵀ (Σⱼ pⱼ)
= |Q| · |P| · ⟨μ_Q, μ_P⟩

여기서 μ_Q = (1/|Q|)Σᵢ qᵢ, μ_P = (1/|P|)Σⱼ pⱼ

SumSim이 mean-pooled 벡터 간 단일 내적으로 환원되는 과정.

실무 함의:

  • SumSim 기반 retrieval (aggregate affinity, group recommendation, cross-modal matching)
  • Mean-pooled representation을 오프라인 계산
  • 표준 ANN 시스템으로 인덱싱: HNSW, DiskANN, ScaNN
  • PLAID도, MUVERA도, 커스텀 인프라도 불필요

코드 예시:

# Multi-vector 대신 단일 벡터로 변환
doc_embedding_pooled = doc_embeddings.mean(dim=0)
query_embedding_pooled = query_embeddings.mean(dim=0)

# 표준 HNSW 인덱스 사용
index = hnswlib.Index(space='ip', dim=embedding_dim)
index.add_items(doc_embeddings_pooled)
results = index.knn_query(query_embedding_pooled, k=10)

# 필요 시 full multi-vector로 re-rank
for doc_id in results:
exact_score = compute_sumsim(query_embeddings, doc_embeddings[doc_id])

실용적 해결책 #2: ColPali의 고정 Cardinality 활용

ColPali는 ColBERT와 근본적으로 다른 특성을 가진다:

  • ColBERT: 텍스트 길이에 따라 가변적인 토큰 수 (50~500+)
  • ColPali: 페이지당 정확히 1030개 임베딩 (1024 image patches + 6 instruction tokens)

이 고정 cardinality는 완전히 다른 최적화 전략을 가능하게 한다.

Vespa의 Per-Token Nearest Neighbor 접근

Phase 0 (Pre-filtering):
각 쿼리 토큰 qᵢ에 대해:
- 이진화 임베딩으로 Hamming 거리 계산
- k₀개 nearest page-patch 검색
- 해당 페이지들의 union 생성

Phase 1 (Approximate MaxSim):
생존 페이지들을 inverted Hamming distance로 스코어링
상위 k₁개 유지

Phase 2 (Exact MaxSim):
상위 k₁개를 full-precision float MaxSim으로 re-rank

Vespa 스타일 ColPali 검색 워크플로우. 이진화 + per-token HNSW + 단계적 reranking.

저장 비용 비교 (10억 페이지 기준):

구성페이지당 저장량총 저장량Phase 0 Recall
ColPali float32526 KB~526 TB100%
ColPali bfloat16263 KB~263 TB~99%
ColPali binarized16.5 KB~16.5 TB~94%
Centroid index (k=30)7.7 KB~7.7 TBvariable

32배 압축 + 최소 recall 손실이 핵심이다.

이진화 구현:

def binarize_embeddings(embeddings):
"""각 차원을 평균 기준으로 이진화"""
threshold = embeddings.mean(dim=-1, keepdim=True)
binary = (embeddings > threshold).to(torch.uint8)
# 128 dim → 16 bytes
return torch.packbits(binary, dim=-1)

def hamming_distance(binary1, binary2):
"""Hamming 거리 계산"""
xor = binary1 ^ binary2
return torch.popcnt(xor).sum()

# Per-token HNSW 인덱스
per_token_index = [
hnswlib.Index(space='hamming', dim=16) # 16 bytes
for _ in range(1030) # 각 패치 위치별 인덱스
]

# Phase 0: Per-token nearest neighbor
candidate_pages = set()
for query_token in query_embeddings:
binary_query = binarize_embeddings(query_token)
for token_idx, index in enumerate(per_token_index):
nearest = index.knn_query(binary_query, k=100)
candidate_pages.update(nearest)

# Phase 1: Approximate MaxSim with binary
# Phase 2: Exact MaxSim with float32

의사결정 프레임워크

유사도 함수데이터 기하학권장 접근법핵심 고려사항
SumSimAnyMean-pool → 표준 HNSWMulti-vector 인프라 완전 불필요
MaxSimMulti-kernel, moderate σ²_intraPLAIDMS MARCO 스케일에서 검증됨
MaxSimMulti-kernel, high σ²_intraPLAID + large codebookStage-2 selectivity 실증 검증 필요
MaxSimAnyMUVERA + re-rankRecall 검증 필수, b 신중 조정
Top-K SumMulti-kernel커스텀 파이프라인PLAID pruning 직접 적용 불가
MaxSim (ColPali)High variance, fixed cardinalityPer-token HNSW + 이진화32x 압축, ~94% recall
MaxSim (소규모)<10M 문서Brute-force float MaxSim특수 인프라 불필요

실무 체크리스트:

  1. 데이터 기하학 먼저 분석:

    # Intra-document variance 측정
    for doc in corpus:
    embeddings = model.encode(doc)
    variance = embeddings.var(dim=0).mean()
    print(f"σ²_intra = {variance:.4f}")

    # Anisotropy 측정 (주성분 분산 비율)
    pca = PCA()
    pca.fit(all_embeddings)
    explained_variance_ratio = pca.explained_variance_ratio_
    anisotropy = explained_variance_ratio[0] / explained_variance_ratio[-1]
  2. 유사도 함수 확인: MaxSim이 정말 필요한가? SumSim으로 충분하지 않은가?

  3. 스케일 고려: 10M 문서 미만이면 brute-force도 실용적

  4. 고정 cardinality 여부: ColPali 같은 경우 per-token 접근 고려

Embedding Model 설계 시사점

저자의 가장 중요한 통찰: 학습 단계에서 인덱싱 친화적 기하학을 유도할 수 있다.

Intra-document Variance 정규화 (PLAID 최적화)

def variance_regularization_loss(embeddings, target_variance):
"""문서 내 분산을 목표값으로 정규화"""
doc_variance = embeddings.var(dim=0).mean()
return (doc_variance - target_variance) ** 2

# 전체 손실에 추가
total_loss = info_nce_loss + λ_var * variance_reg_loss

σ²_target을 codebook 크기에서 좋은 PLAID selectivity를 보이는 값으로 설정하면, 인덱싱 효율성을 모델에 내재화할 수 있다.

Within-kernel Isotropy 정규화 (MUVERA 최적화)

def isotropy_regularization_loss(embeddings, cluster_assignments):
"""각 클러스터 내에서 등방성 유도"""
loss = 0
for cluster_id in unique(cluster_assignments):
cluster_embeds = embeddings[cluster_assignments == cluster_id]
cov_matrix = torch.cov(cluster_embeds.T)
eigenvalues = torch.linalg.eigvalsh(cov_matrix)
# 고유값 분산 최소화 → 구형 클러스터
loss += eigenvalues.var()
return loss

더 둥근 클러스터 형태를 유도하여 랜덤 하이퍼플레인 파티셔닝과의 호환성 향상.

PoBE(Preference-Optimized Binary Embedding)에의 적용:

class GeometryAwareBinaryEmbedding(nn.Module):
def forward(self, x):
# 표준 임베딩
embeddings = self.encoder(x)

# Variance 정규화 (PLAID용)
var_loss = variance_reg(embeddings, target=0.15)

# Isotropy 정규화 (이진화 친화적)
iso_loss = isotropy_reg(embeddings, self.clusters)

# 이진화
binary_embeds = torch.sign(embeddings - embeddings.mean())

return binary_embeds, var_loss + iso_loss

핵심 메시지: 임베딩 모델 설계와 인덱싱 인프라는 독립적 선택이 아니다. 모델이 학습하는 기하학이 인덱스 성능을 직접 결정하며, 그 기하학에 대한 제어는 일반적으로 인식되는 것보다 훨씬 크다.

열린 연구 질문

Geometry-Aware Hashing

랜덤 하이퍼플레인 대신 실제 공분산 구조 기반 파티셔닝:

  • k-means LSH: 주성분 방향으로 파티션
  • Learned hashing: 데이터 분포를 직접 학습

Visual Retrieval의 적절한 유사도 함수

ColPali가 MaxSim을 사용하는 것은 ColBERT로부터의 관성일 수 있음:

  • 이미지 패치 간 유사도에는 다른 aggregation이 더 적절할 수 있음
  • Spatial pooling, attention-weighted sum 등의 대안 탐구 필요

모델 스케일에 따른 기하학 변화

더 큰 모델이 더 isotropic한 임베딩을 생성하는가?

  • 표현력 증가가 clustering 구조를 어떻게 변화시키는가?
  • 인덱싱 친화도와

AI 스케일링과 동질화의 경계: NeurIPS 2025 핵심 트렌드 분석

· 약 8분
김성연
AI Research Engineer, Brain Crew

TL;DR

NeurIPS 2025에서 AI 연구의 패러다임 전환이 감지되었습니다. 단순 스케일링을 넘어 데이터 품질과 효율적 추론이 중요해졌고, AI 모델들의 응답이 지나치게 유사해지는 '집단의식(Hivemind)' 현상이 심각한 문제로 부상했습니다. 특히 "우리는 AI를 제대로 측정하고 있는가?"라는 근본적 질문과 함께, 벤치마크의 한계와 XAI/Causality의 중요성이 강조되며, AI 연구가 기록 경쟁이 아닌 본질적 이해와 신뢰성 확보로 방향을 전환해야 한다는 메시지가 명확히 전달되었습니다.

Key Takeaways

  • Scaling 패러다임의 전환: 모델 크기 확대가 아닌 데이터 품질, 추론 능력, 효율성이 차세대 AI 발전의 핵심 요소로 부상
  • AI 동질화(Hivemind) 위기: 서로 다른 모델들이 창의적 질문에 지나치게 유사한 답변을 생성하며, 이는 정렬(alignment) 과정에서 다양성이 소실되는 구조적 문제로 확인됨
  • 벤치마크의 근본적 재검토 필요: 데이터 오염, 지름길 학습, 구성 타당도 부족 등으로 인해 현재 벤치마크가 실제 AI 능력을 제대로 측정하지 못하며, 발달심리학처럼 엄격한 평가 방법론 도입이 시급함
  • XAI와 Causality의 역할 분리: XAI는 모델의 상관관계를 설명하지만 인과관계는 보장하지 않으며, Causality는 개입의 결과를 예측하는 문제 해결의 언어로 접근해야 함
  • "Learning to X" 패러다임: 완벽한 알고리즘 설계 대신 시뮬레이터 기반 학습과 사후 검증(a posteriori verification)을 통해 복잡한 문제를 근사적으로 해결하는 실용적 접근 필요

상세 내용

Scaling 이후의 시대: Data · Reasoning · Efficiency

NeurIPS 2025는 21,575개 논문 제출, 5,290개 채택이라는 전년 대비 61% 증가한 압도적 규모로 개최되었습니다. 이는 AI 연구의 폭발적 성장을 보여주지만, 학회의 핵심 메시지는 오히려 성장 방식의 전환이었습니다.

그동안 AI 발전은 "더 큰 모델, 더 많은 데이터, 더 많은 연산 자원"이라는 단순한 공식에 의존해왔습니다. 그러나 이번 학회에서는 Data, Reasoning, Efficiency가 반복적으로 강조되며, 스케일링의 한계를 인정하고 질적 전환을 모색하는 분위기가 지배적이었습니다.

AI 동질화의 위기: Hivemind 현상

2021년 신설된 Datasets & Benchmarks Track이 2025년부터 메인 트랙과 동일한 리뷰 프로세스를 거치게 되면서 위상이 크게 높아졌고, 이 트랙의 Best Paper인 "Artificial Hivemind: The Open-Ended Homogeneity of Language Models (and Beyond)"는 그 변화의 필요성을 명확히 보여줍니다.

"Hivemind(집단의식)"는 많은 개체가 하나의 정신처럼 생각을 공유하는 현상을 의미합니다. 연구팀은 ChatGPT 사용자 100만 건의 질문을 분석했고, 그 중 75%가 창의적 글쓰기나 브레인스토밍 같은 "열린 질문"임을 발견했습니다.

문제는 이러한 질문에 대한 언어 모델들의 응답이 지나치게 유사하다는 점입니다. "알록달록한 두꺼비가 모험을 떠나는 이야기"를 같은 모델이 50번 생성했을 때 79%의 경우 평균 유사도가 0.8을 초과했습니다. 더 놀라운 것은 서로 다른 25개 모델의 답변이 단 두 개의 클러스터("시간은 강물", "시간은 직조공")로 수렴했다는 점입니다.

발표자는 경고했습니다: "ChatGPT는 주간 활성 사용자 8억 명에 도달했습니다. 수백만 명이 매일 비슷한 질문을 하고 비슷한 답변을 받는다면, 창의적 콘텐츠가 표현되는 방식 자체를 동질화하는 것입니다."

이 문제는 특히 정렬(alignment) 과정에서 심화됩니다. 보상 모델이 좁은 범위의 정답만을 학습하면서 다양한 가능성들이 훈련 과정에서 소실됩니다.

연구팀은 Infinity Chat이라는 새로운 데이터셋을 제안하며 "모델 다양성을 어떻게 측정할 것인가?"라는 질문에 답하고자 했습니다. 기존 선호도 데이터셋은 예시당 몇 개의 라벨만 있어 다양성 평가가 어려웠지만, 이 연구는 응답당 25명의 독립적 평가자를 동원해 31,000개의 밀집 라벨을 수집했습니다.

"AI의 미래는 같은 목소리의 더 큰 메아리가 아니라, 많은 목소리의 합창이어야 합니다. 그리고 이를 측정하고 개선하기 위해서는, 다양성을 제대로 평가할 수 있는 데이터셋과 벤치마크가 필요합니다."

데이터와 벤치마크의 위기: 우리는 제대로 측정하고 있는가?

Melanie Mitchell 교수의 초청 강연은 신경과학자 Terry Sejnowski의 말을 인용하며 시작되었습니다:

"마치 우리와 소통할 수 있는 외계인이 갑자기 나타난 것 같습니다. 그들의 행동 일부는 지능적으로 보입니다. 하지만 인간의 지능이 아니라면, 그들의 지능의 본질은 무엇일까요?"

Mitchell 교수는 "오늘날 생성 AI 시스템은 많은 벤치마크에서 이미 인간 성능을 초과했고, 벤치마크 자체도 포화상태"라며 직설적으로 질문했습니다: "벤치마크를 잘한다는 것이 무엇을 의미하는지 우리는 알고 있는가?"

현재 벤치마크가 놓치고 있는 6가지 핵심 문제가 제시되었습니다:

  1. 데이터 오염(Data Contamination): 테스트 데이터가 훈련 데이터에 섞여 들어가는 문제
  2. 근사 검색(Approximate Retrieval): 유사한 질문이 훈련 데이터에 있어 패턴 매칭만으로 답하는 경우
  3. 지름길(Shortcuts): 벤치마크의 허위 상관관계를 이용해 실제 능력 없이도 정답을 맞추는 경우
  4. 구성 타당도(Construct Validity) 부족: 변호사 시험 통과가 실제 변호사 역량을 의미하지 않는 것처럼, 테스트가 측정하려는 능력의 좋은 대리 지표가 아닌 경우
  5. 의인화(Anthropomorphism): 인간을 위해 설계된 테스트를 AI에게 주면 같은 의미를 갖는다는 잘못된 가정
  6. 재현성과 강건성 문제: 같은 모델도 GPU 개수나 배치 크기만 바꾸면 정확도가 최대 9%까지 달라짐

특히 흥미로웠던 것은 "발달심리학에서 배우자"는 제안이었습니다. 발달심리학자들은 수십 년간 또 다른 종류의 외계 지성, 즉 인간 아기에게 똑같은 질문을 해왔습니다.

Mitchell 교수는 "아기는 물리학을 이해하는가?" 연구를 소개했습니다. 연구자들은 불가능한 물리 현상을 보여주고 아기가 더 오래 쳐다보는지 측정했습니다. 단 한 번이 아니라 여러 조건을 체계적으로 통제하고, 다양한 변형을 시도하며, 반복 실험으로 확인하는 작업을 거쳤습니다.

"AI 커뮤니티는 재현 연구를 경시한다"며 "좋은 과학의 본질적 특성은 선행 연구의 재현과 점진적 확장"임을 강조했습니다. 더 이상 어려운 벤치마크를 만들고 리더보드 상위에 오르는 유행을 쫓기보다는, 더 엄격한 평가 방법론을 통해 AI의 지능을 판별하자는 것이 핵심입니다.

"비행기를 크게 만들면 이전의 기록은 깰 수 있겠지만, 아무리 크게 만든다 하더라도 달에는 갈 수 없다"는 얀 르쿤(Yann LeCun)의 말처럼, 지금은 기록 깨기 경쟁이 아니라 달에 갈 수 있는 방법을 찾아야 하는 시기입니다.

XAI: 설명은 이해를 돕지만, 진실을 보장하지는 않는다

XAI(Explainable AI) 튜토리얼의 핵심 메시지는 명확했습니다: "AI는 이제 우리 삶 깊숙이 들어왔고, 우리는 그것이 어떻게 작동하는지 알아야 한다."

XAI의 세 가지 핵심 가치가 제시되었습니다:

  1. 신뢰(Trust): 사용자가 모델을 더 잘 신뢰할 수 있게
  2. 통찰(Insight): 인간이 보지 못한 패턴 발견 (AlphaGo의 37수처럼)
  3. 디버깅(Debug): 연구자가 모델을 개선할 수 있게

대표적인 사례로 허스키 vs 늑대 분류 문제가 소개되었습니다. 모델이 허스키 사진을 "늑대"로 분류했는데, 알고 보니 모델은 동물이 아니라 **배경의 눈(snow)**만 보고 판단하고 있었습니다.

LLM 시대에는 Claude의 Golden Gate Bridge 연구가 주목받았습니다. LLM 내부에서 "Golden Gate Bridge"에 대응하는 숨겨진 개념(hidden concept)이 발견되었고, 어떤 언어로 입력하든, 심지어 이미지를 넣어도 같은 feature 조합이 활성화됨을 밝혔습니다.

하지만 발표자들이 반복해서 강조한 중요한 경고가 있습니다:

"설명이 그럴듯하다고 해서 모델의 실제 판단 근거라고 믿어서는 안 된다"

XAI 기술들은 "모델이 무엇을 학습했는가"를 보여줄 뿐, "왜 그것이 올바른 인과관계인가"는 말해주지 않습니다. 허스키-늑대 분류기가 배경 눈을 보고 판단한다는 것을 알았다고 해서, 눈과 늑대 사이에 인과관계가 있다는 뜻은 아닙니다. 단지 모델이 데이터에서 그런 "상관관계(correlation)"를 학습했을 뿐입니다.

사람이 납득하기 쉬운 설명과 모델 내부의 실제 결정 메커니즘이 어긋나는 경우도 생각보다 흔합니다. 모델에 대한 설명은 오히려 모델이 학습한 지름길(shortcut)을 정당화하는 도구가 될 수도 있습니다.

따라서 XAI 기술 수준에 대한 판단은 "설명이 얼마나 친절한가"가 아니라, "과학 실험처럼 검증되어야 할 대상을 얼마나 잘 판단해주는가"가 되어야 합니다.

Causality: 인과는 설명이 아니라 문제 해결의 언어

조경현 교수의 강연은 XAI 튜토리얼과 출발점은 비슷했지만, 문제를 바라보는 시선은 훨씬 더 practical하고 problem solving에 가까웠습니다.

핵심 메시지는 이것이었습니다:

"머신러닝(AI)으로 세상을 설명하려고 하지 말고, 어려운 문제를 찾아내고 일반화해서 반복 가능한 해법을 찾는 discipline으로 사용하자"

조 교수는 "Learning to X: 문제를 푸는 알고리즘을 설계하지 말고, 학습에게 맡기자"는 패러다임을 제안했습니다. 각기 다른 분야의 문제들에 대한 estimator를 만드는 것은 너무 복잡하고 시간 소모적입니다.

Learning to X 접근법은 다음과 같습니다:

  1. 합리적인 데이터 생성 시뮬레이터를 만들고 (완벽할 필요 없음)
  2. 수백만 개의 (input, output) 쌍을 생성한 뒤
  3. DNN(Deep Neural Network)을 학습시키고
  4. 실제 세계의 데이터는 학습된 DNN을 통과시켜 결과를 얻음

물론 이 접근은 곧바로 신뢰(trust) 문제와 부딪힙니다. 조 교수도 "고전 알고리즘은 보통 점근적 보장(asymptotic guarantee)이 있지만, 학습된 알고리즘은 블랙박스에 최소한의 보장만 있다"며 이 간극을 인정했습니다.

하지만 그는 패러다임을 바꿔야 한다고 주장합니다:

"a priori guarantee(사전 보장)" → "a posteriori verification(사후 검증)"

Learning to X를 통해 발견한 알고리즘들을 광범위한 테스트(extensive testing)로 검증하며 신뢰를 쌓아가자는 것입니다. 완벽한 보장은 못 하더라도, 우리가 손으로 풀 수 없는 문제를 근사(approximation)로라도 풀 수 있다면 그것으로 충분하다는 입장입니다.

XAI와 Causality: 차이와 보완

두 분야를 정리하면 다음과 같습니다:

XAI는 학습된 모델에 대한 **설명(interpretation)**을 만듭니다:

  • "모델이 뭘 보고 결정했는지"를 보여줌
  • 하지만 그 설명이 진짜 원인인지(인과관계가 있는지)는 별개의 문제
  • "상관관계(correlation)"는 보여주지만, "인과관계(causation)"는 보장하지 않음

Causality는 **행동(개입, intervention)**의 결과를 알고 싶어 합니다:

  • "무엇을 바꾸면 결과가 어떻게 바뀌는가"에 초점
  • 가정/식별가능성(identifiability)/데이터 조건이 까다로워서 쉽지 않았음
  • 하지만 DNN과 새로운 접근(Learning to X) 등으로 인과 추론을 학습으로 근사하는 시도들이 활발히 진행 중

두 분야 모두 "모델을 믿을 수 있게 만들고, 모델을 통해 세상/문제를 이해/해결하려는 것"은 동일하지만, XAI는 모델의 내부 메커니즘 이해에, Causality는 현실 세계 문제의 개입과 해결에 초점을 맞춘다는 점에서 상호 보완적입니다.

References

Salesforce, Agent 정확도 높이기 위해 LLM 의존도 축소

· 약 5분
최재훈
LEAD (AI Research Engineer), Brain Crew

TL;DR

Salesforce가 AI 에이전트의 정확도와 신뢰성 확보를 위해 LLM 의존도를 줄이고 결정론적(deterministic) 접근 방식을 도입했다. LLM의 확률적 특성은 같은 입력에도 다른 결과를 내놓아 기업 운영에 부적합하며, 환각 문제와 높은 토큰 비용도 발생시켰다. 이에 Salesforce는 'Agentforce Script'와 하이브리드 추론 아키텍처를 통해 LLM의 지능을 활용하되 미리 정의된 워크플로우로 제어하는 전략을 채택했다. 이는 AI 에이전트 도입의 새로운 패러다임을 제시하며, 특히 정확성이 필수적인 비즈니스 워크플로우에서 LLM과 전통적 프로그래밍의 균형이 중요함을 시사한다.

Key Takeaways

  • 결정론적 제어의 필요성: 기업 환경에서는 같은 입력에 항상 동일한 출력이 보장되어야 하므로, LLM의 확률적 특성을 결정론적 워크플로우로 제어하는 것이 필수적
  • 하이브리드 추론 아키텍처: LLM의 지능을 활용하되, Agent Graph와 같은 구조적 제약을 통해 출력 범위를 미리 지정하는 방식이 실무적 해법
  • 비용 최적화: 정형화된 작업에 LLM 사용을 줄이면 불필요한 토큰 소비를 방지하고(상담 건당 $2+ 절감 가능), 정확성도 향상시킬 수 있음
  • AI Drift 방지: 에이전트가 목표를 잃고 방황하는 현상을 막기 위해 'deterministic trigger' 같은 명확한 제어 지점 설정이 중요
  • 적재적소 활용: 모든 문제를 LLM으로 해결하려 하지 말고, 규칙 기반 접근과 LLM 추론을 작업 특성에 따라 선택적으로 조합하는 전략이 효과적

상세 내용

LLM의 확률적 특성과 기업 운영의 괴리

AI 에이전트 도입에 가장 적극적이었던 Salesforce가 전략 전환을 선언했다. 산즈나 파룰레카르(Sanzana Parulkar) 마케팅 담당 수석 부사장은 The Information과의 인터뷰에서 "AI 에이전트의 신뢰성을 향상하기 위해 결정론적(deterministic) 자동화 방식을 사용하고 있다"고 밝혔다.

이러한 전략 전환의 핵심은 LLM의 본질적 특성에 있다. LLM으로 작동하는 에이전트는 확률적(stochastic)으로 작동하여, 같은 질문에도 매번 조금씩 다른 답변을 생성한다. 하지만 기업 환경에서는 입력값이 같으면 결과도 항상 동일해야 한다. 재고 관리, 환불 처리, 고객 응대와 같은 핵심 비즈니스 프로세스에서 예측 가능성은 선택이 아닌 필수다.

Google Cloud의 마이클 클라크(Michael Clark) 책임자도 이 문제를 지적한 바 있다. 그는 기업이 에이전트를 도입하려면 LLM 출력을 검증하고 오류를 수정하거나, 여러 모델의 교차 검증, 그리고 인간의 모니터링과 개입이 가능한 구조가 필요하다고 강조했다.

실제 사례: Vivint의 AI Drift 문제

이론적 우려는 실제 운영에서 구체적 문제로 드러났다. 보안 카메라 전문 기업 Vivint는 Agentforce를 도입해 250만 고객 지원을 처리했지만, 예상치 못한 문제에 직면했다. 모든 고객에게 상담 후 만족도 설문조사를 보내도록 지시했으나, 알 수 없는 이유로 설문조사가 전송되지 않는 경우가 발생한 것이다.

이는 'AI Drift' 현상으로, AI가 주제와 관계없는 질문을 받으면 원래 목표를 잃고 방황하는 것을 의미한다. Vivint는 Salesforce와 협력하여 '확정적 트리거(deterministic trigger)'를 설정해 이 문제를 해결했다. 이는 LLM의 판단과 무관하게 특정 조건이 충족되면 반드시 실행되는 규칙 기반 로직이다.

비용 문제: 토큰 낭비와 운영 효율성

정확성 문제 외에도 비용이 중요한 고려사항으로 떠올랐다. Salesforce 챗봇이 불필요하게 긴 추론으로 토큰을 낭비해 상담 건당 2달러 이상이 소요된다는 불만이 접수됐다.

무라리다 크리시나파사드(Muralida Krishnaprasad) Salesforce CTO는 "반드시 정확한 답을 얻어야 하는 부분에서 LLM이 쓸데없이 긴 추론으로 토큰을 낭비하는 것은 문제"라며, "LLM에 'if this, then that'과 같은 전통적 조건문을 결합하면 비용을 절감하면서도 정확한 답을 보장할 수 있다"고 설명했다.

Salesforce의 해법: 하이브리드 추론 아키텍처

Salesforce AI 연구소의 필 무이(Phil Mui) 수석 부사장은 블로그를 통해 '하이브리드 추론을 통한 유도형 결정론(Guided Determinism through Hybrid Reasoning)'이라는 접근법을 소개했다.

이 아키텍처의 핵심은 다음과 같다:

1. Agent Graph를 통한 구조적 제어 디자인 타임에 미리 정의된 워크플로우 구조를 통해 LLM이 허용된 범위 내에서만 작동하도록 제약한다. 에이전트가 실행될 때마다 동일한 조치를 취할 수 있도록 출력 범위를 미리 지정한다.

2. Agentforce Script 시스템 현재 테스트 단계인 이 시스템은 LLM의 판단 없이도 작업을 처리할 수 있는 시점을 파악한다. Salesforce 웹사이트는 이를 "LLM의 본질적인 무작위성을 제거해 핵심 비즈니스 워크플로우가 매번 정확히 동일한 단계를 따르도록 보장"한다고 설명한다.

3. 선택적 LLM 활용 정형화된 작업에는 규칙 기반 로직을, 복잡한 맥락 이해가 필요한 작업에만 LLM을 활용하는 선택적 접근을 취한다.

논쟁: 과거로의 회귀인가, 진화인가?

이러한 접근에 대해 "LLM 도입 이전 기본 챗봇 시절로 되돌아가는 것 아니냐"는 비판이 제기됐다. 실제로 LLM 의존도를 낮추면 챗봇이 고객 질문의 맥락과 미묘한 뉘앙스를 이해하지 못하거나, 포괄적인 답변을 제공하지 못할 수 있다.

그러나 Salesforce는 이를 "기능 축소"가 아닌 "정교화"로 반박했다. 대변인은 "주제 구조를 개선하고, 가이드라인을 강화하고, 정보 검색 품질을 향상하고, 더 구체적이고 맥락에 맞으며 실제 고객 요구에 맞는 답변을 제공하도록 조정했다"고 설명했다.

파룰레카르 부사장의 "1년 전만 해도 우리는 모두 LLM을 더 많이 신뢰했었다"는 발언은 업계의 학습 곡선을 단적으로 보여준다. 이는 LLM의 가능성에 대한 초기의 과도한 기대에서, 실무적 한계를 인정하고 보완책을 마련하는 성숙한 단계로의 전환을 의미한다.

산업에 미치는 영향

세계 최대 소프트웨어 기업 중 하나인 Salesforce의 전략 전환은 AI 에이전트를 도입하는 다른 기업들에게 중요한 시사점을 제공한다. 특히 법률, 재무, 의료, 마케팅, 영업, 고객 서비스 등 정확성이 중요한 영역에서는 LLM의 환각(hallucination)과 비결정론적 특성이 치명적인 결과로 이어질 수 있다.

이는 "모든 것을 LLM으로"라는 단순한 접근에서 벗어나, 작업 특성에 따라 규칙 기반 시스템과 LLM을 전략적으로 조합하는 하이브리드 접근이 실무적 해법임을 보여준다. AI 에이전트의 성공적인 도입은 기술의 한계를 인정하고, 기업 운영의 현실적 요구사항과 균형을 맞추는 것에서 시작된다.

References