마트료시카 임베딩: 다양한 스케일의 디테일
마트료시카 임베딩이란 무엇인가요?
효율적인 벡터 검색 시스템을 구축할 때, 한 가지 핵심 과제는 허용 가능한 지연 시간과 리콜을 유지하면서 스토리지 비용을 관리하는 것입니다. 최신 임베딩 모델은 수백 또는 수천 개의 차원을 가진 벡터를 출력하기 때문에 원시 벡터와 인덱스에 상당한 스토리지와 계산 오버헤드를 발생시킵니다.
전통적으로 인덱스 구축 직전에 양자화 또는 차원 축소 방법을 적용하면 저장소 요구 사항을 줄일 수 있습니다. 예를 들어, 제품 정량화 (PQ)를 사용해 정밀도를 낮추거나 주성분 분석(PCA)을 사용해 차원 수를 줄임으로써 저장 공간을 절약할 수 있습니다. 이러한 방법은 전체 벡터 집합을 분석하여 벡터 간의 의미 관계를 유지하는 보다 간결한 벡터 집합을 찾습니다.
이러한 표준 접근 방식은 효과적이기는 하지만 정밀도나 차원을 단 한 번만 감소시킵니다. 하지만 점점 더 정밀하게 표현되는 피라미드처럼 여러 계층의 디테일을 동시에 유지할 수 있다면 어떨까요?
마트료시카 임베딩을 소개합니다. 러시아 중첩 인형(그림 참조)에서 이름을 따온 이 기발한 구조는 단일 벡터 내에 여러 스케일의 표현을 임베딩합니다. 기존의 사후 처리 방법과 달리, 마트료시카 임베딩은 초기 학습 과정에서 이 다중 스케일 구조를 학습합니다. 그 결과는 놀랍습니다. 전체 임베딩이 입력 의미를 포착할 뿐만 아니라 중첩된 각 하위 집합 접두사(전반부, 1/4 등)가 덜 세밀하지만 일관성 있는 표현을 제공합니다.
그림: 여러 세부 계층이 있는 Matryoshka 임베딩의 시각화
그림: 여러 세부 계층이 있는 Matryoshka 임베딩의 시각화
이 접근 방식은 벡터 차원의 임의의 하위 집합을 사용하면 일반적으로 의미론적 의미가 파괴되는 기존 임베딩과 뚜렷한 대조를 이룹니다. Matryoshka 임베딩을 사용하면 특정 작업의 정밀도와 계산 비용의 균형을 가장 잘 맞출 수 있는 세분성을 선택할 수 있습니다.
빠른 대략적인 검색이 필요하신가요? 가장 작은 "인형"을 사용하세요. 최대한의 정확도가 필요하신가요? 전체 임베딩을 사용하세요. 이러한 유연성은 다양한 성능 요구 사항이나 리소스 제약 조건에 맞춰 조정하는 시스템에 특히 유용합니다.
추론
마트료시카 임베딩의 가치 있는 응용 분야는 리콜을 희생하지 않고 유사도 검색을 가속화하는 것입니다. 쿼리와 데이터베이스 임베딩의 더 작은 하위 집합(예: 처음 1/32 차원)을 활용함으로써, 유사성 정보의 대부분을 여전히 보존하는 이 축소된 공간에 인덱스를 구축할 수 있습니다. 이 작은 임베딩 공간의 초기 결과는 바로 사용할 수 있습니다. 하지만 이 접근 방식은 유사도 검색 작업에 효율적이고 효과적이면서도 차원 축소에 따른 사소한 감소를 고려하고 회상률을 높이는 기법도 있습니다.
그림: 마트료시카 임베딩을 사용한 퍼널 검색의 작동 방식
그림: 마트료시카 임베딩에서 퍼널 검색이 작동하는 방식
정확도를 유지하면서 유사도 검색 속도를 효율적으로 높이기 위해 '퍼널 검색' 방식을 사용할 수 있습니다. 먼저 임베딩 차원의 처음 1/32만 사용하여 초기 유사성 검색을 수행하여 광범위한 후보 항목 풀을 생성합니다. 그런 다음 처음 1/16의 차원을 사용하여 쿼리와의 유사성을 기준으로 이러한 후보 항목의 순위를 재조정하여 목록의 일부를 정리합니다. 이 프로세스는 반복적으로 계속되며, 임베딩 차원의 하위 집합을 점점 더 크게(1/8, 1/4 등) 사용하여 순위를 재조정하고 가지치기를 수행합니다. 중요한 점은 이 저차원 공간에서 초기 유사성 검색을 한 번만 수행하고 임베딩 모델을 한 번만 통과하면 쿼리 임베딩이 계산된다는 점입니다. 이 퍼널링 프로세스는 각 단계에서 후보를 좁히며, 전차원 공간에서 직접 검색하는 것보다 더 빠르고 효율적입니다. 1/32 차원 공간에서 많은 일치 항목을 도출하고 퍼널 검색을 통해 정제하면 강력한 회상력을 유지하면서 유사도 검색 속도를 크게 높일 수 있습니다.
훈련
몇 가지 기술적 세부 사항을 살펴보겠습니다. 이 방법은 매우 간단하게 적용할 수 있습니다. 문장 임베딩을 위해 BERT 모델을 미세 조정하는 상황을 생각해 보세요. 마스킹된 토큰 손실에 대해 사전 학습된 BERT 모델을 문장 임베딩 모델로 변환하기 위해 최종 계층의 평균, 즉 토큰별로 문맥화된 임베딩의 평균으로 문장 임베딩을 형성합니다.
훈련 목표의 한 가지 선택은 코사인 문장(CoSENT) 손실, 즉 L v s 입니다. 여기에는 한 쌍의 문장 임베딩인 u v와 원하는 유사도 점수인 s를 입력합니다(공식은 위의 링크를 참조하세요). 이제 마트료시카 임베딩을 학습하기 위해 훈련 목표를 약간 수정합니다:
d L v = w L1, v 1) + w L1:, v 1) + w L1, v
여기서 합은 정보 병목현상에 도달할 때까지 이전 기간에 대한 입력의 절반에 대한 손실을 계산하여 계속됩니다. 저자들은 다음과 같이 설정할 것을 제안합니다.
W
간단히 말해, 마트료시카 손실은 입력의 재귀적 하위 집합에 대한 원래 손실의 가중치 합계입니다.
위 방정식에서 한 가지 중요한 점은 마트로시카 손실이 임베딩 모델 간에 가중치를 공유함으로써 여러 스케일에서 효율적인 표현 학습을 달성한다는 것입니다(예를 들어, 동일한 모델을 사용하여 인코딩하는 데 사용됩니다 u 및 u )와 스케일 간 차원 공유 u 은 u의 하위 집합).
마트료시카 임베딩과 Milvus
Milvus는 pymilvus.model, 문장 변환기 또는 기타 유사한 도구와 같은 표준 라이브러리를 통해 로드할 수 있는 모든 Matryoshka 임베딩 모델을 원활하게 지원합니다. 시스템 관점에서 볼 때 일반 임베딩 모델과 Matryoshka 임베딩을 생성하도록 특별히 훈련된 임베딩 모델 사이에는 기능적인 차이가 없습니다.
인기 있는 마트료시카 임베딩 모델은 다음과 같습니다:
OpenAI의
text-embedding-3-large
Nomic
nomic-embed-text-v1
Alibaba
gte-multilingual-base
Milvus에서 Matryoshka 임베딩을 사용하는 방법에 대한 전체 가이드는 Matryoshka 임베딩을 사용한 퍼널 검색 노트를 참조하세요.
요약
Matryoshka 임베딩을 사용하면 개발자는 시맨틱 무결성을 유지하면서 임베딩을 단축하여 보다 효율적인 검색 및 저장에 이상적입니다. 기존 모델을 수정할 수도 있지만, OpenAI 및 Hugging Face의 모델과 같이 사전 학습된 옵션도 사용할 수 있습니다.
하지만 현재로서는 오픈 소스 Matryoshka 임베딩이 부족하여 Hugging Face 허브에서 사용할 수 있는 모델이 거의 없다는 한계가 있습니다. 또한, 이러한 모델에는 '마트료시카'라는 라벨이 명시적으로 붙어 있지 않은 경우가 많아 찾기가 더 어렵습니다. 관심이 높아짐에 따라 조만간 더 폭넓게 구할 수 있고 더 명확한 라벨이 부착될 수 있기를 바랍니다.
검색 기능을 간소화할 준비가 되셨나요? 지금 바로 Milvus + Matryoshka 임베딩을 시작하세요!
리소스
- 마트료시카 임베딩이란 무엇인가요?
- 추론
- 훈련
- 마트료시카 임베딩과 Milvus
- 요약
- 리소스
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word