El primer ColBERT multilingüe del mundo: Jina ColBERT V2 y su tecnología de "muñecas rusas".
existe RAG se utiliza el modelo multivectorial ColBERT para modelar el documento proporcionando un único vector para cada uno de los elementos del documento ficha La generación de vectores independientes mejora la precisión de la recuperación. Sin embargo, también conlleva un aumento drástico de los requisitos de almacenamiento y solo admite el inglés, lo que limita su ámbito de aplicación.
Para hacer frente a estos problemas, hemos mejorado la arquitectura y el proceso de formación de ColBERT, y sobre todo hemos hecho grandes avances en el procesamiento multilingüe. El último Jina-ColBERT-v2 admite 89 idiomas e introduce una opción de dimensión de salida personalizada, que reduce significativamente los requisitos de almacenamiento y mejora la eficiencia y precisión de la recuperación multilingüe.
Principales novedades de la nueva versión
mejora del rendimientomejora de 6,51 TP3T en el rendimiento de búsqueda en inglés en comparación con el ColBERT-v2 original, y de 5,41 TP3T en comparación con su predecesor, jina-colbert-v1-es. Soporte multilingüe: La nueva versión admite hasta 89 idiomas, incluidos el árabe, el chino, el inglés, el japonés y el ruso, entre otros, así como lenguajes de programación. Dimensiones de salida personalizablesLa nueva versión utiliza Matryoshka Representation Learning (MRL) y ofrece vectores de salida de 128, 96 y 64 dimensiones, lo que permite al usuario elegir la dimensionalidad adecuada a sus necesidades.
El informe técnico completo puede consultarse en arXiv: https://arxiv.org/abs/2408.16672
jina-colbert-v2 rendimiento de un vistazo
En términos de rendimiento de recuperación, jina-colbert-v2 demuestra una ventaja significativa sobre la versión anterior, tanto en lo que respecta a las tareas de recuperación en inglés como al soporte multilingüe. Las ventajas de este modelo multivectorial también pueden aprovecharse plenamente con la longitud de entrada de 8192 tokens heredada de Jina AI. A continuación se muestra una comparación con otras versiones, en la que pueden apreciarse claramente las mejoras fundamentales:
jina-colbert-v2 | jina-colbert-v1-en | ColBERTv2 original | |
---|---|---|---|
Media de las tareas BEIR en inglés | 0.521 | 0.494 | 0.489 |
Soporte multilingüe | 89 lenguas | Sólo en inglés | Sólo en inglés |
dimensión de salida | 128, 96 o 64 | Fijo 128 | Fijo 128 |
Longitud máxima de la consulta | 32 fichas | 32 fichas | 32 fichas |
Longitud máxima del documento | 8192 fichas | 8192 fichas | 512 fichas |
Número de parámetros | 560 millones de euros | 137 millones de euros | 110 millones de euros |
Tamaño del modelo | 1,1 GB | 550 MB | 438 MB |
1. Mejora del rendimiento
En la tarea de recuperación del inglés, jina-colbert-v2 supera a la generación anterior de jina-colbert-v1-es y al ColBERT v2 original, acercándose al nivel del modelo AnswerAI-ColBERT-small, diseñado específicamente para el inglés.
Nombre del modelo | Puntuación media en la prueba de referencia BEIR de inglés | Soporte multilingüe |
---|---|---|
jina-colbert-v2 | 0.521 | Soporte multilingüe |
jina-colbert-v1-en | 0.494 | Sólo en inglés |
ColBERT v2.0 | 0.489 | Sólo en inglés |
RespuestaAI-ColBERT-pequeña | 0.549 | Sólo en inglés |

2. Soporte multilingüe
Jina-ColBERT-v2 es el único modelo ColBERT que admite varios idiomas.El resultado es un vector de incrustación muy compacto, significativamente mejor que el tradicional. BM25 Métodos de recuperación (en todas las lenguas evaluadas por MIRACL).
jina-colbert-v2
El corpus de entrenamiento abarca 89 idiomas e incluye 450 millones de pares de frases semánticamente relacionadas, pares pregunta-respuesta y pares consulta-documento débilmente supervisados. La mitad de ellos están en inglés, y el resto incluye 29 lenguas distintas del inglés, además de 3,0% de datos de lenguajes de programación y 4,3% de datos interlingüísticos.
También nos hemos especializado en Alemán, árabe, chino, español, francés, japonés, ruso y otras lenguas mayoritarias. responder cantando lenguaje de programación Se llevó a cabo un entrenamiento adicional que permitió al modelo obtener buenos resultados en tareas interlingüísticas mediante la introducción de un corpus de textos bilingües alineados.

La siguiente figura muestra los resultados de la comparación de rendimiento entre Jina-ColBERT-v2 y BM25 en 16 idiomas en el benchmark MIRACL.
3. Aprendizaje de la representación de la muñeca rusa
Aprendizaje de representaciones matrioskas (MRL) es un método de entrenamiento flexible y eficaz que minimiza la pérdida de precisión a la vez que admite diferentes dimensiones del vector de salida. Se aplica introduciendo múltiples capas lineales en la capa oculta del modelo, cada una de las cuales procesa una dimensión diferente. Para más detalles sobre esta técnica, véase: https://arxiv.org/abs/2205.13147
Por defecto, elJina-ColBERT-v2 genera incrustaciones de 128 dimensiones, pero puede elegir vectores más cortos, como de 96 o 64 dimensiones.. Incluso si el vector se acorta 25% o 50%, su impacto en el rendimiento es casi insignificante (la caída es inferior a 1,5%). En otras palabras, no importa lo largos que deban ser los vectores, el modelo mantiene un rendimiento eficiente y preciso.
La siguiente tabla muestra el rendimiento de Jina-ColBERT-v2 en los diez primeros resultados (nDGC@10) de estos seis benchmarks BEIR. Se observa que elLa diferencia de rendimiento entre 128 y 96 dimensiones es inferior a 11 TP3T, mientras que la diferencia entre 128 y 64 dimensiones es inferior a 1,51 TP3T.
dimensión de salida | Puntuación media (nDGC@10 para 6 puntos de referencia) |
---|---|
128 | 0.565 |
96 | 0.558 |
64 | 0.556 |
La siguiente figura visualiza el rendimiento de Jina-ColBERT-v2 bajo diferentes dimensiones de salida.
Elegir vectores de salida más pequeños no sólo ahorra espacio de almacenamiento, sino que también mejora la velocidad de cálculo, especialmente en escenarios en los que es necesario comparar vectores o calcular distancias, como los sistemas de recuperación de vectores.
Según el Cloud Cost Estimator de Qdrant, el coste de almacenar 100 millones de documentos en AWS utilizando vectores de 128 dimensiones es de 1.319,24 dólares al mes, mientras que con vectores de 64 dimensiones, el coste puede reducirse a la mitad, hasta 659,62 dólares al mes. Esto no solo supone un aumento de la velocidad, sino también una reducción significativa de los costes.
Cómo empezar a utilizar Jina ColBERT v2
Jina ColBERT v2 ya está disponible en las plataformas Jina Search Foundation API, AWS Marketplace y Azure. También está disponible bajo licencia CC BY-NC-4.0 en la página web de Cara de abrazo Sobre el código abierto para uso no comercial.
AWS Marketplace: https://aws.amazon.com/marketplace/seller-profile?id=seller-stch2ludm6vgy Azure: https://azuremarketplace.microsoft.com/en-gb/marketplace/apps?search=Jina Cara de abrazo: https://huggingface.co/jinaai/jina-colbert-v2
a través de la API de la Fundación Jina Search
para la incrustación
Utilizar la API de incrustación de Jina para obtener la incrustación de jina-colbert-v2 es la forma más fácil y directa.
Dos parámetros clave:
dimensions
: Indica la dimensión de salida de la incrustación, por defecto es 128, también puede elegir 64.
input_type
: determina el tipo de entrada.query
está limitado a 32 tokens, que se truncarán automáticamente, y el campo document
La codificación del documento puede procesarse fuera de línea, de modo que sólo sea necesario codificar la parte de la consulta en el momento de realizarla, lo que puede aumentar significativamente la velocidad de procesamiento.
La clave API de Jina está disponible en jina.ai/embeddings.
curl https://api.jina.ai/v1/multi-vector \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer <YOUR JINA API KEY>" \\
-d '{
"model": "jina-colbert-v2",
"dimensions": 128, # 或 64
"input_type": "document", # 这里需要注意input_type 是 document 还是 query
"embedding_type": "float",
"input": [
"在此输入你的文档文本",
"你可以发送多个文本",
"每个文本最长可达 8192 个标记"
]}'
Para Reranker
Para utilizar la API de Jina Reranker a través de la aplicación jina-colbert-v2
Para ello, pase una consulta y varios documentos, y devuelva una puntuación de coincidencia Rerankable, construya la siguiente petición:
curl https://api.jina.ai/v1/rerank \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer <YOUR JINA API KEY>" \\
-d '{
"model": "jina-colbert-v2",
"query": "柏林的人口是多少?",
"top_n": 3,
"documents": [
"2023年柏林的人口比去年增长了0.7%。因此,到去年年底,柏林的居民人数比2022年增加了约27300人。30岁到40岁的人群是数量最多的年龄组。柏林拥有约88.1万外国居民,来自约170个国家,平均年龄为42.5岁。",
"柏林山是南极洲玛丽·伯德地的一个冰川覆盖的火山,距离阿蒙森海约100公里(62英里)。它是一个宽约20公里(12英里)的山峰,有寄生火山口,由两座合并的火山组成:柏林火山,其火山口宽2公里(1.2英里),以及距离柏林火山约3.5公里(2.2英里)的Merrem峰,火山口宽2.5×1公里(1.55英里×0.62英里)。",
"截至2023年12月31日,各联邦州按国籍和州统计的人口数据",
"柏林的都市区人口超过450万,是德国人口最多的都市区。柏林-勃兰登堡首都地区约有620万人口,是德国第二大都市区,仅次于莱茵-鲁尔区,并且是欧盟第六大都市区(按GDP计算)。",
"欧文·柏林(原名以色列·贝林)是一位美国作曲家和词曲作者。他的音乐是《伟大的美国歌本》的一部分。柏林获得了许多荣誉,包括奥斯卡奖、格莱美奖和托尼奖。",
"柏林是美国康涅狄格州首都规划区的一个城镇。2020年人口普查时人口为20,175。",
"柏林是德国的首都和最大城市,无论是面积还是人口。其超过385万居民使其成为欧盟人口最多的城市(按城市限界内人口计算)。",
"《柏林,柏林》是一部为ARD制作的电视剧,于2002年至2005年在德国第一电视台的晚间节目中播出。导演包括弗朗茨斯卡·迈耶·普莱斯、克里斯托夫·施内、斯文·温特瓦尔特和蒂图斯·塞尔格。"
]
}'
Tenga en cuenta también. top_n
que especifica el número de documentos que se devolverán en la búsqueda. Si sólo necesita coincidencias óptimas, puede establecer el parámetro top_n
Poner a 1.
Para ver más ejemplos de código en Python u otros lenguajes, visite la página https://jina.ai/embeddings, o seleccione en el menú desplegable https://jina.ai/reranker/. jina-colbert-v2
.
A través de Stanford ColBERT
Si ha utilizado la biblioteca Stanford ColBERT, ahora puede sustituirla sin problemas por la versión Jina ColBERT v2. Sólo tiene que especificar el jinaai/jina-colbert-v2
como fuente del modelo.
from colbert.infra import ColBERTConfig
from colbert.modeling.checkpoint import Checkpoint
ckpt = Checkpoint("jinaai/jina-colbert-v2", colbert_config=ColBERTConfig())
docs = ["你的文本列表"]
query_vectors = ckpt.queryFromText(docs)
Vía RAGatouille
Jina ColBERT v2 también está integrado en el sistema RAGatouille, a través de la aplicación RAGPretrainedModel.from_pretrained()
El método es fácil de descargar y utilizar.
from ragatouille import RAGPretrainedModel
RAG = RAGPretrainedModel.from_pretrained("jinaai/jina-colbert-v2")
docs = ["你的文本列表"]
RAG.index(docs, index_name="your_index_name")
query = "你的查询"
results = RAG.search(query)
vía Qdrant
A partir de la versión 1.10 de Qdrant, Qdrant soporta multivectores y el modelo de interacción tardía, que puedes utilizar directamente con jina-colbert-v2. Tanto si estás desplegando Qdrant localmente o alojado en la nube, puedes insertar documentos en una colección multivector simplemente configurando correctamente el parámetro multivector_config en el cliente.
Creación de una nueva colección mediante la operación MAX_SIM
from qdrant_client import QdrantClient, models
qdrant_client = QdrantClient(
url="<YOUR_ENDPOINT>",
api_key="<YOUR_API_KEY>",
)
qdrant_client.create_collection(
collection_name="{collection_name}",
vectors_config={
"colbert": models.VectorParams(
size=128,
distance=models.Distance.COSINE,
multivector_config=models.MultiVectorConfig(
comparator=models.MultiVectorComparator.MAX_SIM
),
)
}
)
⚠️ Ajuste correcto multivector_config
Los parámetros son la clave para utilizar el modelo ColBERT en Qdrant.
Insertar un documento en un conjunto multivectorial
import requests
from qdrant_client import QdrantClient, models
url = 'https://api.jina.ai/v1/multi-vector'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <YOUR BEARER>'
}
data = {
'model': 'jina-colbert-v2',
'input_type': 'query',
'embedding_type': 'float',
'input': [
'在此输入你的文本',
'你可以发送多个文本',
'每个文本最长可达 8192 个标记'
]
}
response = requests.post(url, headers=headers, json=data)
rows = response.json()["data"]
qdrant_client = QdrantClient(
url="<YOUR_ENDPOINT>",
api_key="<YOUR API_KEY>",
)
for i, row in enumerate(rows):
qdrant_client.upsert(
collection_name="{collection_name}",
points=[
models.PointStruct(
id=i,
vector=row["embeddings"],
payload={"text": data["input"][i]}
)
],
)
(informática) conjunto de consultas
from qdrant_client import QdrantClient, models
import requests
url = 'https://api.jina.ai/v1/multi-vector'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <YOUR BEARER>'
}
data = {
'model': 'jina-colbert-v2',
"input_type": "query",
"embedding_type": "float",
"input": [
"Jina AI 的Embedding模型支持多少个标记的输入?"
]
}
response = requests.post(url, headers=headers, json=data)
vector = response.json()["data"][0]["embeddings"]
qdrant_client = QdrantClient(
url="<YOUR_ENDPOINT>",
api_key="<YOUR API_KEY>",
)
results = qdrant_client.query_points(
collection_name="{collection_name}",
query=vector,
)
print(results)
resúmenes
Basado en su predecesor, jina-colbert-v2 cubre 89 idiomas globales y una amplia selección de dimensiones de salida de incrustación, lo que permite a los usuarios equilibrar con flexibilidad las necesidades de precisión y eficacia, y ahorrar costes de cálculo y tiempo. Haga clic en https://jina.ai para probarlo ahora y obtener 1 millón de fichas gratis.
© 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...