H+ Embedding: Harmonizing Global and Token-Level Retrieval with Context-Dependent Phrases

문서 하나의 벡터와 토큰 전부 사이에서 문맥별 구절을 만들고, 중요도에 따라 남겨 검색한다. 분할·선택·가중 상호작용의 원리부터 후보집합·벡터 예산·언어에 따른 성능과 비용의 적용 범위까지 읽는다.

Jiphyeonjeon Team2026-09-299 min read쉬운 읽기상세 읽기
dense-retrievallate-interactionmulti-vectorphrase-retrievalmedical-irnDCGpaper-review

Paper: Shusen Zhang; Junyi Hu; Ye Feng; Ziteng Wang; Zhaoyuan Pan; Xiaojun Yuan; Jiangshou Hong; Guosheng Dong; Xiangzhi Wang (2026). "H+ Embedding: Harmonizing Global and Token-Level Retrieval with Context-Dependent Phrases". arXiv:2608.00065v3. PDF.

문서 하나의 벡터와 단어 조각 수백 개 사이에서, 함께 찾을 구절을 고른다.

1. 약 이름만 맞으면 필요한 문서일까

검색창에 “제2형 당뇨와 만성 신장 질환이 있는 환자의 metformin 사용”을 입력했다고 하자. 문서 A는 metformin과 당뇨의 관계를 길게 설명하지만 신장 질환은 다루지 않는다. 문서 B는 약 이름을 덜 반복해도 신장 질환이 함께 있는 경우를 설명한다. 검색자는 단어를 많이 포함한 문서보다 질문의 조건을 함께 다루는 문서를 먼저 보고 싶다.

이는 원리를 설명하기 위한 가상 장면이지 실제 검색 결과나 의학적 권고가 아니다. 여기서 중요한 점은 “당뇨”라는 큰 주제와 “만성 신장 질환”이라는 세부 조건을 동시에 비교해야 한다는 것이다. 문서 전체의 주제만 보면 A와 B가 비슷해 보일 수 있고, 단어 조각을 낱개로만 비교하면 긴 질환명이 하나의 개념이라는 점이 약해질 수 있다.

H+ Embedding은 이 사이에 구절을 둔다. 어떤 부분을 함께 비교할지 문맥으로 정하고, 중요한 구절을 골라 검색에 사용한다. 질문은 “단어를 몇 개 지울까?”보다 **“무엇을 하나의 검색 단위로 볼까?”**에 가깝다.

2. 한 장의 요약과 수백 장의 쪽지 사이

임베딩은 텍스트의 의미를 비교하는 숫자 표현, 즉 벡터다. 전역 검색은 문서마다 벡터 하나를 남긴다. 책마다 요약 카드 한 장을 두는 셈이다. 저장과 검색에 편리하지만 서로 다른 세부 조건이 한 카드에 섞인다.

토큰 검색은 더 잘게 나눈 표현을 남긴다. 여기서 토큰은 단어와 꼭 같지 않다. 모델이 읽기 위해 자른 단어 조각일 수 있다. 질의의 각 조각과 가장 잘 맞는 문서 조각을 비교하므로 세부 대응을 살릴 수 있지만, 긴 문서에는 저장할 벡터와 비교할 쌍이 많아진다.

H+의 구절은 중간 크기의 쪽지다. “type 2 diabetes”처럼 함께 볼 표현을 하나로 모으되 모든 텍스트를 두 단어씩 기계적으로 자르지는 않는다. 문맥에 따라 길이가 달라질 수 있고, 구절에 묶이지 않은 토큰도 낱개로 남긴다. 무조건 적게 저장하는 것이 아니라 유용한 대응을 유지하며 저장 단위를 바꾸려는 접근이다.

이때 두 종류의 크기를 구별해야 한다. 벡터의 차원은 쪽지 한 장에 적는 숫자의 수이고, 벡터 개수는 쪽지가 몇 장인지다. H+의 128차원이라는 설정은 문서마다 128개 구절을 쓴다는 뜻이 아니다.

3. 함께 읽을 구절을 만들고 중요한 것부터 남긴다

공유 인코더가 의료 표현을 전역 벡터·구절 벡터·어휘 가중치로 표현하는 H+ 개요

Figure 2. 같은 텍스트에서 서로 다른 크기의 검색 표현을 만든다. 출처: Zhang et al. (2026), PDF v3, p. 2.

먼저 같은 인코더가 질의와 문서를 각각 읽는다. 초기 모델은 Qwen3-0.6B-Base이며 Qwen3-Embedding 모델에서 출발한 것은 아니다. 앞뒤 문맥을 볼 수 있도록 바꾼 인코더가 각 토큰의 상태를 만든다. 질의와 후보 문서를 매번 한꺼번에 읽는 방식이 아니므로 문서 표현은 미리 저장할 수 있다.

다음으로 CRF라는 순서 레이블 모델이 구절의 시작과 이어지는 부분을 표시한다. 어느 구절에도 들어가지 않은 토큰은 낱개 단위로 유지한다. 예시 질의라면 약물 표현, 당뇨 표현, 신장 질환 표현을 구분해 함께 비교할 수 있는 단위를 만드는 식이다. 이 구분은 설명용이지 해당 문장에서 모델이 실제로 출력한 경계는 아니다.

각 구절의 벡터는 내부 토큰 상태를 평균하고 정규화해 만든다. 별도의 중요도 점수는 토큰별로 계산한 다음 구절 안에서 합한다. 그중 점수가 큰 단위를 예산만큼 남긴다. 처음 분할할 때는 모든 토큰을 보존하지만, 마지막 선택에서는 일부 단위가 빠질 수 있다. 따라서 구절로 묶는 일과 버릴 단위를 고르는 일은 별개다.

논문의 주 평가에는 용어 사전으로 경계를 보완하는 trie도 들어간다. 반면 경계 자체의 효과를 확인하는 통제 실험에서는 CRF만 쓴다. “Phrase”라는 이름이 같아도 모든 표가 완전히 같은 설정은 아니다.

4. 질문의 각 구절이 문서에서 짝을 찾는다

남긴 질의 구절마다 문서에서 가장 비슷한 구절을 하나 찾는다. 이 최대 유사도를 더하는 방식이 MaxSim이다. 예시에서 약물 구절은 문서의 약물 설명과, 신장 질환 구절은 해당 조건을 다룬 부분과 비교할 수 있다. 한 문서의 전체 주제가 비슷한지만 보는 대신 질문의 여러 부분이 각각 얼마나 잘 대응하는지 살피는 것이다.

H+는 여기에 질문 쪽 중요도를 곱한다. 핵심 조건에 높은 중요도가 주어지면 그 대응이 최종 점수에 더 크게 기여한다. 문서의 중요도는 저장할 구절을 고르는 데 쓰지만, 비교 점수에 다시 곱하지 않는다. 중요도는 합이 1인 확률이 아니라 학습한 양수 점수다.

이 방식은 A보다 B를 먼저 볼 가능성을 만드는 구조적 이유를 제공한다. B에 신장 질환과 대응하는 표현이 있으면 그 유사도가 별도로 반영될 수 있기 때문이다. 그러나 그 조건이 실제로 더 높은 중요도를 받았는지, 부정 표현이나 임상적 의미까지 정확히 해석했는지는 별도 확인이 필요하다. 구절 점수는 문서의 사실성을 판정하는 장치가 아니다.

전역 점수와 정확한 token ID 일치를 보는 Lexical 점수도 함께 사용할 수 있다. Lexical은 찾은 후보에 더하는 보조 점수이지 세 번째 독립 검색기가 아니다. 설계상 Phrase 자체의 검색도 가능하지만, 논문의 공개 주 결과는 전역 검색이 먼저 가져온 후보를 다시 정렬한 결과다.

5. 나누는 법과 찾는 법은 다른 신호로 배운다

학습은 두 단계다. 먼저 약 1,500만 질의–문서 쌍으로 전역 표현을 가르친다. 그다음 전역·토큰·어휘 검색을 공동으로 학습하면서 구절 경계도 배운다. 관련 문서를 더 높게 평가하도록 하는 신호와 교사가 준 점수 분포를 따라가는 신호가 검색 표현을 훈련한다.

경계에는 언어모델 교사가 표시한 시작·연장·낱개 레이블을 쓴다. 즉 “검색 결과가 좋아질 때까지 모든 구절 경계를 직접 바꿔 본다”는 방식은 아니다. 별도의 Phrase 검색 손실은 없고, 경계는 교사 예시로 학습한다. 그렇다고 검색과 무관한 분할기는 아니다. 바탕이 되는 공유 인코더 상태는 검색 학습을 받는다.

학습용 Token에는 추가 변환이 있지만 추론에서는 버리고, Phrase는 원 상태를 구절별로 평균한다. 어휘 중요도도 반복 출현을 학습에서는 합하고 추론에서는 최대값으로 모은다. 학습 그림과 최종 검색 동작을 그대로 같은 것으로 읽지 않아야 한다.

교사에게 자연스러운 구절이 검색에도 가장 좋은지는 따로 검증해야 한다. 또한 정확한 경계 교사 checkpoint가 남아 있지 않고 학습 자료에 비공개 부분도 있어, 공개 설명만으로 똑같은 모델을 재현하기는 어렵다.

6. 찾아 둔 후보 안에서는 순서가 좋아졌다

주 실험에서는 Global이 전체 코퍼스에서 상위 1,000개 문서를 가져온다. Phrase는 그 안에서 순서를 바꾼다. 16개 과제의 평균은 다음과 같다.

비교 nDCG@10
전역 검색 Global 34.28
같은 전역 후보의 Phrase 재순위화 41.19

출처: Zhang et al. (2026), Table 1. Phrase는 CRF+trie 설정.

nDCG@10은 관련 문서를 상위 10개에 얼마나 잘 배치했는지 보는 순위 지표다. 여기서는 0–100으로 표시하고 과제별 점수를 같은 비중으로 평균했다. 따라서 +6.91은 순위 점수의 차이이지 정답률이나 상대 개선율 6.91%가 아니다. 16개 중 15개 과제에서 좋아졌고 Cmedqa-zh에서는 낮아졌다.

이 결과는 구절 상호작용이 후보를 더 잘 정렬한다는 근거다. 처음 예시로 돌아가면 A와 B가 모두 후보에 들어왔을 때 B를 올릴 기회가 생긴다. 그러나 B가 처음 1,000개에 없으면 이 단계에서 새로 가져올 수 없다. 더 큰 Qwen3-Embedding 4B/8B의 전체 16개 과제 점수도 H+ Phrase보다 높아서, 작은 모델이 모든 대형 검색기를 이겼다는 결과는 아니다.

7. 덜 저장하면서 토큰 검색에 가까울 수 있을까

다른 실험에서는 네 과제의 같은 후보집합 union A 안에서 Token과 Phrase를 비교했다. NFCorpus·SciFact·MedicalQA·FeedbackQA의 과제별 동일 가중 평균이다.

표현 nDCG@10 문서 벡터 평균
Token 62.95 288.59
배포형 Phrase 62.94 249.03

출처: Zhang et al. (2026), Table 2. 앞 절의 16개 과제와는 별도 비교.

표시 점수는 가깝고 벡터는 약 13.7% 적다. 같은 128차원 FP16이면 지역 벡터 데이터는 약 73.9→63.8 KB/문서로 줄어든다. 하지만 네 과제 평균의 근접성이 통계적 동등성은 아니며, 전체 인덱스나 서비스 비용이 13.7% 줄었다는 뜻도 아니다. 문서 정보와 검색 자료구조는 여전히 필요하다.

벡터 예산을 정확히 맞춘 19개 과제에서는 Phrase가 표시된 모든 예산에서 Token보다 높았다. 그러나 4개나 8개처럼 아주 작은 예산에서는 Random 묶음이 더 높았다. 전체 다국어 평균에서는 Whole word와 Equal chunks가 모든 표시 예산에서 Phrase를 앞섰다. 중국어에서 공백 기반 단어 구분이 공통 질의 개수를 거의 한 개로 낮추는 문제도 있어, 어떤 언어에서 무엇을 단위로 세는지 확인해야 한다.

속도도 별도 문제다. H20의 후보 1,000→2,000 실험에서 Phrase 채점 P95는 4.379→8.251ms로 늘었지만 순위 점수는 62.83→62.85에 그쳤다. 이는 공통 후보 표와 다른 실험이고 전체 응답시간도 아니다. 벡터를 줄였다는 사실만으로 Token보다 서비스가 빨라졌다고 결론 낼 수 없다.

8. 좋은 구절은 세 가지 선택의 결합이다

이 논문의 기여는 구절이라는 이름 자체가 아니다. 어디서 묶고, 무엇을 남기고, 질문의 어느 부분을 더 크게 반영할지를 함께 설계했다는 점이다. 네 과제 통제에서 경계 위치를 흐트러뜨리면 일부 예산에서 성능이 낮아졌고, 질의 중요도를 균등하게 바꾸면 Phrase 점수가 1.66점 떨어졌다. 묶기만 잘하면 되는 것이 아니라 가중까지 함께 작동한다.

사람이 보기에 자연스러운 구절과 검색에 유용한 구절도 꼭 같지는 않다. 인간 주석자 사이의 경계 합의가 낮고, 논문의 본문과 부록은 높은 경계 F1을 계산한 기준도 다르게 설명한다. 이 평가를 사람 모두가 인정한 최적 단위의 발견으로 받아들이기는 어렵다.

실제 시스템에서는 먼저 후보 검색이 필요한 문서를 충분히 가져오는지, 서비스 언어에서 묶음 규칙이 적절한지, 전체 저장량과 응답시간이 좋아지는지 확인해야 한다. H+는 전역 요약과 토큰 전부 사이에 유망한 선택지를 보여 주지만 모든 검색기의 보편적 대체물을 입증한 것은 아니다.

더 자세한 학습식·공정 비교·통계 해석은 상세 해설에서 읽을 수 있다. 이 글의 성능과 절차는 논문의 저자 보고이며 모델이나 검색 실험을 독립적으로 재실행하지 않았다.

References

Zhang, S., Hu, J., Feng, Y., Wang, Z., Pan, Z., Yuan, X., Hong, J., Dong, G., & Wang, X. (2026). H+ Embedding: Harmonizing global and token-level retrieval with context-dependent phrases [Preprint]. arXiv. https://arxiv.org/abs/2608.00065v3