Razonamiento sobre diferentes modelos RAG Reranker de forma unificada | Ajuste del modelo RAG Reranker de enlace completo Resultados experimentales |
RAG-Retrieval proporciona código de ajuste fino (entrenamiento), inferencia (infer) y destilación (destilación) de recuperación RAG de enlace completo.
Únase a nuestro chat grupal de WeChat
21/10/2024: RAG-Retrieval lanzó dos métodos diferentes para realizar tareas de Reranker basadas en LLM, así como un método para sintetizarlas en bert. ¿Cuáles son las mejores prácticas para LLM en tareas de Reranker? Un informe de experimento simple (con código)
5/6/2024: Implementación de pérdida de MRL del modelo de incrustación de RAG-Retrieval. RAG-Retrieval: Haga que la pérdida de MRL sea la configuración estándar de los modelos de vectores de entrenamiento (incrustación)
2/06/2024: RAG-Retrieval implementa un ajuste fino supervisado del recuperador RAG según las preferencias de LLM. RAG-Retrieval implementa un ajuste fino del recuperador RAG basado en la supervisión de preferencias de LLM
5/5/2024: Lanzamiento de la biblioteca liviana de Python RAG-Retrieval: su aplicación RAG merece un mejor marco de inferencia de clasificación
18/03/2024: Lanzamiento de RAG-Retrieval Introducción a RAG-Retrieval Zhihu
El modelo de clasificación es una parte importante de cualquier arquitectura de recuperación y una parte importante de RAG, pero el status quo actual es:
Por lo tanto, RAG-Retrieval ha desarrollado una biblioteca de Python ligera rag-retrieval, que proporciona una forma unificada de llamar a cualquier modelo de clasificación RAG diferente. Tiene las siguientes características.
Admite múltiples modelos de clasificación: admite modelos de clasificación de código abierto comunes (Cross Encoder Reranker, Decoder-Only LLM Reranker)
Compatible con documentos largos: admite dos lógicas de procesamiento diferentes para documentos largos (truncamiento de longitud máxima, segmentación y puntuación máxima).
Fácil de expandir: si hay un nuevo modelo de clasificación, el usuario solo necesita heredar basereranker e implementar las funciones de clasificación y cálculo_score.
#为了避免自动安装的torch与本地的cuda不兼容,建议进行下一步之前先手动安装本地cuda版本兼容的torch。
pip install rag-retrieval
Para Cross Encoder Reranker, siempre que utilice AutoModelForSequenceClassification de transformadores, puede utilizar el Reranker de rag_retrieval para razonar. Los ejemplos son los siguientes.
Modelos de codificador cruzado de la serie bge, como (BAAI/bge-reranker-base, BAAI/bge-reranker-large, BAAI/bge-reranker-v2-m3)
Modelo de codificador cruzado de bce, por ejemplo (maidalun1020/bce-reranker-base_v1)
Para LLM Reranker, Reranker de rag_retrieval admite una variedad de potentes modelos de clasificación LLM. También admite el uso de cualquier modelo de chat LLM para la clasificación de cero disparos. Los ejemplos son los siguientes.
Modelos LLM Reranker de la serie bge, como (BAAI/bge-reranker-v2-gemma, BAAI/bge-reranker-v2-minicpm-layerwise, BAAI/bge-reranker-v2-m3)
También admite el uso de cualquier modelo de chat LLM para la clasificación de cero disparos.
Para conocer el uso detallado y las precauciones del paquete de recuperación de trapos, consulte el Tutorial
Hemos realizado muchas pruebas para alinearnos con el marco de razonamiento original a continuación. Consulte Pruebas para obtener más detalles. Requieren diferentes módulos para ejecutarse y rag_retrieval usa una interfaz unificada.
Como FlagReranker, FlagLLMReranker y LayerWiseFlagLLMReranker de FlagEmbedding.
Como RerankerModel de BCEmbedding
conda create -n rag-retrieval python=3.8 && conda activate rag-retrieval
#为了避免自动安装的torch与本地的cuda不兼容,建议进行下一步之前先手动安装本地cuda版本兼容的torch。
pip install -r requirements.txt
Admite el ajuste fino de cualquier modelo de integración de código abierto (bge, m3e, etc.)
Admite el ajuste fino de dos tipos de datos:
Ajuste el proceso de incrustación del modelo. Para procesos detallados, consulte el Tutorial en el directorio del modelo.
cd ./rag_retrieval/train/embedding
bash train_embedding.sh
Ajuste el proceso del modelo de Colbert para conocer los procesos detallados, consulte el Tutorial en el directorio del modelo.
cd ./rag_retrieval/train/colbert
bash train_colbert.sh
Ajuste el proceso del modelo de reclasificación. Para procesos detallados, consulte el Tutorial en el directorio de modelos.
cd ./rag_retrieval/train/reranker
bash train_reranker.sh
Modelo | Tamaño del modelo (GB) | T2Reclasificación | MMarcoReranking | CMedQAv1 | CMedQAv2 | promedio |
---|---|---|---|---|---|---|
bge-reranker-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 |
reranker-recuperación-de-trapos | 0,41 | 67,33 | 31,57 | 83,54 | 86.03 | 67.12 |
Entre ellos, rag-retrieval-reranker es lo que usamos en el código RAG-Retrieval para entrenar en el modelo hfl / chino-roberta-wwm-ext, y los datos de entrenamiento utilizan los datos de entrenamiento del modelo bge-rerank.
Modelo | Tamaño del modelo (GB) | Oscuro | T2Reclasificación | MMarcoReranking | CMedQAv1 | CMedQAv2 | promedio |
---|---|---|---|---|---|---|---|
bge-m3-colbert | 2.24 | 1024 | 66,82 | 26,71 | 75,88 | 76,83 | 61,56 |
recuperación-de-trapos-colbert | 0,41 | 1024 | 66,85 | 31.46 | 81.05 | 84,22 | 65,90 |
Entre ellos, rag-retrieval-colbert es lo que usamos en el código RAG-Retrieval para entrenar en el modelo hfl / chino-roberta-wwm-ext, y los datos de entrenamiento usan los datos de entrenamiento del modelo bge-rerank.
Modelo | clasificación T2 | |
---|---|---|
bge-v1.5-incrustación | 66,49 | |
ajuste fino de incrustación bge-v1.5 | 67,15 | +0.66 |
bge-m3-colbert | 66,82 | |
bge-m3-colbert ajuste fino | 67,22 | +0.40 |
bge-reranker-base | 67,28 | |
ajuste fino de la base de reranker de bge | 67,57 | +0.29 |
Los que tienen ajuste fino al final significan que usamos RAG-Retrieval para continuar afinando los resultados según el modelo de código abierto correspondiente. Los datos de entrenamiento utilizan el conjunto de entrenamiento T2-Reranking.
Vale la pena señalar que los tres modelos de código abierto de BGE ya incluyen T2-Reranking en el conjunto de entrenamiento y los datos son relativamente generales, por lo que el efecto de mejora del rendimiento al usar estos datos para continuar con el ajuste no es significativo. Si utiliza conjuntos de datos de dominio vertical para continuar afinando el modelo de código abierto, la mejora del rendimiento será mayor.
RAG-Retrieval tiene la licencia MIT.