
최신 5억 7천만 개의 파라미터를 가진 최상위 텍스트 벡터 모델인 Jina Embeddings v3는 다국어 및 긴 텍스트 검색 작업에서 현재 동급 최고의 SOTA를 달성합니다.
v3는 더 강력할 뿐만 아니라 새롭고 흥미로운 기능도 많이 추가되었습니다. 2023년 10월에 출시된 Jina Embeddings v2를 아직 사용 중이라면 가능한 한 빨리 v3로 마이그레이션할 것을 강력히 권장합니다.
Jina Embeddings v3의 주요 기능에 대한 간략한 개요부터 살펴보겠습니다:
- 89개 언어 지원 v2가 소수의 이중 언어만 처리할 수 있다는 한계를 극복하고 진정한 다국어 텍스트 처리를 실현합니다.
- 내장형 로라 어댑터v2는 일반적인 임베딩 모델인 반면, v3에는 검색, 분류, 클러스터링 및 기타 작업에 특별히 최적화된 벡터를 생성하여 성능을 향상시키는 Lora 어댑터가 내장되어 있습니다.
- 긴 텍스트 검색이 더 정확합니다. :: 8192의 V3 사용률 토큰 더 풍부한 문맥 정보가 포함된 블록 벡터를 생성하는 후기 청킹 기술은 긴 텍스트 검색의 정확도를 크게 향상시킬 수 있습니다.
- 유연하고 제어 가능한 벡터 치수 v3의 벡터 크기는 고차원 벡터와 관련된 높은 스토리지 오버헤드를 피하면서 성능과 저장 공간 간의 균형을 맞추기 위해 유연하게 조정할 수 있습니다. 이는 마트료시카 표현 학습(MRL)을 통해 가능합니다.
오픈 소스 모델 링크: https://huggingface.co/jinaai/jina-embeddings-v3
모델 API 링크: https://jina.ai/?sui=apikey
모델 페이퍼 링크: https://arxiv.org/abs/2409.10173
빠른 마이그레이션 가이드
- v3는 완전히 새로운 모델이기 때문에 v2의 벡터와 인덱스를 직접 재사용할 수 없으며 데이터를 다시 색인화해야 합니다.
- 대부분의 시나리오(96%)에서 v3가 v2를 크게 앞서는 반면, 영어 요약 작업에서는 v2가 가끔씩만 동등하거나 약간 앞서는 것으로 나타났습니다. 그러나 v3의 다국어 지원 및 고급 기능을 고려할 때 대부분의 시나리오에서 v3를 선호해야 합니다.
- 이제 v3 API에는 다음이 포함됩니다.
task
및dimensions
노래로 응답late_chunking
세 가지 매개변수의 정확한 사용법은 블로그 게시물에서 확인할 수 있습니다.
치수 조정
- v3는 기본적으로 1024차원 벡터를 출력하는 반면, v2는 768차원만 출력합니다. 마트료시카 표현 학습을 통해 v3는 이제 이론적으로 모든 차원을 출력할 수 있습니다. 개발자는
dimensions
파라미터를 통해 출력 벡터의 차원을 유연하게 제어하여 스토리지 비용과 성능 간의 최적의 균형을 찾을 수 있습니다. - 이전 프로젝트가 v2 API를 기반으로 개발되었다면 모델 이름을 다음과 같이 직접 변경하세요.
jina-embeddings-v3
기본 차원이 변경되었으므로 사용할 수 없습니다. 데이터 구조 또는 크기를 V2와 일관되게 유지하려면dimensions=768
차원이 동일하더라도. 차원이 동일하더라도 v3와 v2의 벡터는 의미 공간에서 완전히 다른 분포를 가지므로 직접 상호 교환하여 사용할 수 없습니다.
모델 교체
- v3의 강력한 다국어 지원은 v2의 이중 언어 모델을 완전히 대체했습니다(v2-bASE-de, v2-bASE-ES, v2-BASE-ZH).
- 순수 코딩 작업의 경우 여전히 jina-embeddings-v2 기반 코드가 최선의 선택입니다. 테스트 결과, v3 일반 벡터(작업 세트 없음)의 0.7537점, LoRA 어댑터의 0.7564점에 비해 0.7753점의 높은 점수를 기록하여 v2 인코딩이 v3보다 약 2.81 TP3T의 성능 우위를 보였습니다.
미션 매개 변수
- v3 API는 작업 매개 변수가 지정되지 않은 경우 좋은 품질의 일반 벡터를 생성하지만 더 나은 벡터 표현을 얻으려면 특정 작업 유형에 따라 작업 매개 변수를 설정하는 것이 좋습니다.
- v3가 v2의 동작을 에뮬레이트하도록 하려면
task="text-matching"
최상의 솔루션을 찾기 위해 다양한 작업 옵션을 시도해 보는 것이 좋지만, 다음과 같이text-matching
보편적인 프로그램으로서. - 프로젝트에서 정보 검색에 v2를 사용하는 경우 검색 작업 유형은 v3로 전환하는 것이 좋습니다(
retrieval.passage
노래로 응답retrieval.query
)를 사용하면 더 나은 검색 결과를 얻을 수 있습니다.
기타 고려 사항
- 새로운 작업 유형(드물지만)의 경우 작업 매개 변수를 없음으로 설정하여 시작점으로 삼으세요.
- v2에서 제로 샘플 분류 작업에 라벨 재작성 기법을 사용했다면, v3에서는 그냥
task="classification"
v3가 분류 작업을 위해 벡터 표현을 최적화했기 때문에 비슷한 결과를 얻을 수 있습니다. - v2와 v3 모두 최대 8192토큰의 컨텍스트 길이를 지원하지만 플래시어텐션2 기술 덕분에 v3가 더 효율적이며 v3의 후기 점수 기능의 토대를 마련합니다.

늦은 청킹
- v3는 8192개의 토큰을 사용하여 긴 컨텍스트를 형성한 다음 이를 벡터로 분할하는 후기 분할 기능을 도입하여 각각의 작은 조각에 컨텍스트 정보가 포함되도록 하여 자연스럽게 검색의 정확도를 높였습니다.
late_chunking
현재 API에서만 사용할 수 있으므로 로컬에서 모델을 실행하는 경우 당분간 이 기능을 사용할 수 없습니다.- 사용 시작
late_chunking
v3는 한 번에 많은 콘텐츠만 처리할 수 있으므로 각 요청의 텍스트 길이는 8192토큰을 초과할 수 없습니다.
성능 및 속도
- 속도 측면에서는 v3가 v2보다 3배 더 많은 매개 변수를 가지고 있음에도 불구하고 추론 속도가 v2보다 빠르거나 최소한 동등한데, 이는 주로 FlashAttention2 기술 덕분입니다.
- 지원하지 않는 GPU를 사용하는 경우에도 v3는 계속 실행되지만 v2보다 약간 느려질 수 있습니다.
- API를 사용할 때 네트워크 지연 시간, 속도 제한, 가용 영역 등의 요인도 지연 시간에 영향을 미치므로 API 지연 시간은 v3 모델의 실제 성능을 완전히 반영하지 못합니다.
v2와 달리 Jina Embeddings v3는 CC BY-NC 4.0에 따라 라이센스가 부여됩니다. v3는 API, AWS 또는 Azure를 통해 상업적으로 사용할 수 있으며 연구 및 비상업적 사용은 문제되지 않습니다. 로컬 상업적 배포의 경우 영업팀에 라이선스를 문의하시기 바랍니다:
https://jina.ai/contact-sales
다국어 지원
v3는 현재 업계 최고의 다국어 벡터 모델**이며, 10억 개 미만의 매개 변수가 있는 모델 부문에서 M****TEB 차트에서 2위를 차지하고 있습니다. **전 세계 주요 언어 대부분을 포괄하는 89개 언어를 지원합니다.
중국어, 영어, 일본어, 한국어, 독일어, 스페인어, 프랑스어, 아랍어, 벵골어, 덴마크어, 네덜란드어, 핀란드어, 그루지야어, 그리스어, 힌디어, 인도네시아어, 이탈리아어, 라트비아어, 노르웨이어, 폴란드어, 포르투갈어, 루마니아어, 러시아어, 슬로바키아어, 스웨덴어, 태국어, 터키어, 우크라이나어, 우르두어 및 베트남어 등이 지원됩니다. 터키어, 우크라이나어, 우르두어, 베트남어.
이전에 v2의 영어, 영어/독일어, 영어/스페인어 또는 영어/중국어 모델을 사용 중이었다면 이제 model
매개 변수를 선택하고 적절한 task
유형으로 쉽게 v3로 전환할 수 있습니다.
# v2 英语-德语
data = {
"model": "jina-embeddings-v2-base-de",
"input": [
"The Force will be with you. Always.",
"Die Macht wird mit dir sein. Immer.",
"The ability to destroy a planet is insignificant next to the power of the Force.",
"Die Fähigkeit, einen Planeten zu zerstören, ist nichts im Vergleich zur Macht der Macht."
]
}
# v3 多语言
data = {
"model": "jina-embeddings-v3",
"task": "retrieval.passage",
"input": [
"The Force will be with you. Always.",
"Die Macht wird mit dir sein. Immer.",
"力量与你同在。永远。",
"La Forza sarà con te. Sempre.",
"フォースと共にあらんことを。いつも。"
]
}
response = requests.post(url, headers=headers, json=data)
작업별 벡터 표현
v2는 일반적인 벡터 표현, 즉 모든 작업이 동일한 모델을 공유하는 벡터 표현을 사용합니다. v3는 특정 시나리오에서 성능을 향상시키기 위해 다양한 작업(예: 검색, 분류, 클러스터링 등)에 대해 특별히 최적화된 벡터 표현을 제공합니다.
다른 선택 task
유형을 지정하면 모델에 해당 작업과 관련된 특징을 추출하도록 지시하여 작업 요구 사항에 더 적합한 벡터 표현을 생성하는 것과 같습니다.
다음은 라이트세이버 수리 기술 자료의 예시로, v2 코드를 v3로 마이그레이션하고 작업별 벡터 표현을 통해 성능 향상을 경험하는 방법을 보여줍니다:
# 实际项目中我们会使用更大的数据集,这个只是示例
knowledge_base = [
"为什么我的光剑刀锋在闪烁?刀锋闪烁可能表示电池电量不足或不稳定的水晶。请为电池充电并检查水晶的稳定性。如果闪烁持续,可能需要重新校准或更换水晶。",
"为什么我的刀锋比以前暗淡?刀锋变暗可能意味着电池电量低或电源分配有问题。首先,请为电池充电。如果问题仍然存在,可能需要更换LED。",
"我可以更换我的光剑刀锋颜色吗?许多光剑允许通过更换水晶或使用剑柄上的控制面板更改颜色设置来自定义刀锋颜色。请参阅您的型号手册以获得详细说明。",
"如果我的光剑过热,我该怎么办?过热可能是由于长时间使用导致的。关闭光剑并让其冷却至少10分钟。如果频繁过热,可能表明内部问题,需由技术人员检查。",
"如何为我的光剑充电?通过剑柄附近的端口,将光剑连接到提供的充电线,确保使用官方充电器以避免损坏电池和电子设备。",
"为什么我的光剑发出奇怪的声音?奇怪的声音可能表示音响板或扬声器有问题。尝试关闭光剑并重新开启。如果问题仍然存在,请联系我们的支持团队以更换音响板。"
]
query = "光剑太暗了"
v2의 경우 작업(텍스트 매칭)이 하나만 있으므로 예제 코드 블록이 하나만 필요합니다:
# v2 代码:使用文本匹配任务对知识库和查询进行编码
data = {
"model": "jina-embeddings-v2-base-en",
"normalized": True, # 注意:v3 中不再需要此参数
"input": knowledge_base
}
docs_response = requests.post(url, headers=headers, json=data)
data = {
"model": "jina-embeddings-v2-base-en",
"task": "text-matching",
"input": [query]
}
query_response = requests.post(url, headers=headers, json=data)
v3는 검색, 분리, 분류, 텍스트 매칭 등 특정 작업에 최적화된 벡터 표현을 제공합니다.
검색 작업의 벡터 표현
간단한 광선검 수리 지식창고를 예로 들어 텍스트 검색 작업을 처리할 때 v2와 v3의 차이점을 설명합니다.
시맨틱 검색 작업의 경우, v3는 각각 다음을 사용하여 비대칭 인코딩을 도입합니다. retrieval.passage
노래로 응답 retrieval.query
문서와 쿼리를 코딩하여 검색 성능과 정확도를 개선하세요.
문서 코딩: retrieval.passage
data = {
"model": "jina-embeddings-v3",
"task": "retrieval.passage", # "task" 参数是 v3 中的新功能
"late_chunking": True,
"input": knowledge_base
}
response = requests.post(url, headers=headers, json=data)
쿼리 코드: retrieval.query
data = {
"model": "jina-embeddings-v3",
"task": "retrieval.query",
"late_chunking": True,
"input": [query]
}
response = requests.post(url, headers=headers, json=data)
참고: 위의 코드는late_chunking
기능으로 긴 텍스트의 인코딩을 향상시킬 수 있는데, 나중에 자세히 소개하겠습니다.
"광선검이 너무 어둡다"라는 쿼리에 대해 v2와 v3의 성능을 비교해 보겠습니다. v2는 아래와 같이 코사인 유사도를 기반으로 관련성이 낮은 일치 항목 집합을 반환합니다:

반면, v3는 아래와 같이 쿼리의 의도를 더 잘 이해하고 '광선검 칼날 모양'과 관련된 더 정확한 결과를 반환합니다.

v3는 검색뿐만 아니라 몇 가지 다른 작업별 벡터 표현도 제공합니다:
분리 작업의 벡터 표현
v3 separation
작업은 클러스터링, 순위 재지정 등과 같은 분리 작업에 최적화되어 있어 다양한 유형의 엔티티를 분리하는 등 대규모 코퍼라를 구성하고 시각화하는 데 유용합니다.
예: 스타워즈와 디즈니 캐릭터 구별하기
data = {
"model": "jina-embeddings-v3",
"task": "separation", # 使用 separation 任务
"late_chunking": True,
"input": [
"Darth Vader",
"Luke Skywalker",
"Mickey Mouse",
"Donald Duck"
]
}
response = requests.post(url, headers=headers, json=data)
분류 작업의 벡터 표현
v3 classification
이 작업은 감정 분석 및 문서 분류와 같은 텍스트 분류 작업에 최적화되어 있습니다(예: 텍스트를 긍정 및 부정 댓글로 분류).
예: 스타워즈 영화 리뷰의 감정적 성향 분석하기
data = {
"model": "jina-embeddings-v3",
"task": "classification",
"late_chunking": True,
"input": [
"《星球大战》是一部划时代的杰作,彻底改变了电影业,并永远重新定义了科幻电影!",
"《星球大战》拥有令人惊叹的视觉效果、令人难忘的角色和传奇的叙事,是一部无与伦比的文化现象。",
"《星球大战》是一场过度炒作的灾难,充满了浅薄的角色,毫无有意义的情节!",
}
response = requests.post(url, headers=headers, json=data)
텍스트 매칭의 벡터 표현
v3 text-matching
반복되는 문장이나 단락을 제외하는 등 문장 유사성 또는 강조 해제와 같은 의미적 유사성 작업에 집중하세요.
예: 스타워즈 대사 반복 파악하기
data = {
"model": "jina-embeddings-v3",
"task": "text-matching",
"late_chunking": True,
"input": [
"Luke, I am your father.",
"No, I am your father.",
"Fear leads to anger, anger leads to hate, hate leads to the dark side.",
"Fear leads to anger. Anger leads to hate. Hate leads to suffering."
]
}
response = requests.post(url, headers=headers, json=data)
후기 청킹: 긴 텍스트 인코딩 향상
v3는 late_chunking
매개변수가 late_chunking=True
모델이 전체 문서를 처리한 다음 여러 블록으로 분할하여 완전한 컨텍스트 정보를 포함하는 블록 벡터를 생성하는 경우, 그리고 다음과 같은 경우 late_chunking=False
모델이 각 블록을 독립적으로 처리하는 경우, 생성된 블록 벡터에는 블록 간 컨텍스트 정보가 포함되지 않습니다.
다음 사항에 유의하십시오.
- 사용 시작
late_chunking=True
API 요청당 토큰의 총 개수는 v3에서 지원하는 최대 컨텍스트 길이인 8192를 초과할 수 없습니다. late_chunking=False
토큰의 총 개수는 제한되지 않지만 임베딩 API의 비율 제한이 적용됩니다.
긴 텍스트를 처리하려면 late_chunking
는 청크 전체에 걸쳐 컨텍스트 정보를 보존하고 생성된 벡터 표현을 보다 완전하고 정확하게 만들므로 코딩 결과를 크게 향상시킬 수 있습니다.
채팅 기록을 사용하여 다음을 평가했습니다. late_chunking
긴 텍스트 검색의 효율성에 미치는 영향.
history = [
"Sita,你决定好周六生日晚餐要去哪儿了吗?",
"我不确定,对这里的餐厅不太熟悉。",
"我们可以上网看看推荐。",
"那听起来不错,我们就这么办吧!",
"你生日那天想吃什么类型的菜?",
"我特别喜欢墨西哥菜或者意大利菜。",
"这个地方怎么样,Bella Italia?看起来不错。",
"哦,我听说过那个地方!大家都说那儿很好!",
"那我们订张桌子吧?",
"好,我觉得这会是个完美的选择!我们打电话预定吧。"
]
"좋은 레스토랑 추천은 무엇인가요?"라는 쿼리에 v2를 사용합니다. 를 사용하면 얻은 결과는 특별히 관련성이 없습니다.

v3와 후기 청크가 활성화되지 않은 상태에서도 결과는 똑같이 만족스럽지 않습니다.

그러나 v3를 사용하면서 다음을 활성화하면 late chunking
가장 관련성이 높은 결과(좋은 레스토랑 추천)가 정확히 1위에 랭크된 경우.

검색 결과:

검색 결과를 보면 알 수 있습니다. late_chunking
이후 v3는 검색어와 관련된 채팅을 보다 정확하게 식별하여 가장 관련성이 높은 결과를 우선적으로 표시할 수 있습니다.
또한 다음을 보여줍니다. late_chunking<span> </span>
특히 문맥적 의미에 대한 깊은 이해가 필요한 시나리오에서 긴 텍스트 검색의 정확도를 효과적이고 효율적으로 개선할 수 있습니다.
러시아 중첩 벡터를 사용한 효율과 성능의 균형 표현
v3 채택 dimensions
이 매개변수는 유연한 벡터 크기 제어를 지원하며, 실제 수요에 따라 출력 벡터의 크기를 조정하고 성능과 저장 공간 간의 균형을 맞출 수 있습니다.
벡터 크기가 작을수록 벡터 데이터베이스의 스토리지 오버헤드를 줄이고 검색 속도를 향상시킬 수 있지만, 일부 정보가 손실되어 성능이 저하될 수 있습니다.
data = {
"model": "jina-embeddings-v3",
"task": "text-matching",
"dimensions": 768, # 设置向量维度为 768,默认值为 1024
"input": [
"The Force will be with you. Always.",
"力量与你同在。永远。",
"La Forza sarà con te. Sempre.",
"フォースと共にあらんことを。いつも。"
]
}
response = requests.post(url, headers=headers, json=data)
일반적인 문제
Q1: 벡터화 전에 이미 문서를 청킹한 경우 후기 청킹을 사용하면 어떤 이점이 있나요?
A1: 사전 분할에 비해 후기 분할의 장점은 다음과 같습니다. 청크 처리 전에 전체 문서를 처리하여 보다 완전한 컨텍스트 정보를 유지합니다. . 후기 청킹은 복잡하거나 긴 문서를 처리하는 데 중요하며, 청킹 전에 모델이 문서를 전체적으로 이해하기 때문에 검색 중에 보다 관련성 높은 응답을 제공하는 데 도움이 될 수 있습니다. 반면, 사전 분할 블록은 완전한 컨텍스트 없이 블록과 독립적으로 처리됩니다.
Q2: 쌍별 분류 작업에서 v2가 v3보다 벤치마크 점수가 높은 이유는 무엇인가요? 걱정할 필요가 있나요?
A2: 쌍별 분류 작업에서 v2의 점수가 더 높아 보이는 것은 주로 평균 점수가 다르게 계산되기 때문입니다. v3의 테스트 세트에는 더 많은 언어가 포함되어 있으므로 평균 점수가 v2보다 낮을 수 있습니다. 실제로 v3는 모든 언어에서 쌍별 분류 작업에서 다국어-e5와 같은 최신 모델만큼은 아니더라도 그보다 나은 성능을 발휘합니다.
Q3: v3는 v2 이중 언어 모델에서 지원하는 특정 언어에서 더 나은 성능을 제공하나요?
A3: 특정 언어에 대한 v3 및 v2 이중 언어 모델의 성능 비교 특정 언어 및 작업 유형에 따라 다릅니다. v2의 이중 언어 모델은 특정 언어에 고도로 최적화되어 있으므로 일부 특정 작업에서 더 나은 성능을 발휘할 수 있습니다. 그러나 v3는 더 강력한 언어 간 일반화를 통해 더 광범위한 다국어 시나리오를 지원하도록 설계되었으며 작업별 LoRA 어댑터를 통해 다양한 다운스트림 작업에 최적화되어 있습니다. 결과적으로 v3는 일반적으로 여러 언어 또는 시맨틱 검색 및 텍스트 분류와 같은 보다 복잡한 작업별 시나리오에서 전반적인 성능이 향상됩니다.
v2 이중 언어 모델에서 지원하는 특정 언어(중국어-영어, 영어-독일어, 스페인어-영어) 하나만 처리해야 하고 작업이 비교적 단순한 경우, v2를 선택하는 것이 여전히 좋은 선택이며 경우에 따라 더 나은 성능을 발휘할 수도 있습니다.
그러나 여러 언어를 처리해야 하거나 작업이 더 복잡한 경우(예: 의미 검색 또는 텍스트 분류를 수행해야 하는 경우)에는 강력한 언어 간 일반화 기능과 다운스트림 작업에 기반한 최적화 전략을 갖춘 v3가 더 나은 선택이 될 수 있습니다.
Q4: 요약 작업에서 v2가 v3보다 성능이 떨어지는 이유는 무엇이며 걱정할 필요가 있나요?
A4: v2는 요약 작업에서 더 나은 성능을 보이는데, 이는 모델 아키텍처가 요약 작업과 밀접한 관련이 있는 의미적 유사성과 같은 작업에 특별히 최적화되어 있기 때문입니다. v3는 특히 검색 및 분류 작업에서 더 광범위한 작업 지원을 제공하는 것을 목표로 설계되었으므로 요약 작업에서 v2만큼 최적화되어 있지 않습니다.
그러나 요약 작업의 평가는 현재 의미적 유사성을 측정하는 테스트인 SummEval에 의존하고 있으며 요약 작업에 대한 모델의 전반적인 능력을 완전히 나타내지는 않으므로 너무 걱정할 필요는 없습니다. v3가 검색과 같은 다른 중요한 작업에서 우수한 성능을 보인다는 점을 고려할 때 요약 작업에서 약간의 성능 차이는 일반적으로 실제 애플리케이션에 큰 영향을 미치지 않습니다.
요약
Jina Embeddings v3는 다국어 및 긴 텍스트 검색 작업을 위한 동급 최고의 SOTA의 주요 모델 업그레이드이며, 보다 정확한 벡터화 결과에 대한 요구에 따라 검색, 클러스터링, 분류 및 매칭의 다양한 시나리오에 맞게 사용자 정의할 수 있는 다양한 내장형 LoRA 어댑터가 함께 제공됩니다. 가능한 한 빨리 v3로 마이그레이션할 것을 강력히 권장합니다.
Jina Embeddings v3에 대한 소개는 여기까지입니다. 도움이 되셨기를 바랍니다. 궁금한 점이 있으시면 언제든지 댓글을 남겨 주세요!
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 게시물
댓글 없음...