Los modelos de embedding son redes neuronales basadas en transformadores que transforman fragmentos de documentos (es decir, pasajes de texto) en una representación numérica o vectorial. Los contenidos con un significado o una semántica similares se asignarán a una representación similar en el espacio latente, como se ve en la siguiente imagen.
La vectorización del lenguaje permite aplicaciones con IA, como "chatear con documentos" o búsqueda semántica, en lugar de la búsqueda tradicional por palabras clave (léxica).
El modelo de embedding que elija afectará significativamente a la precisión de recuperación, la latencia y el coste computacional de su sistema RAG. La elección del modelo de embedding estará influido en gran medida por su tamaño, que depende de dos características: la dimensión de embedding y el número de parámetros del modelo.
Un modelo de embedding más grande suele mejorar el rendimiento de la recuperación, pero a costa de un aumento de la latencia, el almacenamiento y el coste computacional (financiero). Por el contrario, un modelo de embedding más pequeño suele ofrecer un rendimiento reducido, pero ocupa menos memoria, requiere menos potencia computacional y es más rápido en tiempo de ejecución. Elija un modelo de embedding que equilibre los requisitos de rendimiento con los recursos disponibles.
Ciertos modelos de embedding son específicos del idioma (por ejemplo, modelos de embedding en español creados para clientes españoles) y específicos del dominio (por ejemplo, un modelo entrenado en terminología oncológica para habilitar RAG sobre archivos médicos).
Se recomienda utilizar modelos de embedding implementados en watsonx: los modelos Slate desarrollados por IBM o los modelos de terceros que se enumeran a continuación. Lea esta documentación para obtener más información sobre cada modelo. Para obtener más información sobre las clases de facturación, consulte los planes de facturación de watsonx.
Modelos Slate de IBM
| Nombre del modelo | API model_id | Clase de facturación | Número máximo de tokens de entrada | Número de dimensiones | Más información |
|---|---|---|---|---|---|
| slate-125m-english-rtrvr | ibm/slate-125m-english-rtrvr | Clase C1 | 512 | 768 | Modelo de tarjeta |
| slate-30m-english-rtrvr | ibm/slate-30m-english-rtrvr | Clase C1 | 512 | 384 | Modelo de tarjeta |
IBM proporciona el modelo fundacional slate-125m-english-rtrvr. El modelo fundacional slate-125m-english-rtrvr genera embeddings para diversas entradas, como consultas, pasajes o documentos. El objetivo de entrenamiento es maximizar la similitud de coseno entre una consulta y un pasaje. Este proceso produce dos embeddings de oraciones, una que representa la pregunta y otra que representa el pasaje, permitiendo comparar ambas mediante similitud coseno.
Uso: dos o tres veces más lento, pero funciona ligeramente mejor que el modelo slate-30m-english-rtrvr. Idiomas compatibles: inglés
El modelo fundacional slate-30m-english-rtrvr es una versión destilada del slate-125m-english-rtrvr, ambos proporcionados por IBM. El modelo de embedding slate-30m-english-rtrvr se entrena para maximizar la similitud coseno entre dos entradas de texto, de modo que los embeddings puedan evaluarse posteriormente en función de la similitud.
Uso: dos o tres veces más rápido y tiene puntuaciones de rendimiento ligeramente más bajas que el modelo slate-125m-english-rtrvr. Idiomas compatibles: inglés
Modelos de embedding de terceros disponibles con watsonx
| Nombre del modelo | API model_id | Proveedor | Clase de facturación | Número máximo de tokens de entrada | Número de dimensiones | Más información |
|---|---|---|---|---|---|---|
| all-minilm-l12-v2 | sentence-transformers/all-minilm-l12-v2 | Comunidad de código abierto de procesamiento del lenguaje natural (PNL) y visión artificial (CV) | Clase C1 | 256 | 384 | Modelo de tarjeta |
| multilingual-e5-large | intfloat/multilingual-e5-large | Microsoft | Clase C1 | 512 | 1024 | Modelo de tarjeta, artículo de investigación |
El modelo de embedding all-minilm-l12-v2 está construido por la comunidad de código abierto de procesamiento del lenguaje natural (PLN) y visión artificial (CV) y es proporcionado por HuggingFace.
Idiomas compatibles: inglés
Uso: para casos de uso en los que se quiere generar embeddings de texto para texto en un idioma distinto al inglés.
Idiomas naturales compatibles: hasta 100 idiomas. Consulte la tarjeta del modelo para más detalles.
Para más información sobre modelos de embedding compatibles, consulte la documentación de watsonx.
Instale la biblioteca Python ibm-watsonx-ai
pip install -U ibm-watsonx-ai
Utilice la API de embeddings de watsonx y los modelos de embedding disponibles para generar embeddings de texto.
from ibm_watsonx_ai.metanames import EmbedTextParamsMetaNames as EmbedParams
from ibm_watsonx_ai.foundation_models.utils.enums import EmbeddingTypes
from ibm_watsonx_ai.foundation_models import Embeddings
# Establezca truncate_input_tokens en un valor que sea igual o menor que el máximo de tokens permitidos para el modelo de embedding que está utilizando. Si no especifica este valor y la entrada tiene más tokens de los que el modelo puede procesar, se genera un error.
embed_params = {
EmbedParams.TRUNCATE_INPUT_TOKENS: 128,
EmbedParams.RETURN_OPTIONS: {
'input_text': True
}
}
embedding = Embeddings(
model_id=EmbeddingTypes.IBM_SLATE_30M_ENG,
credentials=credentials,
params=embed_params,
project_id=project_id,
space_id=None,
verify=False
)
q = [
"Un modelo fundacional es un modelo de IA generativa a gran escala que puede adaptarse a una amplia gama de tareas posteriores".,
"La IA generativa es una clase de algoritmos de IA que pueden producir diversos tipos de contenidos, incluyendo texto, código fuente, imágenes, audio y datos sintéticos".
]
embedding_vectors = embedding.embed_documents(texts=q)
print(embedding_vectors)
Utilice watsonx Granite Model Series y embeddings, Chroma y LangChain para responder preguntas (RAG) y LangChain
Actualizado: 15 de noviembre de 2024