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