Un modelo de incrustación de texto integral: desde text2vec, openai-ada-002 hasta m3e, bge-CSDN blog

contenido

Introducción

本文已经是今年的第31篇大模型相关的技术文章了,如果说

  • Hace medio año, escribir un blog era más por interés personal + la necesidad de los lectores
  • Después de que nuestro departamento estableciera el equipo del proyecto LLM en el tercer trimestre del año 23, escribir un blog se convirtió en: interés personal + necesidad de los lectores + necesidad del proyecto Tener estas tres cosas al mismo tiempo realmente es una gran suerte al escribir un blog

Estamos muy contentos, tanto yo como nuestra empresa, de poder discutir con todos ustedes cómo implementar de manera más efectiva y rápida la tecnología de modelos grandes avanzados en diversos escenarios comerciales de diferentes industrias, capacitando así los negocios reales de millones de empresas a través de blogs, cursos, formación interna y proyectos.

Y este artículo comenzó como parte del artículo "Knowledge Base Q&A LangChain+LLM's Secondary Development: Typical Issues and Improvement Solutions for Commercial Use" en la sección 1.2 (El primer borrador de esta sección 1.2 provino del equipo del tercer proyecto de LLM de nuestra empresa, bingo), pero para explicar el modelo de incrustación de texto de manera más precisa y completa, se extrajo esa parte del contenido y se mejoró continuamente para convertirse en este artículo.

最终, se ha logrado una mayor nivel de detalle en comparación con otros materiales disponibles en línea.

Parte 1: Lista de clasificación para evaluar la efectividad de la representación vectorial de texto: MTEB, C-MTEB

1.2 《MTEB: Massive Text Embedding Benchmark(海量文本嵌入基准)》

Para determinar qué modelos de incrustación de texto funcionan mejor, generalmente se necesita un indicador de evaluación para comparar. "MTEB: Massive Text Embedding Benchmark (Benchmarks masivos de incrustación de texto)" es un benchmark para evaluar modelos de incrustación de texto a gran escala.

*论文地址:https://arxiv.org/abs/2210.07316 MTEB包含8个语义向量任务,涵盖58个数据集和112种语言。通过在MTEB上对33个模型进行基准测试,建立了迄今为止最全面的文本嵌入基准。我们发现没有特定的文本嵌入方法在所有任务中都占主导地位。这表明该领域尚未集中在一个通用的文本嵌入方法上,并将其扩展到足以在所有嵌入任务上提供最先进的结果 *github地址:https://github.com/embeddings-benchmark/mteb#leaderboard

1.2 Clasificación de tareas de incrustación de texto en chino: C-MTEB

Desde Chinese Massive Text Embedding Benchmark se pueden ver las últimas clasificaciones de tareas para incrustar texto masivo en chino, con clasificaciones separadas para diferentes escenarios de tarea.

La lista de tareas incluye:

  • Recuperación
  • STS
  • Clasificación de pares
  • Clasificación
  • Reordenamiento
  • Agrupamiento

Entre ellos, en la tarea de la base de conocimientos locales, el enfoque principal es recuperar fragmentos de texto de conocimiento local similares en la base de datos vectorial según la representación de incrustación de la consulta de problema. Por lo tanto, este escenario es principalmente una tarea de recuperación. La lista de tareas de recuperación es la siguiente:

Actualmente, el modelo más efectivo bajo el ranking de tareas de recuperación es la serie bge, el modelo bge-large-zh, y el modelo por defecto en el proyecto langchain-chatchat, m3e-base, también se encuentra en una posición bastante avanzada.

Segunda parte text-embedding-ada-002

2.1 Introducción del modelo

text-embedding-ada-002 es un modelo de embedding proporcionado por OpenAI, pero requiere el pago de una tarifa para su uso a través de la API. Tiene las siguientes características:

  • Capacidad unificada: OpenAI combina cinco modelos independientes (similitud de texto, búsqueda de texto-consulta, búsqueda de texto-documento, búsqueda de código-texto y búsqueda de código-código) en un nuevo modelo único. En una serie de diferentes benchmarks de búsqueda de texto, similitud de oraciones y búsqueda de código, esta representación única supera el rendimiento de los modelos de incrustación anteriores.
  • Contexto: Longitud de contexto de 8192, lo que lo hace más conveniente para el procesamiento de documentos largos.
  • Tamaño de incrustación: Solo 1536 dimensiones, una octava parte del tamaño de incrustación de davinci-001, lo que hace que las nuevas incrustaciones sean más rentables al procesar bases de datos vectoriales.

2.2 Uso del modelo

A continuación se muestra un ejemplo de código para la búsqueda de texto proporcionado en la documentación oficial de OpenAI

1. from openai.embeddings_utils import get_embedding, cosine_similarity
2. def search_reviews(df, product_description, n=3, pprint=True):
3. embedding = get_embedding(product_description, model='text-embedding-ada-002')
4. df['similarities'] = df.ada_embedding.apply(lambda x: cosine_similarity(x, embedding))
5. res = df.sort_values('similarities', ascending=False).head(n)
6. return res
7. res = search_reviews(df, 'delicious beans', n=3)'

Tercera parte modelo m3e

3.1 Introducción al modelo m3e

Resumir
本文介绍了大模型相关的技术文章,包括MTEB和C-MTEB的文本向量表示效果榜单,以及text-embedding-ada-002和m3e模型的简介。MTEB是一个海量文本嵌入模型的评估基准,包含8个语义向量任务,涵盖58个数据集和112种语言。C-MTEB是针对中文海量文本embedding的各项任务的排行榜。text-embedding-ada-002是OpenAI提供的一个embedding模型,具有统一能力、上下文长度为8192和嵌入尺寸为1536个维度的特点。m3e是一个基于Roberta系列模型进行训练的模型,使用了in-batch负采样的对比学习的方式在句对数据集进行训练,并使用了指令数据集进行微调。