项目简介
本项目是基于Python构建的FAQ聊天机器人系统。使用Elasticsearch作为底层数据库来存储和检索知识库,借助PyTorch库和预训练模型进行文本向量化,通过FastAPI框架构建提供FAQ搜索功能的API服务。
项目的主要特性和功能
- 采用Elasticsearch存储和检索FAQ数据。
- 利用PyTorch库和预训练模型实现文本向量化。
- 通过FastAPI框架构建API服务,支持基于文本输入的搜索功能。
- 支持基于Docker的容器化部署,便于项目快速部署与扩展。
安装使用步骤
安装依赖
安装项目所需的Python库,如elasticsearch
、pytorch
、fastapi
、uvicorn
等。
配置Elasticsearch
根据项目需求,配置Elasticsearch的地址、索引名称等参数。
写入数据
设置环境变量:export PYTHONPATH=$(pwd)
,然后运行python vectorstore/es_index.py
创建索引并写入样例数据。若使用自己的数据集,需修改es_config.py
中的变量DATA_PATH
。
启动服务
运行server.py
脚本,启动基于FastAPI的服务器应用,监听指定端口。
测试服务
- 终端测试:执行
curl -X 'POST' 'http://127.0.0.1:8008/faq/search' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"text": "我最近长胖了,这让我有些尴尬,是否可以改善这一状况?"}'
。 - 脚本测试:运行
pytest test_server.py -k test_faq_search -v -s
。
并发测试
使用test_server_concurrency.py
脚本测试服务器的并发处理能力。
Docker部署
- 安装Docker,参考链接:Docker教程。
- 构建Docker镜像:在项目根目录下执行
docker build -t faq-chatbot:0.1 .
。 - 运行Docker容器:
docker run -itd -v $(pwd):/code -p 8008:7000 --name faq --net elastic faq-chatbot:0.1
。 - 进入容器:
docker exec -it faq /bin/bash
,退出容器使用exit
。 - 注意修改
es_basic.py
中的ES_URL
地址为elasticsearch容器的IP地址,可通过docker network inspect elastic
查看。 - 使用Docker Compose部署:
docker-compose up
。 - 再次测试服务,分别对应三个端口 7001、7002、7003:
curl -X 'POST' 'http://127.0.0.1:7001/faq/search' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"text": "我最近长胖了,这让我有些尴尬,是否可以改善这一状况?"}'
curl -X 'POST' 'http://127.0.0.1:7002/faq/search' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"text": "我最近长胖了,这让我有些尴尬,是否可以改善这一状况?"}'
curl -X 'POST' 'http://127.0.0.1:7003/faq/search' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"text": "我最近长胖了,这让我有些尴尬,是否可以改善这一状况?"}'
注意事项
- 根据项目需求调整Elasticsearch的配置和索引结构。
- 确保环境变量和路径设置正确。
- 在生产环境中,保证服务器的安全性和稳定性,如设置防火墙、限制访问权限等。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】