Este proyecto implementa un sistema de búsqueda semántica para productos usando Pinecone y Gradio.
- Búsqueda semántica: Encuentra productos por significado, no solo por palabras exactas
- Interfaz web amigable: Aplicación Gradio fácil de usar
- Filtros avanzados: Filtra por tipo de producto y score mínimo
- Rápido y escalable: Usa Pinecone para búsquedas vectoriales eficientes
- Actualizable: Agrega nuevos productos sin recrear todo el índice
- Python 3.9+
- Cuenta gratuita en Pinecone
- API Key de Pinecone
-
Clona o descarga este proyecto
-
Instala las dependencias:
pip install -r requirements.txt
-
Configura tu API Key de Pinecone:
export PINECONE_API_KEY="tu-api-key-aqui"
Tu archivo product.csv debe tener al menos las siguientes columnas:
product_name: Nombre del producto (requerido)type: Tipo/categoría del productoprice: Precioavailable: Disponibilidad (boolean)- Otras columnas opcionales según tus necesidades
Ejecuta este script una sola vez para crear el índice y cargar todos los productos:
python pinecone_indexer.pyEsto:
- Crea un índice en Pinecone
- Genera embeddings para todos los productos
- Los sube a Pinecone
- Guarda la configuración en
pinecone_config.json
python gradio_search_app.pyLa aplicación se abrirá automáticamente en tu navegador. Si no, ve a: http://localhost:7860
Si tienes nuevos productos para agregar:
- Crea un archivo
new_products.csvcon el mismo formato - Ejecuta:
python update_index.py
La búsqueda semántica entiende el significado, así que puedes buscar:
- ✅ "croissant de pistacho"
- ✅ "algo dulce para el desayuno"
- ✅ "postre sin azúcar"
- ✅ "snack crujiente y saludable"
- ✅ "regalo gourmet elegante"
En pinecone_indexer.py, cambia:
MODEL_NAME = 'sentence-transformers/all-MiniLM-L6-v2'Por cualquier modelo de Sentence Transformers.
Modifica gradio_search_app.py para:
- Cambiar colores/temas
- Agregar más filtros
- Modificar la visualización de resultados
- Indexación inicial: ~1-2 minutos por cada 10,000 productos
- Búsquedas: <0.5 segundos típicamente
- Límites plan gratuito:
- 5 índices máximo
- 2GB de almacenamiento
- Solo región us-east-1
- Asegúrate de haber ejecutado
pinecone_indexer.pyprimero
- Verifica tu PINECONE_API_KEY
- Asegúrate de que esté configurada como variable de entorno
- El script automáticamente limpia valores NaN
- Revisa los logs durante la indexación para ver qué columnas tienen problemas
- Documentación de Pinecone
- [Documentación de Grad