CANOPY는 검색된 항목 안에서 근거의 범위를 스스로 정한다
CANOPY: Adaptive-Granularity Evidence Compression for Multimodal RAG
무엇인가
멀티모달 RAG는 텍스트·표·이미지·영상을 검색하지만, 검색 단위(granularity)를 고르는 것만으로는 각 항목 안에서 얼마나 많은 맥락을 남길지가 결정되지 않는다. 항목을 통째로 넘기면 관련 없는 내용이 섞여 제한된 컨텍스트를 낭비하고 답변 품질을 떨어뜨릴 수 있고, 반대로 균일하게 잘게 자르면 근거를 해석하는 데 필요한 주변 맥락이 사라진다. 같은 항목 안에서도 영역마다 필요한 맥락의 양이 다르기 때문에 항목 단위로 하나의 세분도를 정하는 것으로는 이 트레이드오프가 풀리지 않는다. 기존 압축기들은 텍스트 요약·문장 추출, 표 스키마와 셀 검색, 영상 프레임 선택처럼 모달리티별 메커니즘에 의존해 왔고, 이기종 항목 전반에 공통으로 적용할 절차는 비어 있었다. 이 논문이 다루는 문제는 검색 이후의 근거 압축, 즉 검색된 항목에서 간결한 근거를 뽑아내되 항목 내부의 유지 세분도는 영역별로 적응시키는 것이다.
어떻게 동작하나
CANOPY(Canonical Projection over Hierarchy)는 각 검색 항목을 원본 영역들의 계층으로 표현한다. 텍스트는 문장이 리프이고, 표는 행 단위로 분할해 행 하나가 리프가 되며 열 헤더는 모든 레벨에 보존된다. 영상은 시간축을 따라 30초 리프 세그먼트로 나누고 10초마다 1프레임씩 최대 32프레임을 샘플링한다. 이미지는 공간적 가지치기 없이 단일 노드 계층으로 남는다. 노드 점수는 s(q_t, v) = cos(f0(q_t), fθ(v))로 계산하는데, f0는 동결된 사전학습 쿼리 인코더(Qwen3-VL-Embedding-2B)이고 fθ는 f0에서 초기화해 gold evidence 선호도로 파인튜닝한 노드 인코더다. 점수는 항목 내부의 상대 비교에만 쓰이므로 모달리티마다 따로 정해야 하는 절대 유사도 임계값이 필요 없다.
무엇과 다른가
핵심 절차는 부모 상대적 정제(parent-relative refinement)다. 계층의 루트에서 시작해, 방문한 내부 노드 v의 점수와 자식들의 점수를 비교한다. 자식 u 중 하나라도 s(q_t, u) ≥ s(q_t, v)를 만족하면 v를 그 자식들로 대체하고 각 자식 안에서 정제를 계속하며, 조건을 만족하지 않는 나머지 자식 서브트리는 버린다. 만족하는 자식이 없으면 v를 그대로 유지하는데, 유지된 노드는 스스로는 낮은 점수를 받았을 리프까지 포함해 자기 조각 전부를 보존한다. 방문한 리프는 바로 유지된다. 분기마다 독립적으로 멈출 수 있어, 결과로 나오는 근거 포레스트는 같은 항목 안에서 여러 영역을 서로 다른 세분도로 담을 수 있다. 유지 단위 개수나 토큰 예산을 미리 정하지 않으며, 노드 레벨 가지치기에 LLM 호출이 전혀 들지 않는다. 노드 임베딩은 쿼리에 의존하지 않으므로 항목당 한 번 계산해 캐시할 수 있고, 임베딩이 준비된 뒤에는 유사도 계산과 비교만으로 가지치기가 끝난다. 다만 노드 인코딩 비용과, 표의 집계형 질문 분류 및 근거 충분성 평가를 위한 별도 LLM 호출 비용은 남는다. 표가 집계형(aggregate) 질문에 쓰일 수 있는 경우에는 LLM이 원래 질문만 보고 한 번 분류해, 집계형이면 표를 통째로 유지하고 조회형(lookup)이면 계층 정제를 적용한다.
어떻게 쓰나
압축은 검색되지 않은 근거를 복구할 수 없기 때문에 CANOPY는 LLM critic과 결합된 추가 검색을 함께 쓴다. t번째 라운드에서 검색기가 q_t로 후보를 가져오면, 새로 검색된 항목은 s(q_t, v)로 압축된 뒤 누적 근거 E_t에 더해지고 재검색된 항목은 건너뛴다. critic은 원래 질문 q와 E_t를 받아 근거가 답을 뒷받침하는지 판단하고, 불충분하다고 보면 빠진 사실을 특정해 표적화된 후속 쿼리 q_{t+1}을 만든다. 충분하다고 판단하면 리더가 E_t로 답을 생성한다. 루프는 critic이 충분하다고 판단하거나 최대 검색 라운드 R에 도달하면 끝나며, R 라운드에서는 critic 호출 없이 리더가 E_R로 답한다. 즉 새로 검색된 항목의 압축은 현재 검색 쿼리에 조건화되고, 충분성 평가는 원래 질문에 대해 이루어진다.
전제와 한계
노드 인코더 파인튜닝은 gold evidence의 위치에서 선호도를 만들어낸다. gold와 겹치는 내부 노드 중 fully gold인 진짜 조상을 갖지 않는 노드들이 이상적 정제가 방문할 노드이고, 각각이 학습 인스턴스가 된다. 해당 노드가 fully gold면 세분화로 non-gold 조각을 제거할 수 없으므로 자식들보다 자신을 선호하도록 (v, u) 쌍을 만든다. 그렇지 않으면 자식을 gold와 겹치는 자식과 나머지로 나눠, gold 자식은 부모보다 높게, 나머지 자식은 부모보다 낮게, 그리고 gold 자식과 non-gold 형제 사이의 분리를 강화하는 쌍을 추가한다. 이 쌍들에 pairwise ranking loss를 적용하고, fθ의 언어 백본에 있는 LoRA 파라미터만 갱신하며 쿼리 인코더 f0는 동결한다. gold 주석은 학습 선호도 구성에만 쓰이고 추론 시 정제에는 필요하지 않다.
실험은 NQ, HotpotQA, OTT-QA, MMQA, LVBench(UniversalRAG가 공개한 적응판) 다섯 개 QA 벤치마크에서, 이들 벤치마크의 검색 컬렉션으로 만든 약 33M 항목 규모의 텍스트·표·이미지·영상 통합 코퍼스 위에서 수행됐다. 베이스라인은 No Retrieval, Vanilla RAG, UniversalRAG, IRCoT, RECOMP의 추출·생성 압축기, LongLLMLingua, S2G-RAG, 그리고 LVBench의 AKS다. Qwen3-VL-8B-Instruct를 리더로 쓴 설정에서 CANOPY는 영상이 없는 네 벤치마크의 EM과 F1에서 가장 좋았지만, HotpotQA에서 IRCoT 대비 +0.3 F1은 유의하지 않았다(95% CI [-1.7, +2.2]). 이득은 단일 라운드 검색이 놓치는 근거를 앞선 근거를 읽은 뒤에야 식별할 수 있는 멀티홉 HotpotQA와 OTT-QA에 집중됐다. 평균 2.1 라운드에서 CANOPY는 Vanilla RAG보다 최대 28% 많은 근거 토큰을 넘기고, UniversalRAG보다는 46~88% 적게 넘긴다. 라우팅은 텍스트 쿼리가 공유 공간에서 영상 항목과 멀어지는 LVBench에서만 도움이 됐고, 라우팅 없는 CANOPY가 나머지에서 앞선다. 다만 InternVL3.5-8B로 LVBench를 평가하면 라우팅 CANOPY는 UniversalRAG보다 낮은 정확도(34.0 대 37.2)를 더 많은 토큰(31,218 대 27,290)으로 달성했다.
모달리티별 압축 기법과의 비교에서 LongLLMLingua는 예산을 키워도 CANOPY보다 1.4~16.5 F1 낮은 지점에서 포화됐고, AKS는 1.5배 토큰을 쓰고도 정확도가 2.8점 낮았다. 반복 검색을 빼면 CANOPY는 비슷한 예산에서 LongLLMLingua와 비슷한 수준이 되므로, HotpotQA와 OTT-QA의 큰 격차는 반복 검색에서 나온다. S2G-RAG는 훨씬 적은 근거 토큰으로 비슷한 F1에 도달하지만 질문당 5.6회 LLM을 호출하는 반면 CANOPY는 2.8회이고, 항목 내부 가지치기에는 LLM 호출이 들지 않는다. 어블레이션에서 투영(projection)을 제거해 항목을 통째로 넘기면, 압축은 리더 입력 근거 토큰을 14.2~27.7% 줄이고 EM 변화는 -0.9~+1.2점, LVBench 정확도 변화는 +0.4점이었으며 다섯 벤치마크 모두 95% 신뢰구간이 0을 포함했다. 반면 반복 검색을 제거하면 HotpotQA와 OTT-QA의 EM이 각각 10.1점, 14.9점 떨어졌다. 즉 정확도 이득은 추가 검색이 만들고, 압축은 비슷한 정확도를 유지하면서 리더가 처리할 양을 줄인다. 라우팅을 쓴 LVBench에서는 압축이 토큰 33.3%를 절약하는 대신 정확도를 1.8점 낮췄다.
근거 선택 전략 비교에서는 gold 항목을 직접 주고 Gold Item(항목 전체 유지), Gold Span(주석 구간), 같은 계층에 대한 flat 선택(최고 점수 리프만 유지, 또는 최고 점수 노드만 유지)과 겨뤘다. CANOPY는 다섯 벤치마크 모두에서 두 flat 선택기보다 우수했지만 더 많은 토큰을 유지했는데, 이는 근거 양과 맥락 보존 사이의 트레이드오프를 반영한다. Gold Item 대비 LVBench 토큰을 40.0% 줄이면서 정확도는 비슷했고(56.4 대 56.2, 차이의 95% CI [-3.4, +3.8]), OTT-QA에서는 27.5%를 절약하는 대신 F1이 70.5에서 67.8로 내려갔다. NQ와 HotpotQA의 절약은 약 5%였다. Gold Span은 성능 상한이 아니어서 LVBench 정확도가 53.0에 그쳤고, 이는 주석 구간 밖의 맥락도 유용할 수 있음을 시사한다. 인코더 파인튜닝의 효과도 직접 측정됐는데, 테스트 gold 항목에서 올바른 부모-자식 정제 결정 비율이 벤치마크별로 28.3~43.0%에서 34.3~71.9%로 올라갔고, 가지치기된 항목 비율은 30.4~39.6%에서 85.2~95.6%로 증가해 리더 입력 토큰을 6.8~19.1% 줄이면서 F1/정확도를 +0.3~+0.9점 바꿨다(모두 신뢰구간이 0 포함). 기본 설정은 분기 계수 B=2, 라운드당 k=10 항목, 최대 R=3 라운드이며, B를 키워도 품질이나 근거량이 일관되게 개선되지는 않았고 항목을 더 검색하면 대체로 토큰만 늘고 품질 변화는 작거나 비단조적이었다.
저자들이 밝힌 한계와 전제는 다음과 같다. critic의 판단은 운영상의 정지 기준일 뿐 근거의 완전성을 보장하지 않으며, 라운드 한계에 도달한 것도 충분성을 뜻하지 않는다. 압축은 애초에 검색되지 않은 근거를 복구할 수 없다. 노드 인코딩 비용과 집계형 표 분류·근거 평가를 위한 별도 LLM 호출 비용은 사라지지 않는다. 이미지는 단일 노드로 남아 공간적 정제가 없고, 집계형 질문의 표는 통째로 유지된다. gold 주석 기반 목표는 답변에 필요한 모든 맥락이 주석되었거나 보존되었음을 보장하지 않는다. 또한 라우팅을 켠 LVBench 설정에서는 압축이 정확도를 떨어뜨렸고, InternVL3.5-8B 리더에서는 UniversalRAG보다 낮은 정확도를 더 많은 토큰으로 냈다는 점도 결과에 그대로 남아 있다.