maidalun1020/bce-reranker-base_v1

maidalun1020
Clasificación de texto

BCEmbedding es un modelo de incrustación bilingüe y multilingüe desarrollado por NetEase Youdao, que incluye EmbeddingModel y RerankerModel. El EmbeddingModel se especializa en generar vectores semánticos, desempeñando un papel crucial en la búsqueda semántica y la respuesta a preguntas, mientras que el RerankerModel se destaca en refinar resultados de búsqueda y tareas de clasificación. BCEmbedding sirve como la piedra angular de la implementación de Generación Aumentada por Recuperación (RAG) de Youdao, notablemente en QAnything, una implementación de código abierto ampliamente integrada en varios productos de Youdao como Speed Reading y Translation.

Como usar

Manual de instalación

conda create --name bce python=3.10 -y
conda activate bce
pip install BCEmbedding==0.1.1
git clone [email protected]:netease-youdao/BCEmbedding.git
cd BCEmbedding
pip install -v -e .

Inicio rápido basado en BCEmbedding

from BCEmbedding import EmbeddingModel

# Lista de oraciones
sentences = ['sentence_0', 'sentence_1', ...]

# Inicializar modelo de incrustación
model = EmbeddingModel(model_name_or_path="maidalun1020/bce-embedding-base_v1")

# Extraer incrustaciones
embeddings = model.encode(sentences)

Uso de RerankerModel para calcular puntuaciones relevantes y reordenar

from BCEmbedding import RerankerModel

# Consulta y pasajes correspondientes
query = 'input_query'
passages = ['passage_0', 'passage_1', ...]

# Construir pares de oraciones
sentence_pairs = [[query, passage] for passage in passages]

# Inicializar modelo de reordenamiento
model = RerankerModel(model_name_or_path="maidalun1020/bce-reranker-base_v1")

# Método 0: Calcular puntuaciones de los pares de oraciones
scores = model.compute_score(sentence_pairs)

# Método 1: Reordenar pasajes
rerank_results = model.rerank(query, passages)

Basado en transformers

from transformers import AutoModel, AutoTokenizer

# Lista de oraciones
sentences = ['sentence_0', 'sentence_1', ...]

# Inicializar modelo y tokenizer
tokenizer = AutoTokenizer.from_pretrained('maidalun1020/bce-embedding-base_v1')
model = AutoModel.from_pretrained('maidalun1020/bce-embedding-base_v1')

device = 'cuda' # si no hay GPU, configure "cpu"
model.to(device)

# Obtener entradas
inputs = tokenizer(sentences, padding=True, truncation=True, max_length=512, return_tensors="pt")
inputs_on_device = {k: v.to(self.device) for k, v in inputs.items()}

# Obtener incrustaciones
outputs = model(**inputs_on_device, return_dict=True)
embeddings = outputs.last_hidden_state[:, 0] # cls pooler
embeddings = embeddings / embeddings.norm(dim=1, keepdim=True) # normalizar

Basado en sentence_transformers

from sentence_transformers import SentenceTransformer

# Lista de oraciones
sentences = ['sentence_0', 'sentence_1', ...]

# Inicializar modelo de incrustación
model = SentenceTransformer("maidalun1020/bce-embedding-base_v1")

# Extraer incrustaciones
embeddings = model.encode(sentences, normalize_embeddings=True)

RerankerModel en sentence_transformers

from sentence_transformers import CrossEncoder

# Inicializar modelo de reordenamiento
model = CrossEncoder('maidalun1020/bce-reranker-base_v1', max_length=512)

# Calcular puntuaciones de los pares de oraciones
scores = model.predict(sentence_pairs)

Funcionalidades

Capacidad multilingüe y transversal: Basado en el motor de traducción de Youdao, sobresaliendo en tareas de recuperación en chino, inglés y sus combinaciones.
Optimizado para RAG: Adaptado para diversas tareas de RAG, incluyendo traducción, resumen y respuesta a preguntas, asegurando una comprensión precisa de la consulta.
Recuperación eficiente y precisa: Dual-encoder para la recuperación eficiente del EmbeddingModel en la primera etapa, y cross-encoder del RerankerModel para una mayor precisión y análisis semántico profundo en la segunda etapa.
Amplia adaptabilidad de dominio: Entrenado en diversos conjuntos de datos para un rendimiento superior en varios campos.
Diseño amigable para el usuario: Uso versátil sin necesidad de especificar instrucciones de consulta para cada tarea.
Puntuaciones de reordenamiento significativas: El RerankerModel proporciona puntuaciones relevantes para mejorar la calidad de los resultados y optimizar el rendimiento de los modelos de lenguaje grandes.
Validado en producción: Implementado y validado con éxito en los productos de Youdao.

Casos de uso

Aplicaciones RAG: QAnything, HuixiangDou, ChatPDF.
Marco de inferencia eficiente: ChatLLM.cpp, Xinference, mindnlp (Huawei GPU, 华为GPU).