这是一个基于 Flask 和 Milvus 的知识库 API 服务,专门用于管理和检索活动规则信息。该服务可以作为外部知识库集成到 Dify 平台中。
- 基于语义的相似度搜索
- 支持多行业数据导入和管理
- 电商场景(商品、活动等)
- 医疗场景(科室、医生等)
- 教育场景(课程、教师等)
- 通用知识库支持(Word文档格式)
- 智能列名识别和映射
- 实时数据更新
- RESTful API 接口
- API Key 认证
- 跨域支持
- 模板文件下载
- Python 3.8+
- Milvus 2.3.11
- Docker(用于运行 Milvus)
- 克隆项目并安装依赖:
git clone [项目地址]
cd knowledge_api
pip install -r requirements.txt- 启动 Milvus 服务:
docker-compose up -d- 启动 API 服务:
python api_server.py- 端点:
/retrieval - 方法:POST
- 认证:Bearer Token
- 请求体示例:
{
"query": "LV有什么活动",
"retrieval_setting": {
"top_k": 3,
"score_threshold": 0.5
}
}- 端点:
/upload - 方法:POST
- 认证:Bearer Token
- 格式:multipart/form-data
- 参数:
- file(Excel/Word文件)
- industry_type(可选,用于Excel文件:default/medical/education)
- 端点:
/sheets - 方法:GET
- 返回所有可用的工作表列表
- 端点:
/download_template - 方法:GET
- 返回通用知识库模板文件
所有接口都需要通过 Bearer Token 认证:
Authorization: Bearer dify-activity-rules-api-key-2024
- 在 Dify 平台创建外部知识库
- 配置 API 端点:
http://your-domain/retrieval - 设置 API Key
- 在工作流中添加知识检索节点
- 选择配置好的知识库
knowledge_api/
├── api_server.py # API 服务主程序
├── data_processor.py # 数据处理模块
├── docker-compose.yml # Milvus 容器配置
├── requirements.txt # 项目依赖
├── templates/ # 模板文件目录
└── uploads/ # 文件上传临时目录
- Flask:Web 框架
- Milvus:向量数据库
- SentenceTransformer:文本向量化模型
- pandas:Excel 文件处理
- python-docx:Word 文件处理
支持多种行业场景的数据导入:
-
电商场景(默认)
- 支持列名:类别、品牌名称、店铺活动等
- 自动识别同义列名
-
医疗场景
- 支持列名:科室、医生姓名、职称、擅长领域等
- 智能匹配相似列名
-
教育场景
- 支持列名:课程名称、教师姓名、上课时间等
- 灵活的列名映射
- 使用 "#分类名" 标记知识分类
- 使用 "Q:" 或 "问:" 开始问题
- 使用 "A:" 或 "答:" 开始答案
- 支持多行文本和富文本格式
# 启动服务
python api_server.py
# 使用 ngrok 进行外网映射
ngrok http 5005建议使用 gunicorn 或 uwsgi 作为 WSGI 服务器,并配置 nginx 作为反向代理。
- API Key 应在生产环境中通过环境变量配置
- 定期备份 Milvus 数据
- 监控服务状态和日志
- 注意文件格式的一致性
- 建议使用模板文件确保数据格式正确
- 端口占用:使用
lsof -i :5005检查并关闭占用进程 - Milvus 连接:确保 Milvus 容器正常运行
- 文件上传:检查文件格式和权限
- 列名识别:参考模板文件或使用支持的同义列名
- 2024-02-xx:添加多行业支持
- 2024-02-xx:新增通用知识库功能
- 2024-02-xx:添加模板下载功能
- 2024-01-xx:项目初始化
- 2024-01-xx:添加文件上传功能
- 2024-01-xx:完成 Dify 集成