Raciocinando sobre diferentes modelos de reclassificação RAG de forma unificada | Ajustando o modelo de reclassificação RAG de link completo |
RAG-Retrieval fornece código de ajuste fino (treinamento), inferência (inferência) e destilação (destilação) de recuperação RAG de link completo.
Participe do nosso bate-papo em grupo WeChat
21/10/2024: RAG-Retrieval lançou dois métodos diferentes para realizar tarefas de Reranker com base em LLM, bem como um método para destilá-los em bert. Quais são as melhores práticas para LLM em tarefas Reranker? Um relatório de experiência simples (com código)
05/06/2024: Implementação de perda de MRL do modelo de incorporação RAG-Retrieval. Recuperação RAG: Faça da perda de MRL a configuração padrão de modelos de vetores de treinamento (incorporação)
02/06/2024: RAG-Retrieval implementa ajuste fino do recuperador RAG supervisionado com base nas preferências LLM. RAG-Retrieval implementa ajuste fino do RAG retriever com base na supervisão de preferência LLM
05/05/2024: Lançamento da biblioteca python leve RAG-Retrieval: Seu aplicativo RAG merece uma estrutura de inferência de classificação melhor
18/03/2024: Lançamento da introdução do RAG-Retrieval RAG-Retrieval Zhihu
O modelo de classificação é uma parte importante de qualquer arquitetura de recuperação e uma parte importante do RAG, mas o status quo atual é:
Portanto, RAG-Retrieval desenvolveu uma biblioteca python leve de recuperação de rag, que fornece uma maneira unificada de chamar qualquer modelo de classificação RAG diferente.
Suporta vários modelos de classificação: suporta modelos comuns de classificação de código aberto (Cross Encoder Reranker, Decoder-Only LLM Reranker)
Compatível com documentos longos: suporta duas lógicas de processamento diferentes para documentos longos (truncamento de comprimento máximo, segmentação e pontuação máxima).
Fácil de expandir: Se houver um novo modelo de classificação, o usuário só precisa herdar o basereranker e implementar as funções rank e compute_score.
#为了避免自动安装的torch与本地的cuda不兼容,建议进行下一步之前先手动安装本地cuda版本兼容的torch。
pip install rag-retrieval
Para Cross Encoder Reranker, desde que use AutoModelForSequenceClassification de transformadores, você pode usar o Reranker de rag_retrieval para raciocínio. Os exemplos são os seguintes.
Modelos de Cross Encoder da série bge, como (BAAI/bge-reranker-base, BAAI/bge-reranker-large, BAAI/bge-reranker-v2-m3)
Modelo Cross Encoder de bce, por exemplo (maidalun1020/bce-reranker-base_v1)
Para o LLM Reranker, o Reranker do rag_retrieval oferece suporte a uma variedade de modelos poderosos de classificação LLM. Ele também suporta o uso de qualquer modelo de bate-papo LLM para classificação zero shot. Os exemplos são os seguintes.
Modelos LLM Reranker da série bge, como (BAAI/bge-reranker-v2-gemma, BAAI/bge-reranker-v2-minicpm-layerwise, BAAI/bge-reranker-v2-m3)
Ele também suporta o uso de qualquer modelo de bate-papo LLM para classificação zero shot.
Para uso detalhado e precauções do pacote de recuperação de pano, consulte o Tutorial
Fizemos muitos testes para alinhar com a estrutura de raciocínio original abaixo. Consulte Testes para obter detalhes. Eles exigem módulos diferentes para serem executados e rag_retrieval usa uma interface unificada.
Como FlagReranker, FlagLLMReranker, LayerWiseFlagLLMReranker de FlagEmbedding.
Como o RerankerModel da BCEmbedding
conda create -n rag-retrieval python=3.8 && conda activate rag-retrieval
#为了避免自动安装的torch与本地的cuda不兼容,建议进行下一步之前先手动安装本地cuda版本兼容的torch。
pip install -r requirements.txt
Suporta o ajuste fino de qualquer modelo de incorporação de código aberto (bge, m3e, etc.)
Suporta ajuste fino de dois tipos de dados:
Ajuste o processo de incorporação do modelo. Para processos detalhados, consulte o Tutorial no diretório do modelo.
cd ./rag_retrieval/train/embedding
bash train_embedding.sh
Ajuste o processo do modelo Colbert Para processos detalhados, consulte o Tutorial no diretório do modelo.
cd ./rag_retrieval/train/colbert
bash train_colbert.sh
Ajuste o processo do modelo de reclassificação Para processos detalhados, consulte o Tutorial no diretório do modelo.
cd ./rag_retrieval/train/reranker
bash train_reranker.sh
Modelo | Tamanho do modelo (GB) | Reclassificação T2 | MMarcoReclassificação | CMedQAv1 | CMedQAv2 | Média |
---|---|---|---|---|---|---|
bge-reclassificador-base | 1.11 | 67,28 | 35,46 | 81,27 | 84,10 | 67.03 |
bce-reranker-base_v1 | 1.11 | 70,25 | 34.13 | 79,64 | 81,31 | 66,33 |
reclassificador de recuperação de trapos | 0,41 | 67,33 | 31,57 | 83,54 | 86.03 | 67,12 |
Entre eles, rag-retrieval-reranker é o que usamos o código RAG-Retrieval para treinar no modelo hfl/chinese-roberta-wwm-ext, e os dados de treinamento usam os dados de treinamento do modelo bge-rerank.
Modelo | Tamanho do modelo (GB) | Escurecer | Reclassificação T2 | MMarcoReclassificação | CMedQAv1 | CMedQAv2 | Média |
---|---|---|---|---|---|---|---|
bge-m3-colbert | 2.24 | 1024 | 66,82 | 26,71 | 75,88 | 76,83 | 61,56 |
recuperação de trapos-colbert | 0,41 | 1024 | 66,85 | 31.46 | 81.05 | 84,22 | 65,90 |
Entre eles, rag-retrieval-colbert é o que usamos o código RAG-Retrieval para treinar no modelo hfl/chinese-roberta-wwm-ext, e os dados de treinamento usam os dados de treinamento do modelo bge-rerank.
Modelo | Classificação T2 | |
---|---|---|
incorporação bge-v1.5 | 66,49 | |
ajuste fino de incorporação bge-v1.5 | 67,15 | +0,66 |
bge-m3-colbert | 66,82 | |
ajuste fino bge-m3-colbert | 67,22 | +0,40 |
bge-reclassificador-base | 67,28 | |
ajuste fino bge-reranker-base | 67,57 | +0,29 |
Aqueles com ajuste fino no final significam que usamos RAG-Retrieval para continuar a ajustar os resultados com base no modelo de código aberto correspondente. Os dados de treinamento usam o conjunto de treinamento T2-Reranking.
É importante notar que os três modelos de código aberto do BGE já incluem a reclassificação T2 no conjunto de treinamento e os dados são relativamente gerais, portanto, o efeito de melhoria de desempenho do uso desses dados para continuar o ajuste fino não é significativo. você usa conjuntos de dados de domínio vertical para continuar a ajustar o modelo de código aberto, a melhoria de desempenho será maior.
RAG-Retrieval é licenciado sob a licença MIT.