first commit

This commit is contained in:
phezzan 2024-12-16 11:22:52 +08:00
commit e70e2878c4
9 changed files with 684 additions and 0 deletions

BIN
接口文档.docx Normal file

Binary file not shown.

370
接口文档.md Normal file
View File

@ -0,0 +1,370 @@
# 小维AI问答系统接口文档
## 1. /upload_qa
- **方法**: POST
- **描述**: 该端点用于上传问答文件。上传的文件可以是 `.txt`, `.md`, `.xls`, `.xlsx` 格式。系统会对上传的文件进行以下处理:
- 文本分割:将大文本拆分为小段落以提高向量化的效率。
- 向量化:使用嵌入模型将文本转化为向量。
- 存储:将向量和元数据存储到数据库和本地向量文件中。
- **异步处理**:若上传文件较大,处理可能耗时较长,任务会以异步方式执行,前端需通过 `/task_status/<task_id>` 查询任务状态。
- **请求参数**:
- `token` (Header): 用户的身份验证令牌。
- `method` (FormData): 上传操作的类型,如 `create``delete`
- `qa_name` (FormData): 问答库的名称。
- `private_flag` (FormData): 问答库的私有标志整数1 表示私有0 表示公开)。
- `files` (FormData): 上传的文件列表。
- **返回值**:
```json
{
"code": 1,
"message": "任务已提交",
"task_id": "unique-task-id",
"qa_name": "知识库名称",
"time_left": "预计剩余时间(秒)"
}
```
---
## 2. /operate_qa
- **方法**: POST
- **描述**: 该端点用于操作向量库,包括以下功能:
- 查询问答库中的文件或内容。
- 编辑现有问答记录。
- 删除指定问答内容。
- 新增问答记录。
- **请求参数**:
- `token` (Header): 用户的身份验证令牌。
- `method` (JSON): 操作类型,支持以下值:
- `list_qa_files`: 列出问答库中的文件。
- `list_qa_content`: 列出问答内容。
- `query_qa_content`: 根据条件查询问答内容。
- `edit_qa_content`: 编辑问答内容。
- `delete_qa_content`: 删除指定问答内容。
- `add_qa_content`: 新增问答内容。
- `query_fields` (JSON): 查询条件字段(用于精确匹配)。
- `fuzzy_fields` (JSON): 模糊查询字段(仅对 `query_qa_content` 有效)。
- `edit_fields` (JSON): 编辑字段(仅对 `edit_qa_content` 有效)。
- **返回值**:
```json
{
"code": 1,
"message": "操作成功",
"records": [
{
"sys_id": "记录ID",
"question": "问题内容",
"answer": "回答内容",
"qa_name": "知识库名称",
"source": "来源文件名",
"raw_text": "原始文本",
"score": "相似度分数"
}
]
}
```
---
## 3. /chat_qa
- **方法**: POST
- **描述**: 用户可以通过该端点与问答系统进行交互。系统会根据用户输入的问题,从向量库中查找最相关的问答记录并返回结果。
- **请求参数**:
- `token` (Header): 用户的身份验证令牌。
- `qa_name` (JSON): 问答库的名称(支持多个)。
- `query` (JSON): 用户输入的问题。
- `uuid` (JSON): 用户会话的唯一标识符(可选)。
- **返回值**:
```json
{
"code": 1,
"message": "问题答案",
"qa_name": "相关知识库",
"source": "来源文件名",
"flag": true,
"related_content": [
{
"question": "相关问题",
"answer": "相关回答",
"qa_name": "知识库名称",
"source": "来源文件名",
"score": "相似度分数"
}
]
}
```
---
## 4. /task_status/<task_id>
- **方法**: GET
- **描述**: 查询后台任务的状态。通过任务 ID 检查任务的执行情况。
- **请求参数**:
- `task_id` (Path): 任务的唯一标识符。
- **返回值**:
```json
{
"code": 200,
"message": "任务已完成",
"status": "SUCCESS"
}
```
或:
```json
{
"code": 200,
"message": "后台任务正在运行",
"status": "PENDING"
}
```
---
## 5. /change_question
- **方法**: POST
- **描述**: 用户可以通过该端点更改问题的内容,系统会返回相关的问答记录。
- **请求参数**:
- `qa_name` (JSON): 问答库的名称(支持多个)。
- `query` (JSON): 用户输入的问题。
- `cur_page` (JSON): 当前页码(默认为 1
- **返回值**:
```json
{
"code": 1,
"message": "",
"flag": true,
"related_content": [
{
"question": "相关问题",
"answer": "相关回答",
"qa_name": "知识库名称",
"source": "来源文件名",
"score": "相似度分数"
}
],
"question_counts": "相关问题总数",
"cur_page": 1
}
```
---
## 6. /default_answers
- **方法**: POST
- **描述**: 管理默认回答,包括新增、更新、删除和查询。
- **请求参数**:
- `token` (Header): 用户的身份验证令牌。
- `method` (JSON): 操作类型(`add`, `update`, `delete`, `list`)。
- `qa_name` (JSON): 知识库的名称。
- `answer` (JSON): 默认回答内容(新增或更新时必填)。
- `keywords` (JSON): 关键字(可选)。
- **返回值**:
```json
{
"code": 1,
"message": "操作成功",
"data": [
{
"sys_id": "回答ID",
"answer": "回答内容",
"keywords": "相关关键字",
"create_time": "创建时间"
}
]
}
```
---
## 7. /transfer_qa
- **方法**: POST
- **描述**: 将问答记录从一个知识库转移到另一个知识库。
- **请求参数**:
- `token` (Header): 用户的身份验证令牌。
- `target_qa` (JSON): 目标知识库的名称。
- `qa_ids` (JSON): 要转移的问答记录 ID 列表。
- **返回值**:
```json
{
"code": 1,
"message": "成功转移 3 条问答对",
"data": {
"transferred_records": [
{
"sys_id": "记录ID",
"question": "问题",
"answer": "答案",
"source_qa": "源知识库"
}
],
"target_qa": "目标知识库"
}
}
```
---
## 8. /update_qa_fields
- **方法**: POST
- **描述**: 更新问答记录的字段。
- **请求参数**:
- `token` (Header): 用户的身份验证令牌。
- `sys_id` (JSON): 要更新的问答记录的 ID。
- `answer_type` (JSON): 新的答案类型。
- `category` (JSON): 新的分类。
- **返回值**:
```json
{
"code": 1,
"message": "更新成功",
"data": {
"sys_id": "记录ID",
"question": "问题",
"answer_type": "新答案类型",
"category": "新分类"
}
}
```
---
## 数据结构描述
### 数据库结构
- **Roles**: 用户角色表,包含角色 ID 和角色名称。
- **Users**: 用户表,包含用户 ID、账号、密码哈希和角色 ID。
- **QAKnowledge**: 问答知识库表,包含问题、答案、来源、知识库名称等。
- **DefaultAnswers**: 默认回答表,包含默认回答 ID、回答内容、关键字等。
- **DefaultAnswerConfig**: 默认回答配置表,包含配置的回答 ID 列表、随机使用标志等。
---
## 交互逻辑
1. **前端应用**: 用户通过前端应用发送请求。
2. **Java 服务**: 接收请求并调用本服务的 API。
3. **本服务**: 处理 API 请求并返回结果。
4. **数据库更新**: Java 服务和本服务分别更新其数据库。
```mermaid
graph TD;
A[前端应用] -->|发送请求| B[Java 服务]
B -->|处理请求| C[本服务]
C -->|返回结果| B
B -->|返回结果| A
A -->|用户输入| B
B -->|更新数据库| D[Java 服务数据库]
C -->|更新数据库| E[本服务数据库]
```
在上述代码中,涉及 **异步操作** 的部分主要集中在需要执行时间较长的任务,例如文件处理、向量化、模型预测等。以下是需要前端轮询 `task_status` 以获取任务完成状态的部分,以及每个部分的详细说明。
---
## **异步操作**
### 1. **`upload_qa` 方法的异步任务**
```python
future = executor.submit(add_qa_task_, upload_path, vs_path, create_id, private_flag, file_list, hash_list, qa_name)
tasks[task_id] = future
```
**描述**
- 在 `upload_qa` 接口中,`add_qa_task_` 函数通过 `ThreadPoolExecutor` 异步执行。
- 该任务负责对上传的文件进行处理,包括文本加载、拆分、向量化、存储和数据库操作。
- 返回的 `task_id` 供前端使用,通过轮询 `/task_status/<task_id>` 获取任务进度。
**需要轮询字段**
- `task_id`: 任务唯一标识。
- 状态值包括:
- `PENDING`: 正在处理。
- `SUCCESS`: 完成。
- `ERROR`: 出错。
---
### 2. **`test_qa` 方法的异步任务**
```python
future = executor.submit(add_qa_task_, upload_path, vs_path, 3, False, file_list, hash_list, 'test')
tasks[task_id] = future
```
**描述**
- 用于测试上传和处理文件的功能,逻辑与 `upload_qa` 类似。
- 前端需要通过 `task_id` 查询任务状态。
**需要轮询字段**
- 同上,`task_id` 是关键字段。
---
### **通用异步任务的状态查询接口**
#### `task_status` 接口
```python
@app.route('/task_status/<task_id>', methods=['GET'])
def task_status(task_id):
...
if task.done():
...
ret_dict['status'] = "SUCCESS" if result else "ERROR"
else:
ret_dict['status'] = "PENDING"
```
**描述**
- 通用接口,用于查询所有异步任务的状态。
- 返回值 `status` 表示任务的当前状态:
- `PENDING`: 任务尚未完成。
- `SUCCESS`: 任务成功完成。
- `ERROR`: 任务失败。
---
### **轮询场景详细说明**
1. **轮询间隔**
- 前端每隔 1-2 秒向 `/task_status/<task_id>` 发起一次请求。
- 使用任务完成 (`SUCCESS` 或 `ERROR`) 的响应作为停止轮询的标志。
2. **任务完成后的操作**
- **任务成功 (`SUCCESS`)**
- 显示任务处理完成的消息。
- 根据任务结果更新页面数据或触发后续操作。
- **任务失败 (`ERROR`)**
- 显示失败原因,允许用户重新发起任务。
3. **接口使用示例**
- `GET /task_status/<task_id>`
- **请求参数**`task_id`。
- **响应示例**
```json
{
"code": 200,
"message": "后台任务已完成",
"status": "SUCCESS"
}
```
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

BIN
系统架构.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

BIN
系统部署图.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

BIN
维达AI建议.pdf Normal file

Binary file not shown.

BIN
维达文档.docx Normal file

Binary file not shown.

193
维达文档.md Normal file
View File

@ -0,0 +1,193 @@
# 维达系统设计文档
## 1. 系统架构设计
描述系统各模块之间的数据交互与流程,需标注数据交互模块的名称和方式,具体设计如下:
- **数据交互模块**
- 模块间通过 RESTful API 实现数据交互。
- 数据传输方式采用 JSON 格式。
- **关键模块**
- 用户管理模块:包括用户注册、登录和权限分配。
- 问答知识库模块:提供问答记录存储、查询和更新功能。
- 文件管理模块:实现文件的上传、解析和存储。
- 向量化模块:将文本内容进行向量化处理,便于相似度计算。
- 任务管理模块:负责异步任务的状态跟踪。
---
## 2. 系统部署的服务器架构
系统基于分布式部署,架构如下:
- **应用服务器**:运行 Flask 应用,提供 API 服务。
- **数据库服务器**:采用 MySQL存储用户数据、知识库数据和日志记录。
- **端口分配**
- 应用服务器端口:`5103`
- 数据库服务端口:默认 MySQL 端口 `3306`
**相关源代码文件**
- `mainserver.py`Flask 应用的入口文件。
- `config.py`:存储配置文件,包括数据库连接等信息。
---
## 3. 系统功能的业务流程和标准流程步骤
### 核心功能:
#### 1用户管理
- **业务流程**
1. 用户通过 `/regist` 进行注册。
2. 系统校验用户输入信息,若无冲突则写入数据库。
3. 用户通过 `/login` 登录,返回权限标识。
- **实现文件**
- `mainserver.py`:包含用户注册和登录的逻辑。
- 数据表:
- `users`:存储用户账号及密码。
#### 2问答知识库管理
- **业务流程**
1. 用户上传问答文件,通过 `/upload_qa` 接口。
2. 系统解析文件,分割内容并存储到数据库。
3. 用户通过 `/operate_qa` 查询、编辑、删除问答记录。
4. 问答检索通过 `/chat_qa` 完成,支持模糊查询。
- **实现文件**
- `mainserver.py`:包含问答知识库的解析和存储逻辑。
- 数据表:
- `qa_knowledge`:存储问答记录。
#### 3向量化处理
- **业务流程**
1. 上传的文本内容由 `add_qa_task_` 方法解析。
2. 使用 FAISS 向量化文本并存储。
3. 系统通过 `task_status` 查询向量化任务状态。
- **实现文件**
- `mainserver.py`:包含向量化处理的异步逻辑。
- 数据表:
- `qa_knowledge`:存储向量化的文本及相关元数据。
---
## 4. 系统中所有表、字段的说明和表关联
### 1Roles 表
- **表名**`roles`
- **字段描述**
- `id` (int):主键,角色 ID。
- `name` (string):角色名称。
### 2Users 表
- **表名**`users`
- **字段描述**
- `id` (int):主键,用户 ID。
- `account` (string):用户账号。
- `password_hash` (string):用户密码哈希。
- `roles` (int):关联的角色 ID。
### 3History 表
- **表名**`history`
- **字段描述**
- `id` (int):主键,历史记录 ID。
- `account` (string):用户账号。
- `history` (JSON):操作历史。
- `datetime` (datetime):操作时间。
- `uuid` (string):操作标识符。
### 4LocalKnowledge 表
- **表名**`local_knowledge`
- **字段描述**
- `id` (int):主键,知识库 ID。
- `name` (string):知识库名称。
- `files` (JSON):文件列表。
- `create_id` (int):创建者 ID。
- `private_flag` (boolean):是否为私有。
### 5QAKnowledge 表
- **表名**`qa_knowledge`
- **字段描述**
- `sys_id` (int):主键,系统 ID。
- `question` (text):问题内容。
- `answer` (LONGTEXT):答案内容。
- `source` (string):来源。
- `qa_name` (string):问答库名称。
- `create_id` (int):创建者 ID。
- `private_flag` (boolean):是否为私有。
- `delete_flag` (boolean):是否被删除。
- `hash` (string):哈希值。
- `raw_text` (text):原始文本。
- `score` (float):相似度得分。
- `answer_type` (string):回答类型。
- `category` (string):问题分类。
---
## 5. 接口之间交互设计
### 接口设计文档:
#### 1/upload_qa
- 用于上传问答文件,返回处理任务 ID。
#### 2/operate_qa
- 对问答库进行操作,包括增删改查。
#### 3/task_status
- 查询上传问答文件的任务状态。
**系统架构图**
```mermaid
graph TD;
A[前端] -->|API 请求| B[Flask 应用]
B -->|数据库交互| C[MySQL 数据库]
B -->|文件处理| D[文件存储]
```
---
## 6. 相关代码
### 1. **核心 Flask 应用文件**
- **文件名**`mainserver.py`
- **功能**:处理 API 路由逻辑,包含核心业务流程的实现,包括用户验证、问答逻辑、文件上传处理、异步任务管理等。
### 2. **数据库模型定义文件**
- **文件名**`db_models.py`
- **功能**:定义系统所用的数据库表结构及模型,包括用户表、问答知识库表、历史记录表等。
### 3. **配置文件**
- **文件名**`config.py`
- **功能**存储系统的全局配置参数包括数据库连接信息、API 密钥等。
---
## 代码清单
### **主文件mainserver.py**
- 负责处理核心路由和业务逻辑。
- 示例代码:
```python
@app.route("/chat_qa", methods=['POST'])
def chat_qa():
token = request.headers.get('token')
auth_dict = authaccess(token)
if auth_dict['code'] != 200:
return {"code": auth_dict['code'], "message": auth_dict['msg']}, auth_dict['code']
# 核心逻辑省略...
```
### **数据库模型db_models.py**
- 定义所有数据库表结构。
- 示例代码:
```python
class QAKnowledge(db.Model):
__tablename__ = 'qa_knowledge'
sys_id = db.Column(db.Integer, primary_key=True)
question = db.Column(db.Text, comment="问题文本")
answer = db.Column(LONGTEXT, comment="答案文本")
# 其他字段...
```
### **配置文件config.py**
- 示例配置:
```python
class Config:
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://user:password@localhost/dbname"
SECRET_KEY = "your_secret_key"
```
---

121
维达未来.md Normal file
View File

@ -0,0 +1,121 @@
# HR AI 应用场景落地与 HR 大数据及数据分析可行性分析
## 1. 当前 AI 技术能力与现状
### **1.1 小维 AI 的当前能力**
- **技术基础**:目前使用的是九鑫自研的 LLM大语言模型参数规模为 **6B**,在特定业务场景下表现稳定。
- **能力对比**:与通用 AI如 ChatGPT相比小维 AI 在通用对话能力上有一定局限性,但具备专注于业务场景应用的优势。
- **核心应用**
- **智能问答**:基于 HR 数据库,支持常见 HR 问题的自动化应答。
- **文本解析**:能够处理和解析 HR 文档(如政策、规章制度等)。
### **1.2 技术潜力与挖掘方向**
目前小维 AI 具有未被充分利用的潜力,尤其在以下几个方面:
1. **情感分析与用户需求把握**
- 在问答过程中,可以通过 NLP 技术识别用户的情绪状态,优化用户体验,提高服务满意度。
- 例如,候选人对于 HR 问题的提问情绪分析,可帮助 HR 进行更精准的沟通策略调整。
2. **简历自动筛查与初步评估**
- 基于 LLM 与规则引擎的结合,对候选人简历进行初步筛查和分类,匹配岗位需求。
- 优势:提高招聘效率,减轻 HR 人工筛查的压力。
3. **场景化任务扩展**
- 除问答场景外,还可以扩展到更复杂的任务,比如**面试问卷自动生成**、**入职流程自动化指引**等。
---
## 2. 非 LLM 的 AI 应用场景
除大语言模型LLM还有多种可行的 AI 技术在 HR 场景落地中具备实际价值:
### **2.1 智能推荐系统**
- **应用**
- 面向候选人的**职位推荐系统**:根据候选人简历与岗位需求匹配度进行智能推荐。
- 面向 HR 的**人才推荐系统**:自动筛选最符合岗位需求的候选人名单。
- **技术支持**:结合机器学习算法(如协同过滤、内容推荐、深度学习),实现人岗精准匹配。
- **效果**:提升招聘效率,缩短招聘周期。
### **2.2 HR 数据分析与可视化**
- **应用**
- **员工流动性分析**:预测离职率,帮助 HR 提前采取留人策略。
- **绩效与培训效果分析**:通过数据分析评估培训的 ROI 和绩效提升效果。
- **薪酬与福利优化**:通过大数据分析优化薪酬体系,提升员工满意度。
- **技术支持**:结合数据挖掘与 BI商业智能工具提供可视化分析报告。
### **2.3 面向 HR 的智能助手**
- **应用**
- **日常行政自动化**:如自动化会议记录、员工反馈收集与整理。
- **智能问卷与调查工具**:自动生成员工满意度调查、入职评估等问卷,并进行结果分析。
- **效果**:降低 HR 的事务性工作压力,释放精力用于战略性工作。
---
## 3. 专门定制的 AI 应用场景
根据 HR 的需求,我们还可以提供定制化 AI 解决方案,具体包括:
### **3.1 招聘流程自动化平台**
- 从**职位发布**、**简历筛选**、**面试管理**到**结果评估**的一站式自动化平台。
- **优势**
- 提高招聘效率,缩短流程周期。
- 通过 AI 技术与数据分析帮助 HR 做出更精准的决策。
### **3.2 企业文化与员工关怀系统**
- 通过情感分析与自然语言处理技术,自动识别员工情绪,优化员工沟通策略。
- 提供员工关怀方案,如生日提醒、工作纪念日自动化推送等。
### **3.3 基于 HR 数据的大数据预测分析**
- **员工绩效预测**:通过历史数据和当前表现,预测员工未来的绩效和发展潜力。
- **流失风险预警**:基于员工行为数据,预测流失风险并提供应对建议。
- **培训效果跟踪与优化**:自动化跟踪培训数据,输出效果评估报告,优化后续培训内容。
---
## 4. 系统功能分拆与整合建议
### **4.1 HR AI 应用场景落地**
主要关注 AI 模型在招聘、绩效管理、员工关怀等核心场景中的实际落地与应用,强调技术与业务场景的紧密结合。
### **4.2 HR 大数据与数据分析**
- 专注于数据的采集、清洗、分析和可视化,结合 AI 技术提供数据驱动的决策支持。
- **核心模块**
- 数据存储与管理(如 MySQL、数据仓库等
- 分析与建模(如员工流动分析、绩效预测等)。
- 可视化展示(如 Tableau、Power BI 等)。
### **4.3 合并与分拆建议**
- **分开实施**:对于需求明确的企业,可以将 **AI 应用****大数据分析** 独立实施,分别落地部署。
- **整合实施**:对于具备更大数据基础和技术整合需求的企业,可以将 AI 技术与大数据分析融合,实现一体化 HR 智能管理系统。
---
## 5. 合作模式建议
### **5.1 技术咨询与场景共创**
- 提供技术咨询服务帮助维达HR梳理业务需求定制 AI 应用场景解决方案。
- 与维达HR共创特定场景的落地实施进行持续迭代优化。
### **5.2 产品定制与部署**
- 提供现有产品的定制化开发与二次部署确保符合维达HR业务需求。
- 提供端到端的解决方案,包含需求分析、开发、部署与后续运维支持。
### **5.3 数据合作与算法优化**
- 在大数据合作基础上,优化现有算法,提升模型效果。
- 提供数据分析与报告服务帮助维达HR实现数据驱动的 HR 战略目标。
---
## 6. 总结
本次可行性分析表明,九鑫的小维 AI 具备在 HR 领域进行场景化落地的能力,且潜力巨大。在**问答交互**、**智能推荐**、**情感分析**等领域已有技术基础,同时可以结合大数据分析进一步拓展 HR 战略应用。
通过分步实施与定制化开发九鑫可以与维达HR共同挖掘更多 AI 与大数据的应用场景,助力 HR 领域的智能化与数据化转型。
---
### 后续步骤
1. 详细梳理对方的具体业务需求。
2. 提供技术演示与落地方案。
3. 探讨项目合作模式与实施路径。