# intelligent-data-analysis
**Repository Path**: dai-mingjing/intelligent-data-analysis
## Basic Information
- **Project Name**: intelligent-data-analysis
- **Description**: 智能数据分析课程设计
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-10-07
- **Last Updated**: 2026-02-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 智能数据分析系统
本项目来源于天津大学智能数据分析课程的实践,是一个基于CoT、prompt engineering、RAG、function calling 等技术的智能日志分析系统。使用常见经典的大模型技术应用,了解一些主流的方法。
## 目录
- [1 技术栈](#1-技术栈)
- [2 项目启动](#2-项目启动)
- [3 配置说明](#3-配置说明)
- [4 项目结构与功能说明](#4-项目结构与功能说明)
- [5 开发指南](#5-开发指南)
- [6 贡献指南](#6-贡献指南)
- [7 联系方式](#7-联系方式)
---
## 1 技术栈
### 1.1 后端
| technology | version | description |
| ------------------------- | ------- | ----------- |
| **Django** | 4.2.0+ | Web框架 |
| **Django Ninja** | 1.0.0+ | API框架 |
| **ChromaDB** | 0.4.0+ | 向量数据库 |
| **LangChain** | 0.1.0+ | LLM应用框架 |
| **LlamaIndex** | 0.10.0+ | 数据索引框架 |
| **PyJWT** | 2.8.0+ | JWT认证 |
| **Sentence-Transformers** | 2.2.0+ | 文本向量化 |
| **Transformers** | 4.30.0+ | 预训练模型 |
| **PyTorch** | 2.0.0+ | 深度学习框架 |
| **Pandas** | 2.0.0+ | 数据处理 |
### 1.2 前端
| technology | version | description |
| ---------------- | ------- | ----------- |
| **Vue 3** | 3.5.18 | 前端框架 |
| **Vite** | 7.1.12 | 构建工具 |
| **Pinia** | 3.0.3 | 状态管理 |
| **Vue Router** | 4.5.1 | 路由管理 |
| **Marked** | 16.4.0 | Markdown渲染 |
| **Highlight.js** | 11.11.1 | 代码高亮 |
| **KaTeX** | 0.16.25 | 数学公式渲染 |
### 1.3 使用模型汇总
| 模型类型 | 模型名称 | 来源 | 用途 | 配置位置 |
| ----- | ---------------- | ------------ | ------------- | ------------------- |
| 嵌入模型 | all-MiniLM-L6-v2 | HuggingFace | 语义检索 | topklogsystem.py |
| 大语言模型 | DeepSeek | DeepSeek API | Chat,查询重写、重排序 | settings.py |
| 分词模型 | Jieba | Python库 | 中文分词 | hybrid_retrieval.py |
## 2 项目启动
### 2.1 基础环境配置
1.前置要求
- **操作系统**:Linux / macOS / Windows (WSL2推荐)
- **Python**:3.8或更高版本
- **Node.js**:16.0或更高版本
- **Conda**:Anaconda或Miniconda
- **内存**:建议8GB以上
- **硬盘**:至少10GB可用空间
2.创建虚拟环境
```bash
# 创建名为 intelligent-analysis 的Python 3.10环境
conda create -n intelligent-analysis python=3.10 -y
# 激活环境
conda activate intelligent-analysis
# 验证Python版本
python --version # 应该显示 Python 3.10.x
```
3.配置系统环境变量
方式一:命令行
```bash
# Linux/Mac
export AI_API_KEY="your_api_key_here"
export AI_MODEL_NAME="deepseek-chat"
# Windows PowerShell
$env:AI_API_KEY="your_api_key_here"
$env:AI_MODEL_NAME="deepseek-chat"
```
方式二:直接修改 settings.py
打开 `django_backend/deepseek_project/settings.py`,修改:
```python
# AI API 配置(用于快速响应)
AI_API_URL = 'https://api.deepseek.com/chat/completions'
AI_API_KEY = 'your_api_key_here' # 填入你的API Key
AI_MODEL_NAME = 'deepseek-chat'
```
### 2.2 项目环境配置
1.克隆项目
```bash
# 克隆代码仓库
git clone git fetch https://gitee.com/dai-mingjing/intelligent-data-analysis.git
cd intelligent-data-analysis
```
#### 2.2.1 后端
1.安装Python依赖
```bash
# 确保已激活conda环境
conda activate intelligent-analysis
# 进入后端目录
cd django_backend
# 安装依赖包
pip install -r requirements.txt
```
2.下载嵌入模型
由于常见的网络不稳定可能导致初始化 RAG 时无法获取到相关模型导致启动失败,需要先在本机上下载用于 RAG 的模型,然后直接移动到 WSL 的项目中。同时由于脚本无法灵活跨越 WSL 和本机的文件系统(每个人URL可能不同)以及模型太大无法 git 跟踪,所以需要手动进行这一步。
先在本地的 cmd 中执行:
```bash
# 安装依赖
pip install -U "huggingface_hub[cli]" transformers sentence-transformers
# 下载模型 all-MiniLM-L6-v2
huggingface-cli download sentence-transformers/all-MiniLM-L6-v2 --local-dir ./all-MiniLM-L6-v2
```
将路径 `C:\Users\<你的用户名>\.cache\huggingface\hub\models--sentence-transformers--all-MiniLM-L6-v2\snapshots\<一串东西>` 下的所有东西传到 WSL 中项目指定目录 `\data\django_backend\data\models\all-MiniLM-L6-v2`
- 注:services.py 的 34 行附近的 `_vector_system` 中设置的 `embedding_model` 就是这个模型的存放目录
3.初始化数据库
```bash
# 在 django_backend 目录下执行
# 清空旧数据(可选,首次安装跳过)
python scripts/clear_sessions.py
# 生成迁移文件
python manage.py makemigrations
# 应用数据库迁移
python manage.py migrate
# 删除向量存储目录(如果存在)
rm -rf data/vector_stores
```
首次启动时,系统会自动构建向量索引
4.*配置工具系统API_key (可选)
不配置时系统将不会使用工具调用
在 /tool_system/api_config.py 中设置你的 api_key,完成后可测试是否配置成功:
```bash
python tool_system/test_all.py
```
5.启动
```bash
python manage.py runserver 0.0.0.0:8000
```
#### 2.2.2 前端
1.安装依赖
```bash
# 进入前端目录
cd vue_frontend
# 安装依赖(使用npm)
npm install
# npm失败时使用
cnpm i
# 或使用yarn(如果已安装)
# yarn install
# 或使用pnpm(如果已安装)
# pnpm install
```
2.启动
```bash
npm run dev
```
### 2.3 启动系统便捷操作
```bash
# 激活conda环境
conda activate intelligent-analysis
# 进入后端目录
cd django_backend
# 启动Django开发服务器 (端口默认8000)
python manage.py runserver 0.0.0.0:8000
```
新开一个终端窗口:
```bash
# 进入前端目录
cd vue_frontend
# 启动开发服务器 (端口默认8082)
npm run dev
```
---
## 3 配置说明
### 3.1 后端
1.Django配置文件
`django_backend/deepseek_project/settings.py`
2.向量模型路径配置
检查 `django_backend/deepseek_api/services.py`:
```python
# 确保embedding_model路径正确
embedding_model = HuggingFaceEmbeddings(
model_name="./data/models/all-MiniLM-L6-v2",
model_kwargs={'device': 'cpu'},
encode_kwargs={'normalize_embeddings': True}
)
```
3.获取DeepSeek API密钥
1. 访问 [DeepSeek平台](https://platform.deepseek.com/)
2. 注册并登录账号
3. 充值(最低¥1元即可)
4. 创建API密钥
5. 复制密钥并配置到环境变量或settings.py
**费用参考**:
- 输入:¥0.001/千tokens
- 输出:¥0.002/千tokens
- ¥1元约可进行1000次对话
4.工具api_key配置
`/tool_system/api_config.py`
### 3.2 前端配置
#### 3.2.1 API地址配置
编辑 `vue_frontend/src/api.js`,确认后端API地址:
```javascript
// 开发环境使用相对路径,生产环境配置完整URL
const BASE_URL = 'http://localhost:8000/api' // 根据实际后端端口修改
```
#### 3.2.2 Vite配置
编辑 `vue_frontend/vite.config.js`:
```javascript
export default defineConfig({
plugins: [vue()],
server: {
port: 8082, // 前端端口
proxy: {
'/api': {
target: 'http://localhost:8081', // 后端地址
changeOrigin: true
}
}
}
})
```
---
## 4 项目结构与功能说明
### 4.1 整体结构
```
intelligent-data-analysis/
├── django_backend/ # Django后端
│ ├── data/ # 数据目录
│ │ ├── knowledge_base/ # 结构化知识库
│ │ │ ├── architecture/ # 架构知识
│ │ │ ├── experience/ # 经验知识
│ │ │ ├── fault_cases/ # 故障案例
│ │ │ ├── solutions/ # 解决方案
│ │ │ └── *.csv # 知识数据文件
│ │ ├── log/ # 日志文件(向量化源)
│ │ ├── models/ # 本地模型
│ │ │ └── all-MiniLM-L6-v2/ # 向量化模型
│ │ └── vector_stores/ # ChromaDB向量数据库
│ ├── deepseek_api/ # 核心API应用
│ │ ├── __init__.py
│ │ ├── admin.py # 管理后台配置
│ │ ├── api.py # API接口定义(1670行)
│ │ ├── apps.py # 应用配置(启动初始化)
│ │ ├── file_processors.py # 文件处理
│ │ ├── jwt_utils.py # JWT工具函数
│ │ ├── llm_client.py # LLM客户端
│ │ ├── models.py # 数据模型
│ │ ├── schemas.py # API数据结构
│ │ ├── services.py # 核心服务
│ │ ├── tools.py # 工具调用
│ │ ├── urls.py # 应用路由
│ │ ├── migrations/ # 数据库迁移文件
│ │ └── management/ # 管理命令
│ │ └── commands/
│ │ └── create_admin.py # 创建管理员
│ ├── deepseek_project/ # Django项目配置
│ │ ├── __init__.py
│ │ ├── asgi.py # ASGI配置
│ │ ├── settings.py # 项目设置
│ │ ├── urls.py # 项目路由
│ │ └── wsgi.py # WSGI配置
│ ├── rag_system/ # RAG检索系统
│ │ ├── __init__.py
│ │ ├── advanced_reranker.py # 高级重排序
│ │ ├── common.py # 通用数据结构
│ │ ├── data_integration.py # 数据整合
│ │ ├── enhanced_rag.py # 增强RAG引擎
│ │ ├── hybrid_retrieval.py # 混合检索
│ │ ├── rag_config.py # RAG配置
│ │ └── rag_logger.py # RAG日志
│ ├── tool_system/ # 工具调用系统
│ │ ├── __init__.py
│ │ ├── api_config.py # API配置
│ │ ├── integration.py # 系统集成
│ │ ├── test_all.py # 测试脚本
│ │ ├── core/ # 核心模块
│ │ │ ├── executor.py # 工具执行器
│ │ │ ├── manager.py # 工具管理器
│ │ │ ├── registry.py # 工具注册中心
│ │ │ └── tool.py # 工具基类
│ │ └── tools/ # 具体工具实现
│ │ ├── amap_tools.py # 高德地图工具
│ │ ├── analysis_tools.py # 分析工具
│ │ └── search_tools.py # 搜索工具
│ ├── scripts/ # 脚本目录
│ │ ├── clear_sessions.py # 清空会话
│ │ ├── create_admin.py # 创建管理员
│ │ ├── create_test_feedback_data.py
│ │ ├── quality_check.py # 质量检查
│ │ └── test_user_isolation.py # 测试用户隔离
│ ├── results/ # 结果输出目录
│ ├── db.sqlite3 # SQLite数据库
│ ├── debug.log # 调试日志
│ ├── manage.py # Django管理脚本
│ └── requirements.txt # Python依赖
├── vue_frontend/ # Vue前端
│ ├── src/
│ │ ├── assets/ # 静态资源
│ │ │ ├── highlight.css # 代码高亮样式
│ │ │ └── styles.css # 全局样式
│ │ ├── components/ # Vue组件
│ │ │ ├── AdminLogFileUpload.vue # 管理员上传
│ │ │ ├── ChatInput.vue # 聊天输入框
│ │ │ ├── ChatMessage.vue # 消息组件
│ │ │ ├── LogFileUpload.vue # 文件上传
│ │ │ └── SessionList.vue # 会话列表
│ │ ├── views/ # 页面视图
│ │ │ ├── AdminDashboard.vue # 管理员面板
│ │ │ ├── AdminLogin.vue # 管理员登录
│ │ │ ├── Chat.vue # 聊天页面
│ │ │ └── Login.vue # 用户登录
│ │ ├── api.js # API接口封装
│ │ ├── App.vue # 根组件
│ │ ├── main.js # 入口文件
│ │ ├── router.js # 路由配置
│ │ └── store.js # 状态管理
│ ├── public/ # 公共文件
│ ├── index.html # HTML模板
│ ├── package.json # 依赖配置
│ ├── vite.config.js # Vite配置
│ └── README.md
├── documents/ # 文档目录
│ ├── Django后端核心文件学习指南.md
│ ├── RAG系统与配置详解.md
│ ├── 工具系统指南.md
│ ├── JWT登录注册系统使用说明.md
│ ├── AI_API_配置说明.md
│ └── ...
└── README.md # 本文件
```
### 4.2 核心模块架构说明
#### 4.2.1 RAG系统架构
```
用户查询 → 查询重写 → 混合检索 → 高级重排序 → LLM生成 → 返回结果
↓
┌─────────┼─────────┐
↓ ↓ ↓
语义检索 BM25检索 元数据过滤
(0.6) (0.3) (0.1)
↓ ↓ ↓
└─────────┼─────────┘
↓
结果合并与去重
↓
高级重排序
┌─────────┼─────────┐
↓ ↓ ↓
语义匹配度 关键词覆盖 上下文相关性
(0.4) (0.3) (0.3)
```
#### 4.2.2 数据流向
```
日志文件(.csv/.txt/.md/.json)
↓
文档加载器
↓
文本分块
↓
向量化(all-MiniLM-L6-v2)
↓
ChromaDB存储
↓
向量检索 ←─── 用户查询
↓
重排序
↓
上下文构建
↓
LLM生成回答
```
## 4.3 核心功能
### 4.1 智能问答系统 (最核心)
**CoT** 思维链引导推理
**Prompt Engineering** 增强提示词
**RAG** 高效准确检索外部知识,减轻模型幻觉
**Function Recalling** 为LLM提供工具调用,降低响应不确定性
### 4.2 用户与会话系统
用户相关
- **用户注册**:用户名、密码、邮箱注册
- **JWT认证**:基于令牌的安全认证,有效期7天
- **会话隔离**:不同用户的会话完全隔离
- **密码安全**:使用Django哈希加密
会话相关
- **多会话支持**:每个用户可创建多个独立会话
- **历史记录**:自动保存对话历史
- **会话重命名**:支持自定义会话名称
- **会话删除**:清理不需要的历史会话
### 4.3 管理员功能
- **用户管理**:查看、编辑、删除用户
- **日志管理**:批量上传日志文件
- **系统监控**:查看系统使用统计
- **反馈分析**:查看用户反馈数据
---
## 5 开发指南
### 5.1 扩展知识库
#### 5.1.1 添加日志文件
**方式一:项目中处理**
将新的日志文件放入 `django_backend/data/log/` 目录:
```bash
# 支持的格式
- CSV文件:逐行处理
- TXT/MD文件:整文件处理
- JSON/JSONL文件:整文件处理
```
删除`django_backend/data/vector_stores`,并重启后端,系统会自动向量化新文件
**方式二:前端上传**
在管理端的文件上传中直接选择文件,增量更新,无需直接操作项目文件
#### 5.1.2 添加结构化知识
编辑 `django_backend/data/knowledge_base/` 下的CSV文件:
- `fault_cases.csv`:故障案例
- `experience.csv`:经验知识
- `architecture.csv`:架构信息
- `solutions.csv`:解决方案
**CSV格式示例**:
```csv
服务,级别,错误,消息,组件,原因
AuthService,ERROR,INVALID_TOKEN,Token校验失败,TokenValidator,JWT签名算法不匹配
```
### 5.2 添加新工具
#### 5.2.1 创建工具类
在 `tool_system/tools/` 下创建新文件:
```python
from tool_system.core.tool import Tool, ToolResult
class MyCustomTool(Tool):
def __init__(self):
super().__init__(
name="my_custom_tool",
description="我的自定义工具"
)
def execute(self, **kwargs) -> ToolResult:
# 实现工具逻辑
return ToolResult(
success=True,
data={"result": "执行结果"}
)
def get_schema(self) -> Dict[str, Any]:
return {
"type": "function",
"function": {
"name": self.name,
"description": self.description,
"parameters": {
"type": "object",
"properties": {
"param1": {"type": "string", "description": "参数1"}
},
"required": ["param1"]
}
}
}
```
#### 5.2.2 注册工具
在 `tool_system/integration.py` 中注册:
```python
from tool_system.tools.my_tools import MyCustomTool
def initialize_tools():
manager = get_tool_manager()
manager.register_tool(
MyCustomTool(),
category="custom",
tags=["自定义"],
enabled=True
)
```
---
## 6 贡献指南
欢迎贡献代码、报告问题或提出建议!
### 6.1 提交问题
- 描述问题现象
- 提供复现步骤
- 附上错误日志
- 说明环境信息
### 6.2 提交代码
1. Fork本仓库
2. 创建功能分支
3. 提交代码并编写测试
4. 提交Pull Request
---
## 7 联系方式
如有问题或建议,请通过以下方式联系:
- **邮箱**:
zengyicydd@tju.edu.cn
gaocan@tju.edu.cn
yxy641121@gmail.com
daimingjing142857@tju.edu.cn
jsyy@tju.edu.cn
- **Gitee Issues**:提交问题到项目仓库