저지연(Zero Downtime)으로 임베딩 모델 간 마이그레이션하는 방법을 찾았습니다.
요약
대규모 임베딩 모델 업그레이드 시 발생하는 막대한 시간과 비용 문제를 해결한 'embedflow'라는 방법을 소개합니다. 이 방법은 기존 인덱스에서 일부 문서를 가져와 새로운 모델로 재순위화(rerank)하는 방식으로, 백필 과정을 생략하고도 높은 검색 품질을 유지할 수 있습니다.
핵심 포인트
- 임베딩 모델 업그레이드는 대규모 데이터셋에서 막대한 시간과 비용이 소요됨.
- embedflow는 기존 인덱스 문서로 재순위화하여 새로운 모델의 성능을 검증함.
- 최대 100만 개 문서에 대해 테스트했으며, 적은 수의 샘플(50개)로도 높은 품질을 확인했음.
- Qdrant와 연동되며 pypi를 통해 쉽게 설치 및 사용 가능함.
저는 임베딩 모델들을 가지고 좀 만져봤는데, 실험해 볼 만큼 흥미롭다고 생각합니다. 이 모델들은 RAG에 유용하며, 특히 로컬LLM 관점에서는 답변을 진실(truth)에 근거하여 제시할 수 있기 때문에 더욱 그렇습니다.
하지만 만약 여러분이 10억 개의 문서를 가지고 있고, '더 좋은' 모델로 업그레이드하기로 결정한다면 어떻게 될까요? H100에서 벡터만 업그레이드하는 데도 약 108일이 걸릴 수 있습니다 (H100에서 Qwen Embed 8B를 테스트한 결과). 비록 10억 개의 벡터가 아니라 5천만 개만 한다고 해도, 업그레이드는 여전히 상당한 시간이 걸릴 수 있습니다.
저와 제 연구실은 이 문제를 해결하기로 결정했고, embedflow라는 것을 개발했습니다.
이 방법은 정말 간단합니다. 이전 소스 모델로 만든 기존 인덱스에서 K개의 문서를 가져와 새로운 모델로 재순위화(rerank)하는 것입니다. 저희는 K가 충분하다면 검색 품질이 타겟 모델과 동일하다는 것을 확인했습니다 (K를 결정하는 것이 어려운 부분입니다). 저는 최대 100만 개의 문서에 대해 63번의 마이그레이션을 테스트했습니다.
제가 얻은 가장 좋은 결과는 Qwen 4B에서 8B로 업그레이드했을 때, 단 50개의 문서만으로 네이티브 검색과 동일한 결과를 얻었다는 것입니다.
이 방법은 기존 인덱스에서 직접 문서를 가져올 수 있기 때문에, 업그레이드 시 발생하는 비용이 많이 드는 백필(backfill) 과정을 생략합니다.
embedflow는 Qdrant와 함께 작동하며, pypi를 통해 쉽게 다운로드할 수 있습니다.
pip install embedflow
GitHub 주소는 공개되어 있습니다: https://github.com/arnsri33/embedflow
여러분들이 직접 사용해 보시고 여러분의 워크플로우에 적용할 수 있는지 확인해 보셨으면 좋겠습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기