notícias

Por que o modelo de interação atrasada é padrão para a próxima geração de RAG?

2024-08-05

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



A coluna AIxiv é uma coluna onde a Machine Heart publica conteúdo acadêmico e técnico. Nos últimos anos, a coluna Heart of the Machine AIxiv recebeu mais de 2.000 relatórios, abrangendo os principais laboratórios das principais universidades e empresas de todo o mundo, promovendo efetivamente o intercâmbio e a divulgação acadêmica. Se você tem um trabalho excelente que deseja compartilhar, sinta-se à vontade para contribuir ou entre em contato conosco para reportar. E-mail de envio: [email protected]; [email protected];

Zhang Yingfeng: Cofundador da Infra, com muitos anos de experiência em pesquisa, IA e desenvolvimento de infraestrutura de infra-estrutura, ele está atualmente trabalhando na construção da próxima geração de produtos principais RAG.

No desenvolvimento do sistema RAG, um bom modelo Reranker é um elo indispensável e é sempre utilizado em diversas avaliações. Isso ocorre porque as consultas representadas pela pesquisa vetorial enfrentarão o problema de baixa taxa de acerto, portanto, é necessário um modelo Reranker avançado para remediar. isso, formando assim uma arquitetura de classificação em dois estágios usando a pesquisa vetorial como triagem grosseira e o modelo Reranker como classificação fina.

Atualmente existem dois tipos principais de arquiteturas para modelos de classificação:

1. Codificador duplo. Tomando o modelo BERT como exemplo, ele codifica consultas e documentos separadamente e, finalmente, passa por uma camada Pooling para que a saída contenha apenas um vetor. Na etapa de consulta Ranking, basta calcular a similaridade de dois vetores, conforme mostra a figura abaixo. Codificadores duplos podem ser usados ​​​​para os estágios de classificação e reclassificação, e a pesquisa vetorial é, na verdade, esse modelo de classificação. Como o codificador duplo codifica a consulta e o documento separadamente, ele não pode capturar o complexo relacionamento interativo entre a consulta e os tokens do documento, o que causará muita perda semântica, no entanto, uma vez que apenas a pesquisa vetorial é necessária para completar a classificação e pontuação. cálculo, a eficiência de execução é melhorada muito.



2. Codificador cruzado. Cross-Encoder usa um único modelo de codificador para codificar consultas e documentos simultaneamente. Ele pode capturar a interação complexa entre consultas e documentos, para fornecer resultados de classificação de pesquisa mais precisos. O Cross-Encoder não gera o vetor correspondente ao token da consulta e do documento, mas adiciona um classificador para gerar diretamente a pontuação de similaridade da consulta e do documento. Sua desvantagem é que devido à necessidade de codificar conjuntamente cada documento e consulta no momento da consulta, o que torna a classificação muito lenta, o Cross-Encoder só pode ser utilizado para reordenar os resultados finais. Por exemplo, reordenar o Top 10 dos resultados da triagem preliminar ainda leva alguns segundos para ser concluído.



Desde este ano, outro tipo de trabalho representado pelo ColBERT [Referência 1] atraiu ampla atenção na comunidade de desenvolvimento RAG Conforme mostrado na figura abaixo, possui algumas características que são significativamente diferentes dos dois tipos de modelos de classificação acima:

Uma delas é que, comparado ao Cross Encoder, o ColBERT ainda usa uma estratégia de codificador duplo para codificar consultas e documentos usando codificadores independentes. Portanto, o token de consulta e o token do documento não afetam um ao outro durante a codificação. Ele pode ser processado offline e apenas a consulta é codificada durante a consulta, portanto a velocidade de processamento é muito maior que o Cross Encoder;

A segunda é que, comparado ao codificador duplo, o ColBERT gera vários vetores em vez de um único vetor, que é obtido diretamente da última camada de saída do Transformador, enquanto o codificador duplo converte vários vetores em um vetor por meio de uma saída da camada Pooling. perdendo assim alguma semântica.

No cálculo de classificação, ColBERT introduz uma função de similaridade de cálculo interativo atrasado e a chama de similaridade máxima (MaxSim). O método de cálculo é o seguinte: para cada vetor de token de consulta, a similaridade é calculada com os vetores correspondentes a todos os tokens do documento. rastreie a pontuação máxima para cada token de consulta. A pontuação total da consulta e do documento é a soma dessas pontuações máximas de cosseno. Por exemplo, para uma consulta com 32 vetores de token (o comprimento máximo da consulta é 32) e um documento com 128 tokens, é necessário realizar 32*128 operações de similaridade, conforme mostrado na figura abaixo.

Então, em comparação, Cross Encoder pode ser chamadoModelo de interação inicial, e o trabalho representado por ColBERT pode ser chamadoModelo de interação tardia.



A figura a seguir compara os modelos de classificação acima em termos de desempenho e qualidade de classificação. Como o modelo de interação atrasada satisfaz a capacidade de capturar as interações complexas entre consultas e documentos durante o processo de classificação e também evita a sobrecarga de codificação de tokens de documentos, ele pode não apenas garantir bons efeitos de classificação, mas também obter um desempenho de classificação mais rápido. na mesma escala de dados, a eficiência do ColBERT pode ser mais de 100 vezes maior que a do Cross Encoder. Portanto, o modelo de interação atrasada é um modelo de classificação muito promissor. Uma ideia natural é:O modelo de interação atrasada pode ser usado diretamente no RAG para substituir a arquitetura de classificação em dois estágios de pesquisa vetorial + classificação fina?



Para tanto, precisamos considerar algumas questões da engenharia ColBERT:

1. A função de similaridade interativa atrasada MaxSim do ColBERT tem eficiência computacional muito maior do que o Cross Encoder, mas em comparação com a pesquisa vetorial comum, a sobrecarga computacional ainda é muito alta: porque a similaridade entre a consulta e o documento é um cálculo multivetorial, o MaxSim's The a sobrecarga é M * N vezes maior que o cálculo de similaridade vetorial comum (M é o número de tokens na consulta, N é o número de tokens no documento). Em resposta a isso, o autor do ColBERT lançou o ColBERT v2 em 2021 [Referência 2], que melhorou a qualidade do Embedding gerado por meio de Cross Encoder e destilação de modelo, e usou tecnologia de compressão para quantizar o vetor de documento gerado, melhorando assim o cálculo de Desempenho MaxSim. O Projeto RAGatouille [Referência 3] baseado na embalagem ColBERT v2 torna-se uma solução para classificação de RAG de alta qualidade. No entanto, ColBERT v2 é apenas uma biblioteca de algoritmos e ainda é difícil usá-la de ponta a ponta em sistemas RAG de nível empresarial.

2. Como ColBERT é um modelo pré-treinado e os dados de treinamento vêm de consultas de mecanismos de pesquisa e resultados retornados, esses dados de texto não são grandes. Por exemplo, o número de tokens de consulta é 32 e o número de tokens de documento é 128. , que são limites de comprimento típicos. Portanto, quando o ColBERT é usado para dados reais, o comprimento que excede o limite será truncado, o que não é amigável para recuperação de documentos longos.

Com base nos problemas acima, o banco de dados nativo de IA de código aberto Infinity fornece o tipo de dados Tensor na versão mais recente e fornece nativamente a solução ColBERT ponta a ponta. Quando o Tensor é usado como um tipo de dados, vários vetores gerados pela codificação ColBERT podem ser armazenados diretamente em um Tensor, de modo que a semelhança entre os Tensores pode derivar diretamente a pontuação MaxSim. Em resposta ao problema da grande quantidade de cálculos do MaxSim, a Infinity deu duas soluções para otimizar: uma é a quantização binária, que pode tornar o espaço do Tensor original apenas 1/32 do tamanho original, mas não altera a ordem relativa do resultado dos cálculos MaxSim. Esta solução é utilizada principalmente para Reranker, pois é necessário extrair o Tensor correspondente com base nos resultados da etapa anterior de triagem grosseira. O outro é o Tensor Index. ColBERTv2 é na verdade a implementação do Tensor Index lançada pelo autor do ColBERT Infinity usa EMVB [Referência 4], que pode ser considerada uma melhoria do ColBERT v2, principalmente por meio de tecnologia de quantificação e pré-filtragem, e SIMD. são introduzidas instruções sobre as principais operações para acelerar a implementação. O Índice Tensor só pode ser usado para servir o Ranker em vez do Reranker. Além disso, para textos longos que excedem o limite de Token, o Infinity introduz o tipo Tensor Array:



Um documento que ultrapasse o limite do ColBERT será dividido em vários parágrafos. Após codificação e geração de Tensores respectivamente, eles serão salvos na mesma linha do documento original. No cálculo do MaxSim, a consulta e esses parágrafos são calculados separadamente, e então o valor máximo é considerado a pontuação de todo o documento. Como mostrado abaixo:



Portanto, usando o Infinity, um modelo de interação atrasada pode ser introduzido ponta a ponta para atender RAG com alta qualidade. Então, o ColBERT deve ser usado como Ranker ou Reranker? Abaixo usamos o Infinity para realizar avaliações em conjuntos de dados reais. Como a versão mais recente do Infinity implementa a solução de pesquisa híbrida mais abrangente da história, os métodos de recall incluem pesquisa vetorial, pesquisa de texto completo, pesquisa vetorial esparsa, o Tensor mencionado acima e qualquer combinação desses métodos, e fornece uma variedade de métodos Reranker ., como RRF e ColBERT Reranker, por isso incluímos várias combinações de pesquisa híbrida e Reranker na revisão.

Usamos o conjunto de dados MLDR para avaliação. MLDR é um conjunto de benchmark usado pelo MTEB [Referência 5] para avaliar a qualidade dos modelos de incorporação. MLDR é um dos conjuntos de dados, chamado Multi Long Document Retrieval e contém um total de 200.000 dados de texto longo. A avaliação usa BGE-M3 [Referência 6] como modelo de incorporação, Jina-ColBERT [Referência 7] para gerar o Tensor, e o script de avaliação também é colocado no armazém Infinity [Referência 8].

Avaliação 1: O ColBERT é eficaz como reclassificador? Use BGE-M3 para gerar vetores densos e vetores esparsos a partir de 200.000 dados MLDR e insira-os no banco de dados Infinity. O banco de dados contém 4 colunas, que armazenam respectivamente texto original, vetores, vetores esparsos e tensores e constroem o texto completo correspondente. índices e vetores respectivamente. Índice, índice de vetor esparso. A avaliação inclui todas as combinações de recordação, incluindo recordação unidirecional, recordação bidirecional e recordação tripartida, como segue:



O índice de avaliação adota nDCG@10. Outros parâmetros: Ao usar o RRF Reranker, o Top N = 1000 retornado pela triagem grosseira, o número total de consultas é 800 e o comprimento médio da consulta é de cerca de 10 tokens.



Como pode ser visto na figura, todas as soluções de recall melhoraram significativamente os resultados após o uso do ColBERT Reranker. Como um modelo de interação atrasada, o ColBERT pode fornecer qualidade de classificação comparável àquelas que estão no topo das classificações Reranker do MTEB, mas o desempenho é 100 vezes maior, portanto a reclassificação pode ser realizada em uma escala maior. Os resultados mostrados na figura são para o Top 100 Reranker, e o Top 1000 é usado para reordenar o ColBERT. Os valores não mudam significativamente e o desempenho cai significativamente, por isso não é recomendado. Tradicionalmente, ao usar um Reranker externo baseado em Cross Encoder, haverá um atraso de segundo nível no Top 10. No entanto, o Infinity implementa o Reranker ColBERT de alto desempenho internamente. Mesmo que o Top 100 ou mesmo o Top 1000 sejam reordenados, a experiência do usuário não será afetada. No entanto, o escopo do recall é bastante aumentado, de modo que o efeito da classificação final pode ser significativamente melhorado. Além disso, este cálculo do ColBERT Reranker só precisa ser executado em uma arquitetura de CPU pura, o que também reduz bastante o custo de implantação.

Avaliação 2: A comparação é baseada no ColBERT como Ranker e não como Reranker. Portanto, é necessário construir um Índice Tensor para os dados da coluna Tensor. Ao mesmo tempo, para avaliar a perda de precisão introduzida pelo Índice Tensor, também foi realizada uma busca de força bruta.



Pode-se observar que em comparação ao Reranker, mesmo usando a busca por força bruta sem perda de precisão, não há melhora significativa, e a qualidade da classificação baseada no Tensor Index é ainda menor do que usando o Reranker. No entanto, o tempo de consulta como Ranker é muito mais lento: o conjunto de dados MLDR contém 200.000 dados de documentos, o que equivale a cerca de 2 GB. Depois de usar Jina-ColBERT para convertê-los em dados Tensor, chega a 320 G. Isso ocorre porque o. O tipo de dados Tensor é um documento. O vetor correspondente a cada Token do documento deve ser salvo. A dimensão do modelo ColBERT é de 128 dimensões, portanto o volume de dados padrão será expandido em 2 ordens de magnitude. , levará em média 7 segundos para consultar tantos dados. Retorna uma consulta, mas não obtém resultados melhores.

Portanto, é óbvio que ColBERT é muito mais lucrativo como Reranker do que como Ranker. A melhor solução de recuperação RAG atual é adicionar o ColBERT Reranker com base na pesquisa híbrida de 3 vias (pesquisa de texto completo + vetor + vetor esparso). Alguns parceiros podem perguntar, para usar o ColBERT Reranker, é necessário adicionar uma coluna Tensor separada, e a coluna se expandirá em 2 ordens de magnitude em comparação com o conjunto de dados original. Em primeiro lugar: o Infinity fornece um método de quantização binária para o Tensor. Como reclassificador, ele não afeta muito os resultados da classificação, mas pode tornar os dados finais apenas 1/32 do tamanho original do Tensor. Em segundo lugar, mesmo assim, algumas pessoas pensarão que esta sobrecarga é demasiado elevada. No entanto, do ponto de vista do usuário, ainda vale a pena usar mais armazenamento em troca de maior qualidade de classificação e custos mais baratos (o processo de classificação não requer GPU). Por fim, acredito que em breve será lançado um modelo de interação tardia com desempenho ligeiramente reduzido, mas com sobrecarga de armazenamento bastante reduzida. Como infraestrutura de infraestrutura de dados, é transparente para essas mudanças e é uma escolha sábia entregar essas compensações aos usuários.

O que foi dito acima é baseado na avaliação de recall multicanal do Infinity no conjunto de dados MLDR. Os resultados da avaliação em outros conjuntos de dados podem ser diferentes, mas a conclusão geral não mudará - pesquisa híbrida de 3 vias + reordenação baseada em tensor é o recall atual. método com resultados de pesquisa da mais alta qualidade.

Pode-se ver a partir disso que ColBERT e seu modelo de interação atrasada têm grande valor de aplicação em cenários RAG. O trabalho acima relacionado na geração de conteúdo de diálogo de texto também ganhou reconhecimento SOTA em cenários multimodais. Este é o ColPali [Referência 9], que altera o fluxo de trabalho do RAG, conforme mostrado na figura a seguir:



Quando o RAG enfrenta documentos de formato complexo, o SOTA atual usa um modelo de reconhecimento de documento para identificar o layout do documento e, em seguida, chama o modelo correspondente para as estruturas parciais identificadas, como gráficos, imagens, etc., para convertê-las no correspondente o texto é então salvo no banco de dados de suporte RAG em vários formatos. ColPali elimina essas etapas e usa modelos multimodais diretamente para gerar conteúdo de incorporação. Ao fazer perguntas, você pode responder diretamente com base nos gráficos do documento:



O treinamento do modelo ColPali é semelhante ao ColBERT, também usando a forma de pares de páginas de consulta-documento para capturar a associação semântica entre dados multimodais de consulta e documento, mas usando PaliGemma [Referência 10] para gerar Embedding multimodal. Comparado com BiPali, que não usa o mecanismo de interação tardia, mas também usa PaliGemma para gerar incorporação, a comparação do índice de avaliação de nDCG@5 é 81,3 vs 58,8. Essa lacuna é a diferença entre "excelente" e "não funciona de jeito nenhum".



Portanto, embora já tenham se passado 4 anos desde o aparecimento do ColBERT, a aplicação do modelo de interação tardia no RAG está apenas começando. Ele definitivamente expandirá os cenários de uso do RAG e fornecerá recuperação semântica de alta qualidade em cenas RAG complexas, incluindo multimodalidade. O Infinity já está pronto para sua aplicação ponta a ponta. Bem-vindo a seguir o Star Infinity, https://github.com/infiniflow/infinity, e está comprometido em se tornar o melhor banco de dados nativo de IA!

referências

1. Colbert: Busca de passagens eficiente e eficaz por meio de interação tardia contextualizada sobre bert, SIGIR 2020.

2. Colbertv2: Recuperação eficaz e eficiente por meio de interação tardia leve, arXiv:2112.01488, 2021.

3. RAGatouille https://github.com/bclavie/RAGatouille

4. Recuperação densa multivetorial eficiente com vetores de bits, ECIR 2024.

5. https://huggingface.co/mteb

6. https://huggingface.co/BAAI/bge-m3

7. https://huggingface.co/jinaai/jina-colbert-v1-en

8. https://github.com/infiniflow/infinity/tree/main/python/benchmark/mldr_benchmark

9. ColPali: Recuperação eficiente de documentos com modelos de linguagem de visão, arXiv:2407.01449, 2024.

10. https://github.com/google-research/big_vision/tree/main/big_vision/configs/proj/paligemma