colbert-xm

antoinelouis
Similitud de oraciones

Este es un modelo ColBERT que se puede usar para la búsqueda semántica en muchos idiomas. Codifica consultas y pasajes en matrices de incrustaciones a nivel de token y encuentra eficientemente pasajes que coinciden contextualmente con la consulta utilizando operadores de similitud de vectores escalables (MaxSim). El modelo usa una columna vertebral XMOD, que le permite aprender de la afinación monolingüe en un idioma con muchos recursos, como el inglés, y realizar recuperación sin ajuste previo en múltiples idiomas.

Como usar

Para empezar, instale 'colbert-ai' y algunos requisitos adicionales:

pip install git+https://github.com/stanford-futuredata/ColBERT.git@main torch==2.1.2 faiss-gpu==1.7.2 langdetect==1.0.9

Luego, puede usar el modelo de la siguiente manera:

# Uso de módulos personalizados que detectan automáticamente el idioma de los pasajes a indexar y activan los adaptadores específicos de idioma en consecuencia
from.custom import CustomIndexer, CustomSearcher
from colbert.infra import Run, RunConfig

n_gpu: int = 1 # Establezca su número de GPUs disponibles
experiment: str = "colbert" # Nombre de la carpeta donde se almacenarán los registros y los índices creados
index_name: str = "my_index" # El nombre de su índice, es decir, el nombre de su base de datos de vectores
documents: list = ["Ceci est un premier document.", "Voici un second document.", "etc."] # Corpus

# Paso 1: Indexación. Este paso codifica todos los pasajes en matrices, los almacena en el disco y construye estructuras de datos para una búsqueda eficiente.
with Run().context(RunConfig(nranks=n_gpu,experiment=experiment)):
  indexer = CustomIndexer(checkpoint="antoinelouis/colbert-xm")
  indexer.index(name=index_name, collection=documents)

# Paso 2: Búsqueda. Dado el modelo y el índice, puede emitir consultas sobre la colección para recuperar los pasajes principales para cada consulta.
with Run().context(RunConfig(nranks=n_gpu,experiment=experiment)):
  searcher = CustomSearcher(index=index_name) # No es necesario especificar el punto de control nuevamente, el nombre del modelo se almacena en el índice.
  results = searcher.search(query="Comment effectuer une recherche avec ColBERT ?", k=10)
# resultados: tupla de tuplas de longitud k que contiene ((passage_id, passage_rank, passage_score), ...)

Funcionalidades

Búsqueda semántica eficiente
Codificación de consultas y pasajes en matrices de incrustaciones de nivel de token
Operadores de similitud de vectores escalables (MaxSim)
Capacidad de aprendizaje de un idioma de alto recurso para recuperación sin ajuste previo en múltiples idiomas
Adaptadores específicos de idioma activados automáticamente

Casos de uso

Búsqueda semántica en múltiples idiomas
Recuperación de pasajes relevantes en grandes colecciones de documentos
Búsquedas contextualmente coincidentes utilizando operadores de similitud vectorial