Aspectos destacados
- Resumen del módulo:
llama_index.embeddings.huggingfaceconecta LlamaIndex con los modelos de Hugging Face para obtener embeddings personalizados. - Instalación y configuración: 1. Instala el paquete mediante pip. 2. Configura el módulo en Python. 3. Instancia el modelo de embeddings. 4. Prueba con texto de muestra.
- Elección del modelo adecuado: Importancia de seleccionar modelos según el idioma y la tarea, considerando rendimiento y recursos.
- Ejemplos de código: Muestra la generación básica de embeddings, modelos personalizados, procesamiento por lotes e integración con índices vectoriales.
- Consejos de optimización: Modelos eficientes, procesamiento por lotes, ajuste del tamaño de fragmentos, asignación de recursos, almacenamiento en caché y monitoreo del sistema.
- Integración con API LLM: Pasos para integrar con la API LLM de Novita AI para tareas avanzadas de PLN.
Introducción
Integrar los embeddings de Hugging Face con LlamaIndex abre un mundo de posibilidades para los desarrolladores que trabajan en tareas avanzadas de procesamiento del lenguaje natural. Al aprovechar el poder de los modelos diversos y de última generación de Hugging Face dentro del marco de LlamaIndex, los desarrolladores pueden crear sistemas de Generación Aumentada por Recuperación (RAG) robustos, eficientes y altamente precisos, adaptados a idiomas y dominios específicos. Esta guía te llevará a través del proceso de configuración y uso de los embeddings de Hugging Face con LlamaIndex, proporcionándote información práctica y ejemplos de código para optimizar tus proyectos de PLN.
¿Qué es llama_index_embedding_huggingface?
El módulo llama_index.embeddings.huggingface actúa como un puente entre LlamaIndex y el rico ecosistema de modelos de Hugging Face. Al utilizar este módulo, puedes seleccionar entre una variedad de modelos de embeddings de última generación, adaptando tus sistemas RAG a idiomas, dominios o requisitos de rendimiento específicos.
Instalación y configuración
Paso 1: Instalación
- Asegúrate de tener Python y pip instalados en tu sistema.
- Abre tu terminal o símbolo del sistema e instala el paquete
llama_index_embedding_huggingfaceusando pip:
pip install llama_index_embedding_huggingface
Paso 2: Configuración
- Una vez instalado, importa el módulo en tu script de Python:
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
- Decide qué modelo de embeddings de Hugging Face se adapta mejor a tus necesidades. Considera factores como el soporte de idiomas, el tamaño del modelo y el rendimiento.
Paso 3: Configuración del módulo
- Instancia la clase
HuggingFaceEmbeddingcon el nombre del modelo que hayas elegido:
embedding_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
- Esta configuración está lista para integrarse en tu pipeline RAG, donde se usará para convertir datos textuales en embeddings.
Paso 4: Primer uso
- Con el modelo de embeddings listo, ahora puedes proceder a integrarlo con el resto de los componentes de LlamaIndex, como el cargador de documentos y el índice vectorial.
- Prueba la configuración con un texto de muestra para asegurarte de que los embeddings se generen según lo esperado:
sample_text = "Hello, world of RAG systems!"
embeddings = embedding_model.get_text_embedding(sample_text)
print(embeddings)
Para más información sobre proyectos RAG con Huggingface y LlamaIndex, consulta este blog: Building A RAG Ebook “Librarian” Using LlamaIndex.
Elección del modelo de embeddings adecuado
Seleccionar el modelo de embeddings correcto es fundamental para el rendimiento de tu sistema RAG. Los embeddings son el núcleo a través del cual el sistema entiende y recupera tus datos. La elección del modelo puede afectar la precisión, relevancia y eficiencia de tus operaciones de recuperación.
Exploración de modelos disponibles
Hugging Face ofrece una gran cantidad de modelos, cada uno con sus características únicas. Para explorar los modelos disponibles, visita el Hugging Face Model Hub. Usa filtros para reducir los modelos por idioma, tarea o conjunto de datos. Presta atención a los comentarios de la comunidad, los puntos de referencia de rendimiento y la compatibilidad del modelo con los requisitos de tu sistema.
Selección según idioma y tarea
Tu elección debe guiarse por el idioma de tus datos y las tareas específicas para las que está diseñado tu sistema RAG. Por ejemplo, si tu aplicación trata con literatura médica, podrías preferir un modelo afinado para texto médico. De manera similar, para una aplicación multilingüe, un modelo que admita múltiples idiomas sería ideal.
Consideraciones de rendimiento
Considera el equilibrio entre el tamaño del modelo y su rendimiento. Los modelos más grandes pueden proporcionar embeddings más detallados, pero a costa de mayores recursos computacionales y latencia.
Ejemplos de uso en código
Ahora que has seleccionado un modelo adecuado, es hora de ponerlo en práctica. A continuación se muestran ejemplos de código detallados que demuestran cómo generar embeddings de texto utilizando el módulo llama_index.embeddings.huggingface.
Generación básica de embeddings:
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
# Inicializar el modelo de embeddings
embedding_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
# Texto a convertir en embedding
text = "This is a sample text for embedding."
# Generar embedding
embedding = embedding_model.get_text_embedding(text)
print(embedding)
Embeddings con modelo personalizado:
# Inicializar con un modelo diferente
custom_embedding_model = HuggingFaceEmbedding(model_name="YourCustomModelName")
# Generar embedding usando el modelo personalizado
custom_embedding = custom_embedding_model.get_text_embedding(text)
Generación de embeddings por lotes:
# Lista de textos
texts = ["text1", "text2", "text3", ...]
# Generar embeddings para todos los textos
embeddings = embedding_model.get_text_embedding(texts)
Adaptación a necesidades específicas:
# Personalizar la generación de embeddings
embeddings = embedding_model.get_text_embedding(text, max_length=512)
Integración con índice vectorial:
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
# Cargar documentos
documents = SimpleDirectoryReader("./data").load_data()
# Crear índice de almacenamiento vectorial
index = VectorStoreIndex.from_documents(documents, embed_model=embedding_model)
# Ahora, `index` se puede usar para operaciones de recuperación eficientes
Consejos para optimizar la generación de embeddings
Consejo 1: Selecciona modelos eficientes
Elige modelos de embeddings que equilibren precisión y velocidad. Los modelos más grandes pueden ofrecer mejor rendimiento, pero a costa de un mayor tiempo de cómputo.
Consejo 2: Procesamiento por lotes
Utiliza las capacidades de procesamiento por lotes del módulo llama_index.embeddings.huggingface para generar embeddings de múltiples textos en una sola operación, reduciendo la sobrecarga de configuraciones repetidas.
Consejo 3: Ajusta el tamaño de los fragmentos
Ajusta el tamaño de los fragmentos y la superposición durante la fase de indexación para optimizar la granularidad de los embeddings. Un tamaño de fragmento más pequeño puede conducir a embeddings más precisos, pero puede aumentar el tiempo de cómputo.
Consejo 4: Asignación de recursos
Asegúrate de que tu sistema tenga los recursos adecuados (CPU/GPU, memoria) para manejar el proceso de generación de embeddings, especialmente cuando uses modelos complejos. Novita AI GPU Instance ofrece una GPU rentable y de pago por uso para escalar tus innovaciones.

Además, Novita AI GPU Instance tiene acceso instantáneo a Jupyter, preinstalado con Tensorflow, Pytorch, cuDNN, CUDA, TensorRT, Llama3 y Stable Diffusion. Novita AI permite acceder a servicios de GPU en la nube directamente desde tu navegador.
Consejo 5: Mecanismos de caché
Implementa estrategias de almacenamiento en caché para almacenar embeddings generados previamente, evitando cómputos redundantes para textos ya procesados.
Consejo 6: Monitorea la carga del sistema
Mantén un ojo en la carga del sistema y optimiza el número de operaciones concurrentes para evitar la sobrecarga del sistema y asegurar un rendimiento consistente.
Integración con API LLM
Integrar LLM con un módulo de embeddings como llama_index.embeddings.huggingface ofrece ventajas significativas para tareas de procesamiento del lenguaje natural. Esta integración permite la creación de sistemas de Generación Aumentada por Recuperación (RAG) altamente eficientes y precisos al aprovechar embeddings de última generación que capturan los matices semánticos del texto. Aquí tienes una guía paso a paso para integrar con la API LLM de Novita AI:
1. Ve a novita.ai e inicia sesión
Puedes iniciar sesión con Google o GitHub. Se creará una nueva cuenta en tu primer inicio de sesión.
Alternativamente, puedes registrarte usando tu dirección de correo electrónico.

2. Administra la clave API
Novita AI autentica el acceso a la API mediante autenticación Bearer con una clave API en el encabezado de la solicitud, por ejemplo: “Authorization: Bearer {API Key}”.
Ve a “Key Management” en la configuración para administrar tus claves.
En tu primer inicio de sesión, se crea automáticamente una clave predeterminada. Puedes crear claves adicionales haciendo clic en “+ Add new key”.

3. Realiza la llamada a la API
Aquí tienes un ejemplo con el cliente de Python usando la API de Chat Completions de Novita AI.
pip install 'openai>=1.0.0'
from openai import OpenAI
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
# Obtén la clave API de Novita AI consultando: https://novita.ai/docs/get-started/quickstart.html#_2-manage-api-key.
api_key="<YOUR Novita AI API Key>",
)
model = "Nous-Hermes-2-Mixtral-8x7B-DPO"
stream = True # or False
max_tokens = 512
chat_completion_res = client.chat.completions.create(
model=model,
messages=[
{
"role": "system",
"content": "Act like you are a helpful assistant.",
},
{
"role": "user",
"content": "Hi there!",
}
],
stream=stream,
max_tokens=max_tokens,
)
if stream:
for chunk in chat_completion_res:
print(chunk.choices[0].delta.content or "", end="")
else:
print(chat_completion_res.choices[0].message.content)
Para más información, consulta la Referencia de la API de modelos de Novita AI.

4. Recarga crédito
Ofrecemos a los nuevos usuarios un cupón con algo de crédito para probar nuestros productos. Para agregar más crédito, visita Billing and Payments y sigue la guía de Payment Methods.
Conclusión
Integrar los embeddings de Hugging Face con LlamaIndex mejora significativamente las capacidades de tus sistemas RAG, proporcionando un marco robusto para manejar tareas complejas de PLN. Siguiendo los pasos descritos en esta guía, podrás configurar y ajustar tus modelos de embeddings sin problemas, seleccionar los modelos más adecuados para tus necesidades y optimizar el rendimiento a través de varios consejos y mejores prácticas.
Preguntas frecuentes
[Bug]: No module named ‘llama_index.embeddings.huggingface’
Ejecuta pip install llama-index-embeddings-huggingface
[Bug]: Cargar el modelo de embeddings desde Hugging Face en Llama Index genera un error de atributo
Verifica tu versión de torch: !python -c "import torch; print(torch.version)". Puede funcionar degradarla: !python -m pip install — upgrade torch==1.13.0
Novita AI es la plataforma integral en la nube que impulsa tus ambiciones de IA. APIs integradas, sin servidor, instancia de GPU: las herramientas rentables que necesitas. Elimina la infraestructura, comienza gratis y haz realidad tu visión de IA.
Lecturas recomendadas
¿Qué es RAG? Una introducción completa a la Generación Aumentada por Recuperación
