JaColBERTv2

bclavie
Similitud de oraciones

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