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)'