existir RAG o modelo multivetorial ColBERT é usado para modelar o documento, fornecendo um único vetor para cada um dos elementos do documento. token A geração de vetores independentes melhora a precisão da recuperação. No entanto, ela também traz um aumento drástico nos requisitos de armazenamento e suporta apenas o inglês, o que limita seu escopo de aplicação.
Para resolver esses problemas, aprimoramos a arquitetura e o processo de treinamento do ColBERT e, principalmente, fizemos avanços no processamento multilíngue. O Jina-ColBERT-v2 mais recente é compatível com 89 idiomas e apresenta uma opção de dimensão de saída personalizada, que reduz significativamente os requisitos de armazenamento e melhora a eficiência e a precisão da recuperação multilíngue.
Principais destaques da nova versão
-
aprimoramento do desempenhoO ColBERT-v2 original foi aprimorado em 6,51 TP3T no desempenho de pesquisa em inglês em comparação com o ColBERT-v2 original e em 5,41 TP3T em comparação com seu antecessor, o jina-colbert-v1-en. -
Suporte a vários idiomasA nova versão suporta até 89 idiomas, incluindo árabe, chinês, inglês, japonês, russo e outros idiomas, além de linguagens de programação. -
As dimensões de saída podem ser personalizadasA nova versão emprega o Matryoshka Representation Learning (MRL) com vetores de saída de 128, 96 e 64 dimensões, permitindo que o usuário escolha a dimensionalidade adequada de acordo com suas necessidades.
O relatório técnico completo pode ser encontrado no arXiv: https://arxiv.org/abs/2408.16672
Visão geral do desempenho do jina-colbert-v2
Em termos de desempenho de recuperação, o jina-colbert-v2 demonstra uma vantagem significativa sobre a versão anterior, tanto em termos de tarefas de recuperação em inglês quanto de suporte a vários idiomas. As vantagens desse modelo de vários vetores também podem ser totalmente utilizadas com o comprimento de entrada de 8192 tokens herdado do Jina AI. Abaixo está uma comparação com outras versões, onde os principais aprimoramentos podem ser vistos claramente:
jina-colbert-v2 |
jina-colbert-v1-pt |
Original ColBERTv2 | |
---|---|---|---|
Média das tarefas BEIR em inglês | 0.521 | 0.494 | 0.489 |
Suporte a vários idiomas | 89 idiomas | Somente em inglês | Somente em inglês |
dimensão de saída | 128, 96 ou 64 | Fixo 128 | Fixo 128 |
Comprimento máximo da consulta | 32 tokens | 32 tokens | 32 tokens |
Comprimento máximo do documento | 8192 tokens | 8192 tokens | 512 tokens |
Número de parâmetros | 560 milhões | 137 milhões | 110 milhões |
Tamanho do modelo | 1,1 GB | 550 MB | 438 MB |
1. aprimoramento do desempenho
Na tarefa de recuperação em inglês, o jina-colbert-v2 supera a geração anterior do jina-colbert-v1-en e o ColBERT v2 original, aproximando-se do nível do modelo AnswerAI-ColBERT-small, que foi projetado especificamente para o inglês.
Nome do modelo | Pontuação média no teste de referência BEIR em inglês | Suporte a vários idiomas |
---|---|---|
jina-colbert-v2 |
0.521 | Suporte a vários idiomas |
jina-colbert-v1-pt |
0.494 | Somente em inglês |
ColBERT v2.0 | 0.489 | Somente em inglês |
RespostaAI-ColBERT-small | 0.549 | Somente em inglês |
2. suporte multilíngue
O Jina-ColBERT-v2 é o único modelo ColBERT compatível com vários idiomas.O resultado é um vetor de incorporação muito compacto, que é significativamente melhor do que o tradicional. BM25 Métodos de recuperação (em todos os idiomas avaliados pelo MIRACL).
jina-colbert-v2
O corpus de treinamento abrange 89 idiomas e inclui 450 milhões de pares de frases, pares pergunta-resposta e pares consulta-documento semanticamente relacionados e com supervisão fraca. Metade deles está em inglês, e a parte restante inclui 29 idiomas diferentes que não são ingleses, além de 3,0% de dados de linguagem de programação e 4,3% de dados entre idiomas.
Também nos especializamos em Árabe, chinês, francês, alemão, japonês, russo, espanhol e outros idiomas comuns responder cantando linguagem de programação Foi realizado um treinamento adicional, que permitiu que o modelo tivesse um bom desempenho no tratamento de tarefas entre idiomas, introduzindo um corpus de texto bilíngue alinhado.
A figura a seguir mostra os resultados da comparação de desempenho entre o Jina-ColBERT-v2 e o BM25 em 16 idiomas no benchmark MIRACL.
3. aprendizado da representação da boneca russa aninhada
Aprendizado de representação Matryoshka (MRL) é um método de treinamento flexível e eficiente que minimiza a perda de precisão e, ao mesmo tempo, oferece suporte a diferentes dimensões do vetor de saída. Ele é implementado com a introdução de várias camadas lineares na camada oculta do modelo, cada uma processando uma dimensão diferente. Para obter mais detalhes sobre essa técnica, consulte: https://arxiv.org/abs/2205.13147
Por padrão, oO Jina-ColBERT-v2 gera Embedding de 128 dimensões, mas você pode escolher vetores mais curtos, como 96 ou 64 dimensões.. Mesmo que o vetor seja encurtado em 25% ou 50%, seu impacto no desempenho é quase insignificante (a queda é menor que 1,5%). Em outras palavras, não importa o tamanho dos vetores, o modelo mantém um desempenho eficiente e preciso.
A tabela abaixo mostra o desempenho do Jina-ColBERT-v2 nos dez principais resultados (nDGC@10) desses seis benchmarks BEIR. É possível observar que oA diferença de desempenho entre as dimensões 128 e 96 é menor que 11 TP3T, enquanto a diferença entre as dimensões 128 e 64 é menor que 1,51 TP3T.
dimensão de saída | Pontuação média (nDGC@10 para 6 benchmarks) |
---|---|
128 | 0.565 |
96 | 0.558 |
64 | 0.556 |
A figura a seguir mostra o desempenho do Jina-ColBERT-v2 em diferentes dimensões de saída.
A escolha de vetores de saída menores não apenas economiza espaço de armazenamento, mas também melhora a velocidade de computação, especialmente em cenários em que os vetores precisam ser comparados ou as distâncias precisam ser calculadas, como nos sistemas de recuperação de vetores.
De acordo com o Cloud Cost Estimator da Qdrant, o custo de armazenamento de 100 milhões de documentos no AWS usando vetores de 128 dimensões é de US$ 1.319,24 por mês, enquanto que com vetores de 64 dimensões, o custo pode ser reduzido pela metade, para US$ 659,62 por mês. Isso não é apenas um aumento de velocidade, mas também uma redução significativa de custos.
Como começar a usar o Jina ColBERT v2
O Jina ColBERT v2 já está disponível nas plataformas Jina Search Foundation API, AWS Marketplace e Azure. Ele também está disponível sob a licença CC BY-NC-4.0 no site Cara de abraço No código aberto para uso não comercial.
-
AWS Marketplace: https://aws.amazon.com/marketplace/seller-profile?id=seller-stch2ludm6vgy -
Azure: https://azuremarketplace.microsoft.com/en-gb/marketplace/apps?search=Jina -
Hugging Face: https://huggingface.co/jinaai/jina-colbert-v2
via API da Jina Search Foundation
para incorporação
Usar a API de incorporação da Jina para obter a incorporação do jina-colbert-v2 é a maneira mais fácil e direta.
Dois parâmetros principais:
dimensões
Dimensão de saída da incorporação: Indica a dimensão de saída da incorporação; o padrão é 128, mas você também pode escolher 64.
tipo_de_entrada
determina o tipo de entrada.consulta
é limitado a 32 tokens, que serão automaticamente truncados, e o documento
A codificação do documento pode ser processada off-line, de modo que somente a parte da consulta precisa ser codificada no momento da consulta, o que pode aumentar significativamente a velocidade de processamento.
A chave de API da Jina está disponível em jina.ai/embeddings.
curl https://api.jina.ai/v1/multi-vector \\\
-H "Content-Type: application/json" \\\\\\
-H "Authorization: Bearer " \\\\\
-d '{
"model": "jina-colbert-v2", "dimensions": 128, 1.0, 1.0
"dimensions" (dimensões): 128, # ou 64
"input_type": "document", # Observe se o input_type é documento ou consulta.
"embedding_type": "float", "input": [ "float", #
"input": [
"Digite o texto do seu documento aqui.", "input_type": "float", "input": [
"Você pode enviar mais de um texto.", "text_type": "float", "input": [ "Insira o texto do seu documento aqui.
"Cada texto pode ter até 8192 tokens de comprimento."
]}'
Para o Reranker
Para usar a API do Jina Reranker por meio do jina-colbert-v2
Para fazer isso, passe uma consulta e vários documentos e retorne uma pontuação de correspondência classificável no Rerank, construa a seguinte solicitação:
curl https://api.jina.ai/v1/rerank \\\
-H "Content-Type: application/json" \\\\\\
-H "Authorization: Bearer " \\\\\
-d '{
"modelo": "jina-colbert-v2",
"query": "What is the population of Berlin?" (Qual é a população de Berlim?) ,
"top_n": 3,
"documents": [
"A população de Berlim em 2023 aumentou em 0,71 TP3T em comparação com o ano passado.Assim, no final do ano passado, Berlim tinha cerca de 27.300 habitantes a mais do que em 2022.A faixa etária com o maior número de habitantes é a de 30 a 40 anos. Berlim tem cerca de 881.000 residentes estrangeiros de cerca de 170 países, com uma idade média de 42,5 anos." ,
"O Monte Berlim é um vulcão coberto por geleiras na Terra de Marie Byrd, Antártica, a cerca de 100 quilômetros (62 milhas) do Mar de Amundsen. É um pico de cerca de 20 quilômetros (12 milhas) de largura com crateras parasitas e consiste em dois vulcões fundidos: o Vulcão Berlin, cuja cratera tem 2 quilômetros (1,2 milhas) de largura, e o Pico Merrem, que fica a cerca de 3,5 quilômetros (2,2 milhas) de distância, com uma cratera de 2,5 x 1 quilômetro (1,55 milhas x 0,62 milhas) de largura." ,
"Dados populacionais por nacionalidade e cantão para os estados federais em 31 de dezembro de 2023",
"Com uma população de mais de 4,5 milhões, a área metropolitana de Berlim é a área metropolitana mais populosa da Alemanha. Com uma população de aproximadamente 6,2 milhões, a área metropolitana de Berlim-Brandemburgo é a segunda maior área metropolitana da Alemanha, depois da região do Reno-Ruhr, e a sexta maior área metropolitana da União Europeia (por PIB)." ,
"Irving Berlin (anteriormente conhecido como Israel Behring) foi um compositor e escritor de canções estadunidense. Sua música faz parte do The Great American Songbook. Berlin recebeu muitas honrarias, incluindo um Oscar, um Grammy e um Tony Award." ,
"Berlin é uma cidade no Distrito de Planejamento da Capital do estado americano de Connecticut, com uma população de 20.175 habitantes no censo de 2020.", .
"Berlim é a capital e a maior cidade da Alemanha, tanto em tamanho quanto em população. Seus mais de 3,85 milhões de habitantes fazem dela a cidade mais populosa da União Europeia (por população dentro dos limites da cidade)." ,
"Berlin, Berlin" foi uma série de TV produzida para a ARD e transmitida no programa noturno da TV alemã 1 de 2002 a 2005. Os diretores incluem Franziska Meyer-Price, Christoph Schnee, Sven Winterwalt e Titus Selger."
]
}'
Observe também. top_n
que especifica o número de documentos a serem retornados na pesquisa. Se você precisar apenas das correspondências ideais, poderá definir o parâmetro top_n
Defina como 1.
Para obter mais exemplos de código em Python ou em outras linguagens, acesse a página https://jina.ai/embeddings ou selecione no menu suspenso em https://jina.ai/reranker/ jina-colbert-v2
.
Via Stanford ColBERT
Se você tiver usado a biblioteca Stanford ColBERT, agora poderá substituí-la perfeitamente pela versão Jina ColBERT v2. Basta especificar o jinaai/jina-colbert-v2
como uma fonte de modelo.
from colbert.infra import ColBERTConfig
from colbert.modelling.checkpoint import Checkpoint
ckpt = Checkpoint("jinaai/jina-colbert-v2", colbert_config=ColBERTConfig())
docs = ["sua lista de texto"]
query_vectors = ckpt.queryFromText(docs)
Via RAGatouille
O Jina ColBERT v2 também está integrado ao sistema RAGatouille, por meio do RAGPretrainedModel.from_pretrained()
O método é fácil de baixar e usar.
from ragatouille import RAGPretrainedModel
RAG = RAGPretrainedModel.from_pretrained("jinaai/jina-colbert-v2")
docs = ["lista de seus textos"]
RAG.index(docs, index_name="your_index_name")
query = "sua consulta"
resultados = RAG.search(query)
via Qdrant
A partir da versão 1.10, o Qdrant oferece suporte a multivetores e ao modelo de interação tardia, que você pode usar diretamente com o jina-colbert-v2. Independentemente de estar implantando o Qdrant localmente ou hospedado na nuvem, você pode inserir documentos em uma coleção de multivetores simplesmente configurando corretamente o parâmetro multivector_config no cliente.
Criação de uma nova coleção usando a operação MAX_SIM
from qdrant_client import QdrantClient, models
qdrant_client = QdrantClient(
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
),
)
}
)
⚠️ Configuração correta multivector_config
Os parâmetros são a chave para usar o modelo ColBERT no Qdrant.
Inserção de um documento em um conjunto multivetorial
importar solicitações
from qdrant_client import QdrantClient, models
url = 'https://api.jina.ai/v1/multi-vector'
headers = {
'Authorization': 'Bearer '
}
data = {
'input': [
'Insira seu texto aqui', 'input_type'.
'Cada texto pode ter até 8192 tokens'
]
}
response = requests.post(url, headers=headers, json=data)
linhas = response.json()["data"]
qdrant_client = QdrantClient(
url="",
api_key="",
)
para i, linha em enumerate(rows):
qdrant_client.upsert(
collection_name="{collection_name}",
points=[
models.PointStruct(
id=i.
vector=row["embeddings"],
payload={"text": data["input"][i]}
)
]
)
Conjunto de consultas (computação)
from qdrant_client import QdrantClient, models
importar requests
url = 'https://api.jina.ai/v1/multi-vector'
headers = {
'Content-Type': 'application/json', 'Authorisation': 'Bearer '
'Authorization': 'Bearer '
}
dados = {
'model': 'jina-colbert-v2', 'input_type'.
'input_type': 'query', 'embedding_type': 'float', 'query', 'query'
"embedding_type": "float",
"input": [
"Quantas entradas rotuladas o modelo de incorporação da Jina AI suporta?"
]
}
response = requests.post(url, headers=headers, json=data)
vetor = response.json()["data"][0]["embeddings"]
qdrant_client = QdrantClient(
url="",
api_key="",
)
resultados = qdrant_client.query_points(
nome_da_coleção="{nome_da_coleção}",
query=vector, )
)
print(results)
resumos
Com base em seu antecessor, o jina-colbert-v2 abrange 89 idiomas globais e uma ampla seleção de dimensões de saída de incorporação, permitindo que os usuários equilibrem com flexibilidade as necessidades de precisão e eficiência e economizem custos de computação e tempo. Clique em https://jina.ai para experimentá-lo agora e obter 1 milhão de tokens gratuitos.