# 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**:提交问题到项目仓库