JaColBERTv2
Bienvenido a JaColBERT versión 2, el segundo lanzamiento de JaColBERT, un modelo de recuperación de documentos exclusivo para japonés basado en ColBERT. JaColBERTv2 es un modelo que ofrece una muy fuerte generalización fuera del dominio. Habiendo sido entrenado solo en un único conjunto de datos (MMarco), alcanza un rendimiento de última generación. JaColBERTv2 fue inicializado desde JaColBERTv1 y entrenado usando conocimiento distilado con 31 ejemplos negativos por ejemplo positivo. Fue entrenado durante 250k pasos usando un tamaño de lote de 32. La información en esta tarjeta de modelo es mínima e intenta dar una visión general rápida. Se actualizará una vez que se complete la evaluación y esté disponible un informe más largo.
Como usar
Instalación
JaColBERT funciona usando ColBERT+RAGatouille. Puedes instalarlo y todas sus dependencias necesarias ejecutando:
pip install -U ragatouille
Para más ejemplos sobre cómo usar RAGatouille con modelos ColBERT, puede consultar la sección de ejemplos en el repositorio de GitHub. Específicamente, el ejemplo 01 muestra cómo construir/consultar un índice, el 04 muestra cómo se puede usar JaColBERTv2 como un re-ranker, y el 06 muestra cómo usar JaColBERTv2 para búsquedas en memoria en lugar de usar un índice.
Codificación y consulta de documentos sin un índice
Si deseas usar JaColBERTv2 sin construir un índice, es muy simple, solo necesitas cargar el modelo, encode() algunos documentos, y luego search_encoded_docs():
from ragatouille import RAGPretrainedModel
RAG = RAGPretrainedModel.from_pretrained("bclavie/JaColBERTv2")
RAG.encode(['document_1', 'document_2', ...])
RAG.search_encoded_docs(query="tu consulta de búsqueda")
Las llamadas subsiguientes a encode() agregarán a la colección en memoria existente. Si deseas vaciarla, simplemente ejecuta RAG.clear_encoded_docs().
Indexación
Para que el enfoque de recuperación de interacción tardía utilizado por ColBERT funcione, primero debes construir tu índice.
from ragatouille import RAGPretrainedModel
RAG = RAGPretrainedModel.from_pretrained("bclavie/JaColBERT")
documents = ["マクドナルドのフライドポテトの少量のカロリーはいくつですか?マクドナルドの小さなフライドポテトのカロリーマクドナルドのウェブサイトには、次のように記載されています。フライドポテトの小さな注文で230カロリーケチャップで25カロリー、ケチャップパケットで15カロリー。"]
RAG.index(name="My_first_index", collection=documents)
Los archivos de índice se almacenan, por defecto, en .ragatouille/colbert/indexes/{index_name}.
Búsqueda
Una vez que hayas creado un índice, buscar en él es igual de sencillo. Si estás en la misma sesión y RAG todavía está cargado, puedes buscar directamente en el índice recién creado. De lo contrario, deberás cargarlo desde el disco:
RAG = RAGPretrainedModel.from_index(".ragatouille/colbert/indexes/My_first_index")
RAG.search(query="CONSULTA")
> [{'content': 'TEXTO DEL DOCUMENTO UNO', 'score': float, 'rank': 1, 'document_id': str, 'document_metadata': dict}, {'content': 'TEXTO DEL DOCUMENTO DOS', 'score': float, 'rank': 2, 'document_id': str, 'document_metadata': dict}, [...]]
Funcionalidades
- Fuerte generalización fuera del dominio
- Entrenado solo en el conjunto de datos MMarco
- Funciona con el enfoque ColBERTv2
- Uso de knowledge distillation con 31 ejemplos negativos por ejemplo positivo
- Entrenado durante 250 mil pasos con un tamaño de lote de 32
- Inicializado desde JaColBERTv1
Casos de uso
- Recuperación de documentos en japonés
- Reranking de documentos
- Búsqueda en memoria
- Generalización fuera del dominio en tareas de recuperación de información