Este proyecto es un chatbot de comercio electrónico construido utilizando un enfoque de generación de recuperación (RAG) . RAG combina el poder de la recuperación de información y los modelos de lenguaje generativo, lo que permite que el chatbot proporcione respuestas precisas y conscientes del contexto basadas en información extensa relacionada con el producto almacenada en una base de datos vectorial. Utilizamos Langchain como marco para administrar los componentes del chatbot y orquestar el flujo de generación de recuperación de manera eficiente.
El chatbot emplea a Llama3.1-8b , un modelo de lenguaje grande conocido por su capacidad para comprender el contexto matizado y generar respuestas coherentes. Para mejorar el rendimiento de la recuperación, el proyecto aprovecha los incrustaciones generados por el modelo de transformadores de oraciones de Huggingface/All-MPNET-Base-V2 . Estas incrustaciones codifican el significado semántico, lo que permite al chatbot recuperar los datos relevantes del producto rápidamente en función de las consultas de los usuarios. Las integridades se almacenan y se administran en Astradb , que sirve como una base de datos de vectores de alto rendimiento.
Para proporcionar respuestas coherentes y conscientes del contexto, el chatbot utiliza un enfoque de trapo consciente de la historia. Al incorporar el historial de chat en cada interacción, el modelo puede comprender las referencias a mensajes anteriores y mantener la continuidad en múltiples vueltas. Las características de gestión del historial de Langchain hacen que este proceso sea perfecto al permitir la gestión estestina del historial de chat para cada sesión de usuario.
El conjunto de datos utilizado en este proyecto comprende revisiones de productos procedentes de Flipkart , una plataforma de comercio electrónico. El conjunto de datos incluye títulos de productos, calificaciones y revisiones detalladas, que ofrecen una visión integral de los comentarios de los clientes en varios productos. El propósito principal de este conjunto de datos es alimentar las capacidades de recuperación del chatbot, lo que le permite hacer referencia a sentimientos, características y experiencias del cliente del mundo real. Cada revisión se almacena como un objeto de documento dentro de Langchain , que contiene la revisión como contenido y el nombre del producto como metadatos. El conjunto de datos se ingiere en ASTRADB como una tienda vectorial, lo que permite búsquedas de similitud que coinciden con las consultas de los usuarios con revisiones relevantes, mejorando las recomendaciones y respuestas del chatbot.
The Frontend es una interfaz web receptiva creada utilizando HTML , CSS y JavaScript , diseñada para proporcionar una experiencia de chat intuitiva. Los usuarios pueden interactuar con el chatbot para consultar sobre los detalles del producto y recibir recomendaciones personalizadas. La interfaz está diseñada con CSS , con un fondo de gradiente moderno y un cuadro de chat estructurado donde los mensajes de usuario y las respuestas de BOT se muestran en tiempo real.
Dado el gran tamaño del modelo, generar respuestas con LLAMA 3.1-8B ocasionalmente puede exceder el límite predeterminado de tiempo de espera del servidor de 1 minuto . Para administrar esto, implementamos Redis como corredor de mensajes y apio para la gestión de tareas de fondo. Cuando un usuario envía una consulta, el chatbot desencadena una tarea de apio que procesa la respuesta de forma asincrónica , lo que permite que el frontend encueste periódicamente el estado de respuesta. Este método evita efectivamente los errores de tiempo de espera del servidor al tiempo que garantiza que los usuarios reciban respuestas sin interrupciones.
El chatbot se implementa en AWS EC2 , proporcionando un entorno escalable y robusto para ejecutar el modelo, manejar las interacciones del usuario y administrar las recuperaciones de la base de datos.
El conjunto de datos para este proyecto se toma de Kaggle. Aquí está el enlace del conjunto de datos. El conjunto de datos utilizado en este proyecto contiene 450 revisiones de productos sobre diferentes marcas de auriculares, erabuds y otros recopilados de Flipkart, incluidas las siguientes características clave:
Nombre del conjunto de datos: flipkart_dataset Número de columnas: 5 Número de registros: 450
El código está escrito en Python 3.10.15. Si no tiene Python instalado, puede encontrarlo aquí. Si está utilizando una versión inferior de Python, puede actualizar con el paquete PIP, asegurando que tenga la última versión de PIP.
git clone https://github.com/jatin-12-2002/E-Commerce_ChatBot cd E-Commerce_ChatBotconda create -p env python=3.10 -y source activate ./envpip install -r requirements.txtASTRA_DB_API_ENDPOINT= " "
ASTRA_DB_APPLICATION_TOKEN= " "
ASTRA_DB_KEYSPACE= " "
HF_TOKEN= " "curl -fsSL https://ollama.com/install.sh | shollama serveollama pull llama3.1:8bsudo apt-get updatesudo apt-get install redis-serversudo service redis-server startredis-cli pingcelery -A app.celery worker --loglevel=infogunicorn -w 2 -b 0.0.0.0:8000 app:apphttp://localhost:8000/



Use t2.large or greater size instances only as it is a GenerativeAI using LLMs project.sudo apt-get updatesudo apt update -ysudo apt install git nginx -ysudo apt install git curl unzip tar make sudo vim wget -ygit clone https://github.com/jatin-12-2002/E-Commerce_ChatBot cd E-Commerce_ChatBottouch .envvi .envASTRA_DB_API_ENDPOINT= " "
ASTRA_DB_APPLICATION_TOKEN= " "
ASTRA_DB_KEYSPACE= " "
HF_TOKEN= " "cat .envsudo apt install python3-pippip3 install -r requirements.txtO
pip3 install -r requirements.txt --break-system-packagesgunicorn -w 2 -b 0.0.0.0:8000 app:appsudo nano /etc/nginx/sites-available/defaultserver {
listen 80 ;
server_name your-ec2-public-ip ;
location / {
proxy_pass http://127.0.0.1:8000 ;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header X-Forwarded-Proto $scheme ;
}
}sudo systemctl restart nginxsudo nano /etc/systemd/system/gunicorn.service[Unit]
Description=Gunicorn instance to serve my project
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/E-Commerce_ChatBot_Project
ExecStart=/usr/bin/gunicorn --workers 4 --bind 127.0.0.1:8000 app:app
[Install]
WantedBy=multi-user.targetsudo systemctl start gunicornsudo systemctl enable gunicorngunicorn -w 2 -b 0.0.0.0:8000 app:appPublic_Address:8080Este chatbot de comercio electrónico proporciona una experiencia de compra inteligente e interactiva a través de un enfoque de RAG que combina la recuperación y la generación, ofreciendo recomendaciones de productos relevantes basadas en revisiones reales de los clientes.
El modelo de lenguaje grande de Llama 3.1 y las incrustaciones de Huggingface permiten respuestas matizadas, mejorando la participación del usuario con conversaciones contextualmente conscientes.
El manejo de respuesta eficiente con Redis y Celery aborda las demandas de una aplicación de alto rendimiento, asegurando experiencias de usuario estables y receptivas incluso con grandes LLM .
Una implementación de AWS EC2 totalmente escalable permite una integración perfecta en plataformas de comercio electrónico, que ofrece una infraestructura robusta para entornos de alto tráfico.
Este proyecto muestra una poderosa aplicación de modelos de idiomas grandes , empujando los límites de las capacidades de chatbot en el dominio de comercio electrónico.