Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Nancychen2023/knowledge_api

Repository files navigation

活动规则知识库 API 服务

这是一个基于 Flask 和 Milvus 的知识库 API 服务,专门用于管理和检索活动规则信息。该服务可以作为外部知识库集成到 Dify 平台中。

功能特点

  • 基于语义的相似度搜索
  • 支持多行业数据导入和管理
    • 电商场景(商品、活动等)
    • 医疗场景(科室、医生等)
    • 教育场景(课程、教师等)
  • 通用知识库支持(Word文档格式)
  • 智能列名识别和映射
  • 实时数据更新
  • RESTful API 接口
  • API Key 认证
  • 跨域支持
  • 模板文件下载

系统要求

  • Python 3.8+
  • Milvus 2.3.11
  • Docker(用于运行 Milvus)

安装步骤

  1. 克隆项目并安装依赖:
git clone [项目地址]
cd knowledge_api
pip install -r requirements.txt
  1. 启动 Milvus 服务:
docker-compose up -d
  1. 启动 API 服务:
python api_server.py

API 接口说明

1. 检索接口

  • 端点:/retrieval
  • 方法:POST
  • 认证:Bearer Token
  • 请求体示例:
{
    "query": "LV有什么活动",
    "retrieval_setting": {
        "top_k": 3,
        "score_threshold": 0.5
    }
}

2. 数据更新接口

  • 端点:/upload
  • 方法:POST
  • 认证:Bearer Token
  • 格式:multipart/form-data
  • 参数:
    • file(Excel/Word文件)
    • industry_type(可选,用于Excel文件:default/medical/education)

3. 工作表查询接口

  • 端点:/sheets
  • 方法:GET
  • 返回所有可用的工作表列表

4. 模板下载接口

  • 端点:/download_template
  • 方法:GET
  • 返回通用知识库模板文件

认证

所有接口都需要通过 Bearer Token 认证:

Authorization: Bearer dify-activity-rules-api-key-2024

与 Dify 集成

  1. 在 Dify 平台创建外部知识库
  2. 配置 API 端点:http://your-domain/retrieval
  3. 设置 API Key
  4. 在工作流中添加知识检索节点
  5. 选择配置好的知识库

开发说明

项目结构

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 文件处理

数据格式说明

Excel 文件格式

支持多种行业场景的数据导入:

  1. 电商场景(默认)

    • 支持列名:类别、品牌名称、店铺活动等
    • 自动识别同义列名
  2. 医疗场景

    • 支持列名:科室、医生姓名、职称、擅长领域等
    • 智能匹配相似列名
  3. 教育场景

    • 支持列名:课程名称、教师姓名、上课时间等
    • 灵活的列名映射

Word 文件格式(通用知识库)

  • 使用 "#分类名" 标记知识分类
  • 使用 "Q:" 或 "问:" 开始问题
  • 使用 "A:" 或 "答:" 开始答案
  • 支持多行文本和富文本格式

部署说明

本地开发

# 启动服务
python api_server.py

# 使用 ngrok 进行外网映射
ngrok http 5005

生产环境

建议使用 gunicorn 或 uwsgi 作为 WSGI 服务器,并配置 nginx 作为反向代理。

注意事项

  1. API Key 应在生产环境中通过环境变量配置
  2. 定期备份 Milvus 数据
  3. 监控服务状态和日志
  4. 注意文件格式的一致性
  5. 建议使用模板文件确保数据格式正确

常见问题

  1. 端口占用:使用 lsof -i :5005 检查并关闭占用进程
  2. Milvus 连接:确保 Milvus 容器正常运行
  3. 文件上传:检查文件格式和权限
  4. 列名识别:参考模板文件或使用支持的同义列名

更新日志

  • 2024-02-xx:添加多行业支持
  • 2024-02-xx:新增通用知识库功能
  • 2024-02-xx:添加模板下载功能
  • 2024-01-xx:项目初始化
  • 2024-01-xx:添加文件上传功能
  • 2024-01-xx:完成 Dify 集成

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors