El primer ColBERT multilingüe del mundo: Jina ColBERT V2 y su tecnología de "muñecas rusas".

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术

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

  1. 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.
  2. 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.
  3. 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-v2jina-colbert-v1-enColBERTv2 original
Media de las tareas BEIR en inglés0.5210.4940.489
Soporte multilingüe89 lenguasSólo en inglésSólo en inglés
dimensión de salida128, 96 o 64Fijo 128Fijo 128
Longitud máxima de la consulta32 fichas32 fichas32 fichas
Longitud máxima del documento8192 fichas8192 fichas512 fichas
Número de parámetros560 millones de euros137 millones de euros110 millones de euros
Tamaño del modelo1,1 GB550 MB438 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 modeloPuntuación media en la prueba de referencia BEIR de inglésSoporte multilingüe
jina-colbert-v20.521Soporte multilingüe
jina-colbert-v1-en0.494Sólo en inglés
ColBERT v2.00.489Sólo en inglés
RespuestaAI-ColBERT-pequeña0.549Sólo en inglés
全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术Rendimiento de Jina ColBERT v2 en el conjunto de datos BEIR 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.

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术Distribución lingüística del conjunto de datos de preaprendizaje

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.

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术

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 salidaPuntuación media (nDGC@10 para 6 puntos de referencia)
1280.565
960.558
640.556

La siguiente figura visualiza el rendimiento de Jina-ColBERT-v2 bajo diferentes dimensiones de salida.

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术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-v2Para 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

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...