Modelos de Embeddings Open Source en Español con Sentence Transformers

Clase 22 de 37Curso de LangChain

Resumen

¿Cómo utilizar modelos de embeddings open source con Langstream?

La posibilidad de trabajar con modelos de embeddings open source nos abre las puertas a un abanico de oportunidades en el mundo del procesamiento de lenguaje natural. Langstream nos permite utilizar estas herramientas, y en esta guía analizaremos cómo implementar de manera eficiente los modelos de embeddings a través de la biblioteca Sentence Transformers. El objetivo es ayudar a los usuarios a configurar y aprovechar estos modelos a su máximo potencial utilizando ejemplos prácticos.

¿Qué son los Sentence Transformers?

Los Sentence Transformers son modelos de embedding altamente valorados dentro de la comunidad, conocidos por ser de los primeros en su tipo y por su gran potencia. Embeddings, en este contexto, se refiere al proceso de transformar texto en un formato numérico que los algoritmos de machine learning pueden procesar. Esencialmente, convierten oraciones en vectores de números que capturan el significado semántico del texto.

Para empezar a trabajar con estos modelos, debemos importar el componente Sentence Transformer Embeddings desde la librería de embeddings diseñada para soportarlo en Langstream. Así, se utiliza el modelo "Paraphrase Multilingual Mini LM L12 V2", el cual es un modelo multilingüe que soporta el español.

from langstream.embeddings import SentenceTransformerEmbeddings

embeddings_st = SentenceTransformerEmbeddings(model_name="paraphrase-multilingual-MiniLM-L12-v2")

Ventajas de usar Sentence Transformers

  • Versatilidad Multilingüe: Capacidad de procesar múltiples idiomas, incluido el español.
  • Independencia: Los modelos pueden funcionar localmente sin necesidad de conectarse a una API.
  • Optimización de recursos: Embeddings compactos que requieren menor poder computacional.

¿Cómo cargar y usar struct embeddings?

Los struct embeddings representan generadores de embeddings de nueva generación altamente eficientes. Aunque aún no hay un modelo de struct embedding que maneje el español específicamente, su rendimiento en otros idiomas es notable.

Para usarlos, importa la librería Instructor Embeddings y configúralos para funcionar en tu hardware preferido, como CUDA para usar GPU.

from langstream.embeddings import InstructEmbeddings

embeddings_instruct = InstructEmbeddings(model_name="Instructor-Large",
                                         model_kwargs={"device": "cuda"})

Características de los struct embeddings

  • Innovación y poder: Modelos avanzados que destacan por la cantidad de detalles que capturan en los embeddings.
  • Gran escala: Embeddings de 768 números, proporcionando una rica representación del texto.

¿Cómo trabajar con diferentes tamaños y números de tokens?

Es crucial entender los límites de tokenización de los modelos para evitar cortes de texto y pérdidas de información significativa. Cuando se trabajan con modelos importados desde Hugging Face, podemos determinar el tamaño máximo de tokens aceptados.

max_tokens_instruct = embeddings_instruct.client.max_tokens  # 512 tokens
max_tokens_st = embeddings_st.client.max_tokens  # 128 tokens

Cómo elegir el tamaño correcto

  • Sentence Transformers Mini: Optimo para pequeños fragmentos con un máximo de 128 tokens.
  • Instructor Large: Procesa hasta 512 tokens por documento, adecuado para textos más largos.

Para otros proveedores, como OpenAI y Cohere, es importante revisar sus documentaciones. OpenAI, por ejemplo, podría aceptar hasta 8000 tokens, mientras que para Cohere el número óptimo es 500 tokens.

Recomendaciones y mejores prácticas

  1. Leer documentaciones actualizadas: Mantente al día revisando blogs y documentaciones para conocer las capacidades y limitaciones de los modelos.
  2. Optar por modelos multilingües: Si trabajas en proyectos multilingües, asegúrate de seleccionar modelos que soporten todos los idiomas necesarios.
  3. Optimizar el hardware: Siempre que sea posible, utilice GPU para acelerar el proceso de generación de embeddings.
  4. Fragmentar textos adecuadamente: Asegúrate de fragmentar tus documentos según el tamaño de tokens aceptados por el modelo elegido.

Adoptar estas prácticas beneficiará tanto a los proyectos personales como a los empresariales, maximizando la eficiencia al trabajar con grandes volúmenes de texto. Implementar adecuadamente los modelos de embeddings no solo optimiza el rendimiento, sino que también mejora la calidad de las aplicaciones de procesamiento de lenguaje natural.