Jina AI로 텍스트 임베딩 훈련하기
최근 베를린 비정형 데이터 밋업에서 Bo Wang으로부터 최첨단 범용 텍스트 임베딩 훈련에 대한 이야기를 들었습니다. 텍스트 임베딩은 이미 최신 벡터 검색 및 검색 증강 생성(RAG) 시스템을 구동하고 있습니다. Wang은 Jina 임베딩에 중점을 두고 최첨단 텍스트 임베딩 개발의 복잡한 세부 사항을 이해하도록 도와줍니다.
왜 Jina 텍스트 임베딩에 관심을 가져야 할까요?
Jina-Embeddings-V2의 출시는 AI 커뮤니티에 큰 반향을 일으켰고, Hugging Face에서 300만 회 이상의 다운로드를 기록했습니다. 이 모델은 LangChain, LlamaIndex와 같은 수많은 AI 프레임워크와 Milvus, Zilliz Cloud 같은 벡터 데이터베이스에 통합되었습니다. Jina 임베딩을 둘러싼 화제는 Hacker News의 상위권에까지 도달해, 긴 컨텍스트 인코더에 대한 광범위한 논쟁과 토론을 촉발했습니다. Jina 임베딩은 업계 최고 수준 중 하나인 OpenAI 임베딩과 치열하게 경쟁합니다.
이를 염두에 두고, Jina 텍스트 임베딩 개발의 복잡한 세부 사항에 대한 Wang의 발표를 살펴보겠습니다.
파인튜닝에서 대규모 임베딩 모델 훈련으로의 진화
Jina AI는 자체 임베딩 모델을 훈련하는 것으로 시작하지 않았습니다. 대신 BERT와 같은 이미 존재하는 모델을 파인튜닝하는 것에서 시작했습니다. 파인튜닝된 모델은 기존 모델보다 더 나은 성능을 보였습니다. 통계를 살펴보겠습니다. 끝의 델타 값은 파인튜닝된 모델이 원래의 사전 학습 모델과 비교해 얼마나 잘 수행되는지를 나타냅니다.
사전 학습 모델과 파인튜닝 모델 간의 성능 비교
보시다시피, 모든 파인튜닝된 모델이 크게 개선되었으며, 이는 알고리즘이 잘 작동했음을 의미합니다. 하지만 이 제품은 기술 업계에서 좋은 반응을 얻었을까요? 간단히 말하면 아니었습니다.
이때는 업계, 심지어 검색 업계조차도 벡터로 천천히 이동하고 있었고 사전 학습된 임베딩 모델을 막 사용하기 시작한 시기였습니다. 그러나 이들은 임베딩 모델 파인튜닝을 받아들일 준비가 되어 있지 않았습니다. LLM이나 RAG 시스템이 존재하지 않았기 때문에 임베딩 모델은 다른 산업에서도 널리 채택되지 않았습니다.
따라서 파인튜닝을 통해 Jina AI는 점진적인 개선을 달성할 수 있었지만, 곧 업계가 파인튜닝 기술을 받아들일 준비가 되어 있지 않다는 사실을 깨달았습니다. 이러한 깨달음은 그들이 야심 찬 시도, 즉 임베딩 모델을 처음부터 훈련하는 일에 착수하도록 이끌었습니다. 그들은 자체 개발 솔루션을 개발하는 것이 가능한 것의 한계를 넓힐 수 있게 해줄 것이라고 믿었습니다.
Jina-Embeddings-V1 만들기
Jina-Embeddings-V1을 만드는 과정에는 포괄적인 접근 방식이 포함되었습니다. Wang은 사용된 접근 방식을 설명합니다.
최첨단 모델 연구: 첫 번째 단계는 minilm, mpnet, sentence-t5, GTR, 그리고 Microsoft와 Google 같은 기술 대기업의 instructors를 포함한 최첨단 임베딩 모델을 연구하는 것입니다. 이 접근 방식은 기존 솔루션의 강점과 한계를 이해하고 개선이 필요한 영역을 식별하는 데 도움이 됩니다.
대규모 훈련 데이터셋 수집: 다음 단계는 방대한 데이터셋을 구성하는 것입니다. Jina AI는 20억 건의 영어 훈련 데이터를 사용했습니다. 이 방대한 코퍼스는 다양한 작업과 도메인을 처리할 수 있는 고품질 범용 임베딩 모델을 훈련하는 데 필수적입니다.
광범위한 데이터 정제 및 큐레이션: 학습 데이터의 품질을 보장하기 위해 중복 제거, 언어 감지, 품질 필터링을 포함한 광범위한 데이터 정제 및 큐레이션 프로세스가 수행됩니다. 이 엄격한 과정을 거친 후, Jina AI에는 4억 개의 고품질 사전 학습 데이터 레코드와 500만 줄의 인간 주석 기반 파인튜닝 데이터가 남았습니다.
분산 학습을 위한 리팩터링: Jina AI는 여러 노드와 GPU에 걸친 분산 학습을 지원하기 위해 효율적인 대규모 모델 학습을 가능하게 하도록 Finetuner 코드베이스를 리팩터링했습니다. 이러한 확장 가능한 인프라는 이처럼 방대한 데이터셋으로 모델을 학습하는 데 매우 중요합니다.
이 모델은 성공적이었지만 컨텍스트 길이가 제한되어 있었기 때문에 업계의 다른 모든 모델들 사이에서 두드러지지는 않았습니다. 이 한계를 해결하기 위해 Jina AI는 Jina-Embeddings-V2를 학습했습니다.
Jina-Embeddings-V2 소개: 짧게 학습하고, 길게 추론하기
512토큰 장벽을 극복하고 더 긴 시퀀스를 처리한다는 목표를 달성하기 위해 Jina AI는 짧은 시퀀스로 학습하면서 추론 시 최대 8,192토큰의 시퀀스를 처리할 수 있는 임베딩 모델인 Jina-Embeddings-V2를 소개합니다. 이는 몇 가지 핵심 수정 사항을 통해 달성됩니다. Wang은 이러한 수정 사항을 간략히 훑고 지나갑니다. 자세히 살펴보겠습니다:
위치 임베딩 제거
BERT를 포함한 전통적인 트랜스포머 모델은 시퀀스 내 토큰의 순서를 인코딩하기 위해 위치 임베딩에 의존합니다. 이러한 위치 임베딩은 각 토큰의 위치를 다른 토큰들과의 상대적 관계로 나타내는 고정 벡터입니다. 하지만 여기에는 한계가 있습니다:
- 컨텍스트 길이: 위치 임베딩은 컨텍스트 창을 고정된 크기(예: BERT의 512토큰)로 제한합니다. 더 긴 문서나 시퀀스는 이 한계를 초과하여 정보 손실을 초래합니다. 512토큰을 초과하면 BERT 모델의 퍼플렉시티가 어떻게 급격히 상승하는지 보십시오. 이는 정보 손실이 있음을 의미합니다. 퍼플렉시티는 모델이 텍스트의 의미를 얼마나 잘 이해할 수 있는지를 측정합니다. 퍼플렉시티가 낮을수록 더 좋습니다.
BERT에서 추론 시퀀스 길이 대 퍼플렉시티
- 위치적 제약: 멀리 떨어진 위치의 토큰들은 유사한 임베딩을 받으며, 해당 컨텍스트가 무시됩니다.
Jina-Embeddings-V2는 위치 임베딩을 완전히 제거하여 위치적 제약 없이 더 긴 시퀀스를 처리할 수 있게 합니다. 이 모델은 방대한 문서 전반의 컨텍스트를 포착하므로 문서 요약, 법률 분석, 장문 콘텐츠 이해에 적합합니다.
선형 편향을 사용한 어텐션 (ALiBi)
ALiBi는 대규모 언어 모델을 위해 개발된 기법입니다. 고정된 위치 임베딩에 의존하는 대신, ALiBi는 어텐션 계산 중에 단어 순서 정보를 동적으로 포착합니다. 그런 다음 각 토큰의 컨텍스트에 적응하여 위치적 제약 없이 앞선 토큰과 뒤따르는 토큰을 모두 고려할 수 있게 합니다.
임베딩에 미치는 영향: ALiBi는 긴 텍스트에서도 컨텍스트 이해를 향상시킵니다. 이를 통해 Jina-Embeddings-V2는 토큰의 위치와 관계없이 토큰 간의 풍부한 의미적 관계를 포착할 수 있습니다.
양방향 트랜스포머를 위한 ALiBi 적용
양방향 이해는 질의응답, 요약, 의미 검색과 같은 작업에 매우 중요합니다. Jina-Embeddings-V2가 이를 달성하는 방식은 다음과 같습니다:
개념: ALiBi는 원래 디코더 전용 모델을 위해 설계되었습니다. Jina AI는 이를 BERT와 같은 양방향 아키텍처로 확장합니다.
양방향 컨텍스트: Jina-Embeddings-V2는 왼쪽과 오른쪽 컨텍스트를 모두 고려하여 전체 시퀀스에 걸친 의존성을 포착합니다.
임베딩에 미치는 영향: 이 모델은 양방향 컨텍스트 이해가 중요한 작업에서 뛰어난 성능을 보입니다. 예를 들어, 의미 검색은 사용자 쿼리와 문서 콘텐츠를 동시에 분석해야 하므로 양방향 임베딩의 이점을 얻습니다.
BERT를 처음부터 재학습하기
Jina AI는 고급 기법으로 BERT를 재학습하여 JinaBERT를 만들었으며, 이는 Jina-Embeddings-V2의 백본 역할을 합니다:
개념: Jina AI는 whole word masking, RoBERTa recipe, GeGLU activations, aggressive masking을 포함한 다양한 트릭을 적용합니다.
ALiBi 지원: JinaBERT는 ALiBi로 학습되어 동적 컨텍스트 모델링을 보장합니다.
임베딩에 미치는 영향: Jina-Embeddings-V2는 다양한 작업을 처리할 수 있는 강력한 백본의 이점을 얻습니다. 긴 글을 요약하고, 핵심 정보를 추출하며, 컨텍스트 무결성을 유지합니다.
유지된 JinaBERT perplexity는 512 토큰 제한을 초과해도 낮게 유지됩니다. 이는 positional embeddings 제거와 AliBi 적용 덕분입니다. BERT와 JinaBERT를 비교한 새로운 그래프를 살펴보세요:
JinaBERT와 BERT의 추론 시퀀스 길이 대비 perplexity
언어 연결: 이중 언어 임베딩
기존 다국어 임베딩 모델의 한계를 인식한 Jina AI는 이중 언어 임베딩 개발을 시작했습니다. 기존 모델은 영어 학습 데이터에 크게 의존하는 경우가 많습니다. 이들의 목표는 여러 언어와 그 사이의 교차 언어 관계를 처리할 수 있는 모델을 만드는 것입니다.
Jina AI의 이중 언어 임베딩 접근 방식은 일반적인 방식과 다릅니다. Multilingual BERT 및 Multilingual E5와 같은 대부분의 다국어 모델은 학습 데이터 분포에서 상당한 편향을 겪습니다. 예를 들어, 인기 있는 Multilingual E5 모델은 학습 데이터의 91.5%가 영어이며, 중국어는 4.2%, 기타 언어를 모두 합쳐 4.3%에 불과합니다.
사전 학습된 다국어 데이터에서 Multilingual E5와 Jina Embedding v2 비교
반면, Jina AI의 Jina-Embeddings-V2-Based-German 모델은 영어 50%와 독일어 50%로 균형 잡힌 학습 데이터 분포를 특징으로 합니다. 이 교차 언어 데이터는 두 언어 간의 유사성과 관계에 대한 모델의 이해를 향상시키도록 특별히 설계되었습니다.
Jina-Embeddings-V2-Based-German은 다국어 모델보다 크기가 작음에도 불구하고 경쟁 모델을 지속적으로 능가하며, 독일어-독일어, 독일어-영어, 영어-독일어 검색 작업에서 더 높은 점수를 달성합니다.
다양한 임베딩 모델 간 검색 성능 비교
결과는 단일 언어 및 교차 언어 검색 작업 모두에서 Multilingual E5와 Cohere Embed V3 같은 인기 있는 다국어 모델보다 Jina AI의 이중 언어 임베딩이 우수함을 보여줍니다.
Jina-Embeddings-V2로 RAG 애플리케이션을 구축할 때 고려할 사항
Jina-Embeddings-V2를 사용해 Retrieval-Augmented Generation (RAG) 애플리케이션을 개발할 때는 모델이 다양한 길이의 문서를 어떻게 처리하는지, 그리고 관련 정보가 이러한 문서 내에서 어디에 위치하는지를 이해하는 것이 필수적입니다. Bo Wang은 몇 가지 핵심 고려 사항을 강조했습니다:
짧은 문서: 문서가 항상 512 토큰보다 작다면, Jina-Embeddings-V2는 E5나 BGE 같은 다른 평균적인 인코더와 비슷한 성능을 보입니다.
긴 문서 (초반 정보): 문서가 512 토큰보다 길지만 관련 정보가 처음에 있다면, Jina-Embeddings-V2의 성능이 더 나쁠 수 있습니다.
긴 문서 (후반 정보): 문서가 512 토큰보다 길고 관련 정보가 중간이나 끝에 있다면, Jina-Embeddings-V2는 검색 성능을 크게 향상시킵니다.
Milvus Vector Database와 Jina AI 통합
vector databases와 임베딩 모델은 모두 효율적인 정보 검색 시스템과 RAG 애플리케이션을 구축하는 데 필수적입니다. 이러한 구성 요소는 벡터 유사도 검색 및 검색 작업을 수행하기 위해 통합되는 경우가 많습니다.
Milvus는 수십억 규모의 벡터 임베딩을 효율적으로 저장하고 검색하도록 설계된 오픈 소스 벡터 데이터베이스입니다. 최근 Jina 임베딩이 PyMilvus 모델 라이브러리에 통합되어, 추가 임베딩 구성 요소가 필요 없게 됨으로써 RAG 또는 기타 GenAI 애플리케이션 개발을 간소화했습니다.
최근 Milvus Lite라는 Milvus의 경량 버전이 도입되면서 이 과정이 더욱 단순해졌습니다. Milvus Lite는 Docker 또는 Kubernetes에 배포된 정식 버전의 Milvus와 동일한 API를 공유하지만, 서버 설정 없이 한 줄의 pip 명령으로 쉽게 설치할 수 있습니다. 프로토타이핑에 이상적이며, 요구 사항이 커짐에 따라 다양한 Milvus 배포로 원활하게 전환할 수 있습니다.
이 통합에 대해 자세히 알아보려면 다음 리소스를 참조하세요:
Milvus Documentation: Milvus와 Jina 임베딩 통합
앞으로의 전망: Jina-Embeddings-V3
Jina AI 팀은 이미 Jina-Embeddings-V3를 작업 중이며, 이는 훨씬 더 많은 발전을 가져올 것으로 기대됩니다:
속도와 효율성: Jina-Embeddings-V3는 특히 더 긴 시퀀스에서 더 빠르고 메모리 효율적일 것입니다.
다국어 지원: 새 버전은 최적화된 언어 분포와 다국어 데이터의 더 나은 처리를 제공할 것입니다.
실제 문제 해결: Jina-Embeddings-V3는 V2 및 기타 임베딩 모델에 대한 압축 실패 분석을 통해 실제 문제를 해결할 것입니다.
작업별 향상: 다양한 작업을 더 잘 처리하기 위해 신중하게 설계된 작업 지침과 작업 헤드, 그리고 영리한 라우팅을 포함할 것입니다.
청크 및 스키마 인식: 이 모델은 청크 인식 및 스키마 인식 기능을 갖추어, 반정형 데이터와 계층적 임베딩에 대한 이해를 향상할 것입니다.
요약
Jina 임베딩 모델은 포괄적인 데이터 표현에 뛰어난 8192 토큰 길이의 입력 창을 특징으로 하며, 높은 성능을 자랑합니다. 다국어 지원과 OpenAI 같은 주요 플랫폼과의 원활한 통합을 통해 이러한 임베딩은 교차 언어 애플리케이션에 이상적입니다.
임베딩 모델과 벡터 데이터베이스는 효율적인 유사도 검색과 정보 검색에 필수적입니다. Jina 임베딩 모델을 Milvus의 Python SDK인 PyMilvus와 통합하면 RAG 및 다양한 GenAI 애플리케이션 개발이 더욱 효율적이고 간단해집니다.
최근 Bo Wang의 발표에서 그는 최신 벡터 검색 및 RAG 시스템을 위한 Jina 텍스트 임베딩의 생성에 대해 논의했습니다. 또한 방대한 정보를 효과적으로 인코딩하는 임베딩 모델을 훈련하는 방법론과 다양한 비즈니스 요구에 가장 적합한 임베딩 모델을 선택하는 방법에 대한 지침도 공유했습니다.
자세한 내용은 Youtube에서 Bo Wang의 발표 다시보기를 시청하세요.
계속 읽기

Migrating Self-Managed Milvus to Zilliz Cloud for >99% Latency Reduction
Step-by-step guide to migrating 50M vectors from self-managed Milvus to Zilliz Cloud using milvus-backup. Achieve >99% query latency reduction with zero data loss.

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.

Why Not All VectorDBs Are Agent-Ready
Explore why choosing the right vector database is critical for scaling AI agents, and why traditional solutions fall short in production.


