该项目是使用检索型生成(RAG)方法构建的电子商务聊天机器人。 RAG结合了信息检索和生成语言模型的力量,使聊天机器人能够基于存储在矢量数据库中的广泛的产品相关信息提供准确和上下文感知的响应。我们使用兰班链作为管理聊天机器人组件的框架,并有效地协调检索生成流程。
聊天机器人采用Llama3.1-8B ,这是一种大型语言模型,其能力能够理解细微的上下文并产生连贯的响应。为了提高检索性能,该项目利用HuggingFace的句子转换器/全MPNET-BASE-V2模型生成的嵌入。这些嵌入式编码语义含义,使聊天机器人能够根据用户查询快速检索相关的产品数据。嵌入在AstradB中存储和管理,该嵌入是一个高性能向量数据库。
为了提供连贯的,上下文感知的响应,聊天机器人使用了历史吸引的抹布方法。通过将聊天历史记录纳入每个交互中,该模型可以理解对先前消息的引用,并在多个转弯之间保持连续性。 Langchain的历史管理功能通过允许每个用户会话的聊天历史记录进行状态管理,从而使此过程无缝。
该项目中使用的数据集包括来自电子商务平台Flipkart的产品评论。该数据集包括产品标题,评分和详细评论,并为各种产品提供了全面的客户反馈视图。该数据集的主要目的是为聊天机器人的检索功能提供动力,使其能够参考现实世界中的产品情感,功能和客户体验。每个审查都作为文档对象存储在兰链中,其中包含评论作为内容和产品名称作为元数据。该数据集作为矢量商店摄入了Astradb ,从而实现了相似性搜索,这些搜索将用户查询与相关评论匹配,从而增强了聊天机器人的建议和响应。
前端是使用HTML , CSS和JavaScript创建的响应式Web界面,旨在提供直观的聊天体验。用户可以与聊天机器人进行互动以咨询产品详细信息并接收个性化建议。该界面具有CSS的样式,具有现代渐变背景和结构化的聊天框,在该聊天框中,用户消息和机器人响应实时显示。
鉴于该模型的大尺寸,使用Llama 3.1-8B生成响应有时可能会超过默认的1分钟服务器超时限制。为了管理这一点,我们实施了Redis作为消息经纪和芹菜的背景任务管理。当用户提交查询时,聊天机器人会触发芹菜任务,该任务异步地处理响应,从而使前端可以定期进行响应状态进行轮询。此方法有效地防止了服务器超时错误,同时确保用户在不中断的情况下收到响应。
聊天机器人部署在AWS EC2上,为运行模型,处理用户交互以及管理数据库的检索提供了一个可扩展且可靠的环境。
该项目的数据集取自Kaggle。这是数据集链接。该项目中使用的数据集包含450个产品评论,内容涉及从Flipkart收集的不同品牌的耳机,Erabuds和其他产品,包括以下关键功能:
数据集名称:flipkart_dataset 列数:5 记录数:450
该代码用Python 3.10.15编写。如果您没有安装Python,则可以在这里找到它。如果您使用的是较低版本的Python,则可以使用PIP软件包升级,以确保您拥有最新版本的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.txt或者
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:8080这个电子商务聊天机器人通过抹布方法结合了检索和生成,提供了智能的互动购物体验,并根据实际的客户评论提供了相关的产品建议。
Llama 3.1的大型语言模型和拥抱面嵌入能够启用细微响应,从而通过上下文意识到的对话来增强用户参与度。
用Redis和芹菜处理有效的响应处理可解决高性能应用程序的需求,即使使用大型LLM,也可以确保稳定,响应迅速的用户体验。
完全可扩展的AWS EC2部署允许无缝集成到电子商务平台,为高流量环境提供了强大的基础架构。
该项目展示了大型语言模型的强大应用,并在电子商务域中突破了聊天机器人功能的界限。