Guía de migración de Jina Embeddings v2 a v3

Jina Embeddings v3 Nuestro último modelo vectorial de texto de nivel superior con 570 millones de parámetros logra el mejor SOTA de su clase en tareas de recuperación de textos largos y multilingües.
La v3 no sólo es más potente, sino que también tiene un montón de características nuevas y emocionantes. Si todavía utiliza Jina Embeddings v2, que se lanzó en octubre de 2023, le recomendamos encarecidamente que migre a la v3 lo antes posible.
Empecemos con un breve resumen de los aspectos más destacados de Jina Embeddings v3:
- Soporte para 89 idiomas Superación de la limitación que supone que la v2 sólo pueda tratar unos pocos idiomas bilingües, haciendo realidad el auténtico tratamiento de textos multilingües.
- Adaptador Lora integradoLa v2 es un modelo de incrustación genérico, mientras que la v3 incorpora un adaptador Lora que genera vectores optimizados específicamente para sus tareas de recuperación, clasificación, agrupación y otras, para un mejor rendimiento.
- La búsqueda de texto largo es más precisa :: v3 utilización de 8192 ficha La técnica Late Chunking, que genera vectores de bloques con información contextual más rica, puede mejorar significativamente la precisión de la recuperación de textos largos.
- Las dimensiones de los vectores son flexibles y controlables Las dimensiones vectoriales de : v3 pueden ajustarse con flexibilidad para lograr un equilibrio entre rendimiento y espacio de almacenamiento, evitando los elevados gastos generales de almacenamiento asociados a los vectores de alta dimensión. Esto es posible gracias al aprendizaje de representaciones Matryoshka (MRL).
Enlace al modelo de código abierto: https://huggingface.co/jinaai/jina-embeddings-v3
Modelo de enlace API: https://jina.ai/?sui=apikey
Enlace al modelo de documento: https://arxiv.org/abs/2409.10173
Guía rápida de migración
- v3 es un modelo completamente nuevo, por lo que los vectores e índices de v2 no se pueden reutilizar directamente, y hay que volver a indexar los datos.
- En la mayoría de los escenarios (96%), v3 supera significativamente a v2, mientras que v2 sólo empata ocasionalmente o incluso supera ligeramente a v3 en la tarea de resumen en inglés. Sin embargo, dado el soporte multilingüe y las funciones avanzadas de v3, debería preferirse v3 en la mayoría de los escenarios.
- La API v3 incluye ahora
task
ydimensions
responder cantandolate_chunking
Tres parámetros, cuyo uso exacto se puede encontrar en nuestra entrada del blog.
Ajuste dimensional
- Por defecto, v3 genera un vector de 1024 dimensiones, mientras que v2 sólo tiene 768 dimensiones. Con el aprendizaje de la representación Matryoshka, v3 puede generar teóricamente cualquier dimensión. Los desarrolladores pueden establecer el valor
dimensions
Los parámetros controlan con flexibilidad la dimensionalidad de los vectores de salida para encontrar el mejor equilibrio entre coste de almacenamiento y rendimiento. - Si su proyecto anterior se desarrolló basándose en la API v2, cambie el nombre del modelo directamente a
jina-embeddings-v3
no es posible porque las dimensiones por defecto han cambiado. Si desea mantener la estructura de datos o el tamaño coherente con la v2, puede establecer el parámetrodimensions=768
La distribución de los vectores de v3 y v2 es completamente diferente aunque tengan la misma dimensión. Aunque las dimensiones sean las mismas, los vectores de v3 y v2 tienen distribuciones completamente diferentes en el espacio semántico y, por tanto, no pueden utilizarse directamente de forma intercambiable.
Sustitución de modelos
- El sólido soporte multilingüe de v3 ha sustituido por completo al modelo bilingüe de v2 (v2-base-de, v2-base-es, v2-base-zh).
- Para tareas de codificación pura, jina-embeddings-v2-based-code sigue siendo la mejor opción. Las pruebas muestran que alcanza una puntuación de 0,7753, frente a 0,7537 para los vectores genéricos v3 (sin conjunto de tareas) y 0,7564 para el adaptador LoRA, lo que da a la codificación v2 una ventaja de rendimiento de aproximadamente 2,81 TP3T sobre v3.
Parámetros de la misión
- La API v3 genera vectores genéricos de buena calidad cuando no se especifica el parámetro de tarea, pero se recomienda encarecidamente establecer el parámetro de tarea según el tipo de tarea específica para obtener una mejor representación del vector.
- Para que v3 emule el comportamiento de v2, utilice la función
task="text-matching"
Recomendamos probar diferentes opciones de tareas para encontrar la mejor solución, pero no recomendamos configurar la opcióntext-matching
Como programa universal. - Si su proyecto utiliza v2 para la recuperación de información, se recomienda cambiar a v3 para el tipo de tarea de recuperación (
retrieval.passage
responder cantandoretrieval.query
), se pueden obtener mejores resultados de recuperación.
Otras consideraciones
- Para tipos de tarea totalmente nuevos (que son poco frecuentes), pruebe a establecer el parámetro de tarea en Ninguno como punto de partida.
- Si utilizó la técnica de reescritura de etiquetas en la versión 2 para tareas de clasificación de muestra cero, en la versión 3 sólo tendrá que establecer el parámetro
task="classification"
Se obtienen resultados similares porque v3 ha optimizado la representación vectorial para la tarea de clasificación. - Tanto la v2 como la v3 admiten longitudes de contexto de hasta 8192 fichas, pero la v3 es más eficiente, gracias a la tecnología FlashAttention2, y sienta las bases para la función de puntuación tardía de la v3.

Chunking tardío
- v3 introduce una función de división tardía, que utiliza 8192 tokens para formar un contexto largo y luego lo divide en vectores, de modo que cada trozo pequeño contiene información contextual, lo que hace que la recuperación sea naturalmente más precisa.
late_chunking
Actualmente sólo está disponible en la API, por lo que si estás ejecutando modelos localmente, no podrás utilizar esta función durante un tiempo.- comisión
late_chunking
La longitud del texto de cada solicitud no puede superar los 8192 tokens, porque v3 sólo puede procesar tanto contenido a la vez.
Rendimiento y velocidad
- En términos de velocidad, aunque v3 tiene tres veces más parámetros que v2, la inferencia es más rápida que v2 o al menos igual, debido principalmente a la tecnología FlashAttention2.
- No todas las GPU admiten FlashAttention2. La v3 seguirá funcionando si utilizas una GPU que no la admita, pero puede ser ligeramente más lenta que la v2.
- Al utilizar la API, factores como la latencia de la red, las limitaciones de velocidad y las zonas de disponibilidad también afectan a la latencia, por lo que la latencia de la API no refleja totalmente el rendimiento real del modelo v3.
A diferencia de la v2, Jina Embeddings v3 está licenciada bajo CC BY-NC 4.0. v3 se puede utilizar comercialmente a través de nuestra API, AWS o Azure. la investigación y el uso no comercial no es ningún problema. Para el despliegue comercial local, póngase en contacto con nuestro equipo de ventas para obtener una licencia:
https://jina.ai/contact-sales
Soporte multilingüe
v3 es actualmente el modelo vectorial multilingüe líder del sector,** y ocupa el puesto nº 2 en las listas M****TEB de modelos con menos de 1.000 millones de parámetros. **Es compatible con 89 idiomas, la mayoría de los principales del mundo.
Se trata de chino, inglés, japonés, coreano, alemán, español, francés, árabe, bengalí, danés, neerlandés, finés, georgiano, griego, hindi, indonesio, italiano, letón, noruego, polaco, portugués, rumano, ruso, eslovaco, sueco, tailandés, turco, ucraniano, urdu y vietnamita. Turco, ucraniano, urdu y vietnamita.
Si antes utilizaba los modelos inglés, inglés/alemán, inglés/español o inglés/chino de la v2, ahora sólo tiene que modificar la opción model
parámetros y seleccione el task
puede cambiar fácilmente a la 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)
Representación vectorial de tareas específicas
v2 utiliza una representación vectorial genérica, es decir, todas las tareas comparten el mismo modelo. v3 proporciona representaciones vectoriales especialmente optimizadas para diferentes tareas (por ejemplo, recuperación, clasificación, agrupación, etc.) con el fin de mejorar el rendimiento en escenarios específicos.
Seleccione diferentes task
lo que equivale a decirle al modelo qué características relevantes para esa tarea debe extraer, generando una representación vectorial más adaptada a los requisitos de la tarea.
A continuación se muestra un ejemplo de la base de conocimientos de reparación de Lightsaber, que demuestra cómo migrar el código v2 a v3 y experimentar las mejoras de rendimiento de las representaciones vectoriales de tareas específicas:
# 实际项目中我们会使用更大的数据集,这个只是示例
knowledge_base = [
"为什么我的光剑刀锋在闪烁?刀锋闪烁可能表示电池电量不足或不稳定的水晶。请为电池充电并检查水晶的稳定性。如果闪烁持续,可能需要重新校准或更换水晶。",
"为什么我的刀锋比以前暗淡?刀锋变暗可能意味着电池电量低或电源分配有问题。首先,请为电池充电。如果问题仍然存在,可能需要更换LED。",
"我可以更换我的光剑刀锋颜色吗?许多光剑允许通过更换水晶或使用剑柄上的控制面板更改颜色设置来自定义刀锋颜色。请参阅您的型号手册以获得详细说明。",
"如果我的光剑过热,我该怎么办?过热可能是由于长时间使用导致的。关闭光剑并让其冷却至少10分钟。如果频繁过热,可能表明内部问题,需由技术人员检查。",
"如何为我的光剑充电?通过剑柄附近的端口,将光剑连接到提供的充电线,确保使用官方充电器以避免损坏电池和电子设备。",
"为什么我的光剑发出奇怪的声音?奇怪的声音可能表示音响板或扬声器有问题。尝试关闭光剑并重新开启。如果问题仍然存在,请联系我们的支持团队以更换音响板。"
]
query = "光剑太暗了"
Para la v2, sólo hay una tarea (coincidencia de texto), por lo que sólo necesitamos un bloque de código de ejemplo:
# 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 proporciona representaciones vectoriales optimizadas para tareas específicas, como recuperación, separación, clasificación y correspondencia de textos.
Representación vectorial de la tarea de búsqueda
Utilizamos una sencilla base de conocimientos de reparación de sables láser como ejemplo para demostrar la diferencia entre v2 y v3 cuando se trata de tareas de recuperación de texto.
Para las tareas de recuperación semántica, la v3 introduce la codificación asimétrica utilizando, respectivamente, la retrieval.passage
responder cantando retrieval.query
Codificación de documentos y consultas para mejorar el rendimiento y la precisión de la recuperación.
Codificación de documentos: 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)
Código de consulta: retrieval.query
data = {
"model": "jina-embeddings-v3",
"task": "retrieval.query",
"late_chunking": True,
"input": [query]
}
response = requests.post(url, headers=headers, json=data)
Nota: El código anterior activa la funciónlate_chunking
que mejora la codificación de textos largos, la presentaremos en detalle más adelante.
Comparemos el rendimiento de v2 y v3 para la consulta "los sables láser son demasiado oscuros". v2 devuelve un conjunto de coincidencias menos relevantes basadas en la similitud del coseno, como se muestra a continuación:

En cambio, v3 comprende mejor la intención de la consulta y devuelve resultados más precisos relacionados con "apariencia de la hoja del sable láser", como se muestra a continuación.

v3 no se limita a la recuperación, sino que también proporciona otras representaciones vectoriales específicas para cada tarea:
Representación vectorial de las tareas de separación
v3 separation
Las tareas se optimizan para tareas de separación como la agrupación, la reclasificación, etc., por ejemplo, separando distintos tipos de entidades, lo que resulta útil para organizar y visualizar grandes corpus.
Ejemplo: Distinción entre Star Wars y los personajes de Disney
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)
Representación vectorial de las tareas de clasificación
v3 classification
La tarea está optimizada para tareas de categorización de textos como el análisis de sentimientos y la clasificación de documentos, por ejemplo, la clasificación de textos en comentarios positivos y negativos.
Ejemplo: analizar las tendencias emocionales de las críticas de las películas de Star Wars
data = {
"model": "jina-embeddings-v3",
"task": "classification",
"late_chunking": True,
"input": [
"《星球大战》是一部划时代的杰作,彻底改变了电影业,并永远重新定义了科幻电影!",
"《星球大战》拥有令人惊叹的视觉效果、令人难忘的角色和传奇的叙事,是一部无与伦比的文化现象。",
"《星球大战》是一场过度炒作的灾难,充满了浅薄的角色,毫无有意义的情节!",
}
response = requests.post(url, headers=headers, json=data)
Representación vectorial de la concordancia de texto
v3 text-matching
Centrarse en tareas de similitud semántica, como la similitud de frases o la eliminación de énfasis, por ejemplo, excluyendo frases o párrafos repetidos.
Ejemplo: Identificación de la repetición en las líneas de Star Wars
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)
Chunking tardío: mejora de la codificación de textos largos
v3 introduce el late_chunking
cuando el parámetro late_chunking=True
Cuando el modelo procesa el documento completo y luego lo divide en varios bloques para generar vectores de bloques que contengan información contextual completa; cuando el late_chunking=False
Cuando el modelo procesa cada bloque de forma independiente, los vectores de bloque generados no contienen información contextual entre bloques.
tenga en cuenta
- comisión
late_chunking=True
El número total de tokens por solicitud API no puede exceder 8192, que es la longitud máxima de contexto soportada por v3. late_chunking=False
El número total de tokens no está limitado, pero está sujeto al límite de tarifa de la API de Embeddings.
Para procesar textos largos, active la opción late_chunking
puede mejorar significativamente los resultados de la codificación, ya que preserva la información contextual entre los trozos y hace que la representación vectorial generada sea más completa y precisa.
Utilizamos la transcripción de un chat para evaluar late_chunking
Impacto en la eficacia de la recuperación de textos largos.
history = [
"Sita,你决定好周六生日晚餐要去哪儿了吗?",
"我不确定,对这里的餐厅不太熟悉。",
"我们可以上网看看推荐。",
"那听起来不错,我们就这么办吧!",
"你生日那天想吃什么类型的菜?",
"我特别喜欢墨西哥菜或者意大利菜。",
"这个地方怎么样,Bella Italia?看起来不错。",
"哦,我听说过那个地方!大家都说那儿很好!",
"那我们订张桌子吧?",
"好,我觉得这会是个完美的选择!我们打电话预定吧。"
]
Utilizando la v2 para la consulta "¿Cuáles son algunas buenas recomendaciones de restaurantes?" los resultados obtenidos no son especialmente relevantes.

Con v3 y sin activar la fragmentación tardía, los resultados son igualmente insatisfactorios.

Sin embargo, cuando se utiliza v3 y se habilita late chunking
Cuando el resultado más relevante (una buena recomendación de restaurante) se situaba exactamente en primer lugar.

Resultados de la búsqueda:

De los resultados de la búsqueda se desprende que habilitar late_chunking
Después, v3 es capaz de identificar con mayor precisión los chats que son relevantes para la consulta, clasificando primero los resultados más relevantes.
También muestra que late_chunking<span> </span>
La precisión de la recuperación de textos largos puede mejorarse de forma eficaz y eficiente, especialmente en escenarios que requieren una comprensión profunda de la semántica contextual.
Representación de la eficiencia y el rendimiento del equilibrado mediante vectores anidados rusos
v3 Adoptada dimensions
El parámetro admite un control flexible de la dimensión del vector, puede ajustar la dimensión del vector de salida en función de la demanda real y lograr un equilibrio entre el rendimiento y el espacio de almacenamiento.
Un vector de menor dimensión puede reducir la carga de almacenamiento de las bases de datos vectoriales y mejorar la velocidad de recuperación, pero puede perderse parte de la información, lo que se traduce en una degradación del rendimiento.
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)
problemas comunes
P1: ¿Cuáles son las ventajas de utilizar Late Chunking si ya he troceado el documento antes de vectorizarlo?
A1: La ventaja de la división tardía sobre la división previa es la capacidad de Procesa todo el documento antes de fragmentarlo, conservando así una información contextual más completa. . La fragmentación tardía es importante para procesar documentos complejos o extensos, ya que puede ayudar a ofrecer una respuesta más pertinente durante la recuperación porque el modelo tiene una comprensión holística del documento antes de la fragmentación. Mientras que los bloques anteriores a la segmentación se procesan independientemente de los bloques sin contexto completo.
P2: ¿Por qué la v2 tiene una puntuación más alta que la v3 en la tarea de clasificación por pares? ¿Debo preocuparme?
A2: Las puntuaciones aparentemente más altas de v2 en la tarea de clasificación por pares se deben principalmente a que las puntuaciones medias se calculan de forma diferente. El conjunto de pruebas de v3 contiene más idiomas, por lo que es probable que sus puntuaciones medias sean más bajas que las de v2. De hecho, v3 obtiene resultados tan buenos o mejores que los modelos más avanzados, como multilingual-e5, en la tarea de clasificación por pares en todos los idiomas.
P3: ¿Presenta la v3 mejores resultados en determinadas lenguas compatibles con el modelo bilingüe de la v2?
A3: Comparación del rendimiento de los modelos bilingües v3 y v2 en determinadas lenguas Depende de la lengua específica y del tipo de tarea El modelo bilingüe de la versión 2 está muy optimizado para determinadas lenguas y, por tanto, puede funcionar mejor en algunas tareas específicas. Sin embargo, la v3 está diseñada para admitir una gama más amplia de escenarios multilingües, con una mayor generalización entre idiomas y optimizada para una variedad de tareas posteriores mediante adaptadores LoRA específicos para cada tarea. Como resultado, la v3 suele lograr un mejor rendimiento general en varios idiomas o en tareas más complejas, como la recuperación semántica y la categorización de textos.
Si sólo tiene que trabajar con un idioma concreto compatible con el modelo bilingüe v2 (chino-inglés, inglés-alemán, español-inglés) y su tarea es relativamente sencilla, la v2 sigue siendo una buena opción e incluso puede ofrecer mejores resultados en algunos casos.
Sin embargo, si tiene que trabajar con varios idiomas o si su tarea es más compleja (por ejemplo, si necesita realizar una recuperación semántica o una clasificación de textos), la versión 3, con su gran capacidad de generalización entre idiomas y sus estrategias de optimización basadas en tareas posteriores, es una mejor opción.
P4: ¿Por qué la v2 supera a la v3 en las tareas de resumen y debo preocuparme?
A4: v2 obtiene mejores resultados en la tarea de resumen, principalmente porque la arquitectura de su modelo está optimizada específicamente para tareas como la similitud semántica, que está estrechamente relacionada con la tarea de resumen. v3 se diseñó con el objetivo de proporcionar un soporte de tareas más amplio, especialmente en tareas de recuperación y clasificación, y por lo tanto no está tan bien optimizada como v2 en la tarea de resumen.
Sin embargo, no hay que preocuparse demasiado, ya que la evaluación de la tarea de resumen se basa actualmente en SummEval, una prueba que mide la similitud semántica y no representa totalmente la capacidad global del modelo en la tarea de resumen. Dado que v3 rinde bien en otras tareas críticas como la recuperación, las ligeras diferencias de rendimiento en la tarea de resumen no suelen tener un impacto significativo en las aplicaciones del mundo real.
resúmenes
Jina Embeddings v3 es una importante actualización del modelo de nuestro SOTA, el mejor de su clase para tareas de recuperación de textos largos y multilingües, y viene con una variedad de adaptadores LoRA incorporados que pueden personalizarse para diferentes escenarios de recuperación, agrupación, clasificación y correspondencia, en función de sus necesidades para obtener resultados de vectorización más precisos. Le recomendamos encarecidamente que migre a la versión 3 lo antes posible.
Estas son sólo algunas de nuestras introducciones a Jina Embeddings v3. Esperamos que le resulten útiles. Si tiene alguna pregunta, no dude en dejarnos un comentario.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...