# chat_fast **Repository Path**: mac2019/chat_fast ## Basic Information - **Project Name**: chat_fast - **Description**: 基于Kratos框架构建的企业级AI知识库和智能聊天系统,集成多种大语言模型,支持RAG检索增强生成、动态配置管理等功能。 框架: Kratos-2.8 + gorm-1.30 + casbin-2.120 + redis-6.2 + milvus-2.4 + zap-1.27 + mysql-8.0 + minio-2023-03 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-01-03 - **Last Updated**: 2026-01-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: kratos, gorm, Casbin, minio, Milvus ## README # 企业级AI知识库聊天系统 基于Kratos框架构建的企业级AI知识库和智能聊天系统,集成多种大语言模型,支持RAG检索增强生成、动态配置管理等功能。 ## 框架 Kratos-2.8 + gorm-1.30 + casbin-2.120 + redis-6.2 + milvus-2.4 + zap-1.27 + mysql-8.0 + minio-2023-03 ## 🚀 主要功能 ### 1. 多模态AI模型集成 - **支持模型**: - 🇨🇳 **国产模型**:通义千问3.x、智谱GLM-4.x、DeepSeek-v3.x、Kimi-k2 - 🌍 **国际模型**:GPT-o1/GPT-o3、Gemini2.x - **统一接口**:提供统一的AI模型调用接口,支持动态切换 - **负载均衡**:智能模型选择和负载分发 ### 2. 动态配置管理 - ✅ **可视化配置**:Web界面动态配置模型参数、API Key等 - ✅ **无感刷新**:配置更新无需重启服务 - ✅ **实时生效**:配置变更立即生效 ### 3. 企业知识库 - 📚 **多格式支持**:支持txt、md、pdf、docx、doc、xlsx、xls、json、html等文档格式 - 🧠 **向量化存储**:文档自动向量化,支持语义搜索 - 🎯 **精准检索**:基于embedding的相似度搜索 - 🔄 **动态更新**:支持知识库实时更新 ### 4. 高级RAG功能 - 🔍 **多源检索**:同时从知识库和网络搜索获取信息 - 🧮 **智能重排序**:基于相关性对检索结果重新排序 - 🌐 **Web Search**:集成Bing、Google等搜索引擎 - 📊 **上下文优化**:智能上下文构建和长度优化 ### 5. Function Call工具框架(忽略) - 🛠️ **内置工具**:HTTP请求、文件操作、计算器、日期时间、字符串处理等 - 🔧 **自定义工具**:支持用户自定义工具和插件 - 🔗 **第三方集成**:轻松集成第三方API和服务 - ⚡ **异步执行**:支持异步工具调用和结果获取 ### 6. 向量数据库支持 - 🗄️ **多种数据库**:Milvus、本地存储 - 🏠 **本地存储**:支持本地文件存储(开发测试) - 📈 **可扩展**:支持不同知识库使用不同向量数据库 ### 7. AIGC客户端应用 - 📱 **统一API**:提供RESTful和gRPC接口 - 💬 **流式对话**:支持实时流式响应 - 📊 **数据管理**:客户端数据统计和管理 - 🔐 **权限控制**:基于角色的访问控制 ## 🏗️ 系统架构 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 前端应用 │ │ 移动应用 │ │ 第三方系统 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ └───────────────────────┼───────────────────────┘ │ ┌─────────────────┐ │ API网关 │ └─────────────────┘ │ ┌────────────────────┼────────────────────┐ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ AI服务 │ │ 知识库服务 │ │ 工具服务 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 多模型管理器 │ │ 向量数据库 │ │ 工具管理器 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 模型提供商 │ │ 文档处理器 │ │ 内置工具 │ │ • OpenAI │ │ • 文本分割 │ │ • HTTP工具 │ │ • 通义千问 │ │ • 向量化 │ │ • 文件工具 │ │ • 智谱AI │ │ • 检索优化 │ │ • 计算工具 │ │ • DeepSeek │ │ │ │ • 自定义工具 │ │ • Kimi │ │ │ │ │ │ • Gemini │ │ │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ ``` ## 📦 项目结构 ``` chat_fast/ ├── api/ # API定义文件 │ ├── ai/v1/ # AI服务API │ ├── auth/v1/ # 认证API │ ├── sys_*/v1/ # 系统管理API │ └── common/v1/ # 通用API ├── cmd/chat_fast/ # 主程序入口 ├── configs/ # 配置文件 ├── internal/ # 内部实现 │ ├── ai/ # AI模型管理 │ │ ├── types.go # AI接口定义 │ │ ├── manager.go # 模型管理器 │ │ └── providers/ # 模型提供商实现 │ ├── knowledge/ # 知识库管理 │ │ ├── types.go # 知识库接口 │ │ ├── processor.go # 文档处理器 │ │ └── splitter.go # 文本分割器 │ ├── vectordb/ # 向量数据库 │ │ ├── types.go # 向量DB接口 │ │ ├── milvus.go # Milvus实现 │ │ └── local.go # 本地存储实现 │ ├── rag/ # RAG引擎 │ │ ├── types.go # RAG接口定义 │ │ ├── engine.go # RAG引擎实现 │ │ ├── searcher.go # 网络搜索器 │ │ └── components.go # RAG组件 │ ├── tools/ # 工具框架 │ │ ├── types.go # 工具接口定义 │ │ ├── manager.go # 工具管理器 │ │ └── builtin.go # 内置工具 │ ├── biz/ # 业务逻辑层 │ ├── data/ # 数据访问层 │ └── service/ # 服务层 └── third_party/ # 第三方依赖 ``` ## 🛠️ 快速开始 ### 环境要求 - Go 1.24+ - MySQL 8.0+ - Redis 6.2+ - Milvus 2.4+ ### 安装步骤 1. **克隆项目** ```bash git clone https://gitee.com/mac2019/chat_fast.git cd chat_fast ``` 2. **安装依赖** ```bash go mod download ``` 3. **配置数据库** ```bash # 创建MySQL数据库 mysql -u root -p CREATE DATABASE chat_fast; # 启动Redis redis-server ``` 4. **配置文件** ```bash # 编辑配置文件,设置数据库连接和API密钥 vim configs/config.yaml ``` 5. **运行服务** ```bash # 生成代码 go generate ./... # 编译运行 go build -o ./bin/chat_fast ./cmd/chat_fast ./bin/chat_fast -conf ./configs ``` ### Docker部署 ```bash # 构建镜像 docker build -t chat_fast . # 运行容器 docker run -d \ --name chat_fast \ -p 8000:8000 \ -p 9000:9000 \ -v $(pwd)/conf:/data/conf \ -v $(pwd)/uploads:/data/uploads \ chat_fast ``` ## 特技 1. 有需要进一步帮忙二次开发的请加我微信:wx_mac2013 ## 截图 ![输入图片说明](first.png) ![输入图片说明](user.png) ![输入图片说明](menu.png) ![输入图片说明](model.png) ![输入图片说明](model_conf.png) ![输入图片说明](chat.png) ![输入图片说明](knowledge.png) ![输入图片说明](add_knowledge.png) ![输入图片说明](rag.png) ## 📖 使用指南 ### 1. 配置AI模型 在 `configs/config.yaml` 中配置AI模型: ```yaml ai: models: - name: "qwen-turbo" provider: "qwen" apiKey: "your-qwen-api-key" baseURL: "https://dashscope.aliyuncs.com/api/v1" model: "qwen-turbo" enabled: true defaultModel: "qwen-turbo" ``` ### 2. 创建知识库 ```bash curl -X POST http://localhost:8000/api/v1/kb/create \ -H "Content-Type: application/json" \ -d '{ "name": "企业知识库", "description": "企业内部文档知识库", "embeddingModel": "text-embedding-v1", "vectorDB": "milvus" }' ``` ### 3. 上传文档 ```bash curl -X POST http://localhost:8000/api/v1/kb/{kb_id}/upload \ -F "file=@document.pdf" \ -F "metadata={\"source\":\"manual\"}" ``` ### 4. 智能对话 ```bash curl -X POST http://localhost:8000/api/v1/ai/chat \ -H "Content-Type: application/json" \ -d '{ "message": "请介绍一下公司的产品", "model": "qwen-turbo", "knowledgeBase": "kb_123", "useRAG": true, "enableTools": true }' ``` ## 🔧 API文档 ### AI聊天接口 #### 基础对话 ```http POST /api/v1/ai/chat Content-Type: application/json { "message": "你好", "model": "qwen-turbo", "options": { "temperature": 0.7, "maxTokens": 2048 } } ``` #### 流式对话 ```http POST /api/v1/ai/stream-chat Content-Type: application/json { "message": "写一篇关于AI的文章", "model": "qwen-turbo" } ``` #### 基于知识库的对话 ```http POST /api/v1/kb/{kb_id}/chat Content-Type: application/json { "message": "什么是RAG技术?", "model": "qwen-turbo", "options": { "useWebSearch": true, "enableTools": true } } ``` ### 知识库管理接口 #### 创建知识库 ```http POST /api/v1/kb/create Content-Type: application/json { "name": "技术文档库", "description": "技术相关文档", "embeddingModel": "text-embedding-v1", "vectorDB": "milvus" } ``` #### 上传文档 ```http POST /api/v1/kb/{kb_id}/upload Content-Type: application/json { "knowledgeBaseId": "{kb_id}", "filename": "document.pdf", "content": "", "contentType": "application/pdf", "metadata": { "source": "upload", "category": "tech" } } ``` #### 搜索知识 ```http POST /api/v1/kb/{kb_id}/search Content-Type: application/json { "query": "如何部署系统", "topK": 5, "threshold": 0.7 } ``` ### 模型配置接口 #### 更新模型配置 ```http PUT /api/v1/config/model/{model_name} Content-Type: application/json { "provider": "qwen", "apiKey": "new-api-key", "enabled": true, "maxTokens": 4096 } ``` #### 测试模型连接 ```http POST /api/v1/config/model/{model_name}/test Content-Type: application/json { "testMessage": "Hello" } ``` ## 🎯 核心特性详解 ### RAG检索增强生成 系统的RAG引擎支持: 1. **多源检索**:同时从知识库和网络搜索 2. **智能重排序**:基于相关性重新排序检索结果 3. **上下文优化**:智能构建和优化上下文长度 4. **缓存机制**:缓存常用查询结果提高性能 ### 动态配置管理 - **实时更新**:配置变更立即生效,无需重启 - **版本控制**:配置变更历史记录 - **回滚机制**:支持配置快速回滚 - **权限控制**:基于角色的配置权限管理 ## 🔒 安全特性 - **API认证**:JWT token认证 - **权限控制**:基于RBAC的权限管理 - **数据加密**:敏感数据加密存储 - **访问日志**:详细的操作日志记录 - **限流保护**:API调用频率限制 - **输入验证**:严格的参数验证和过滤 ## 📊 监控指标 系统提供丰富的监控指标: - **模型调用统计**:调用次数、成功率、延迟 - **知识库使用**:查询频率、命中率 - **工具调用**:工具使用统计、执行时间 - **系统性能**:CPU、内存、磁盘使用率 - **业务指标**:用户活跃度、对话质量 ## 📈 LLM请求统计功能 系统集成了完整的LLM请求记录和统计功能,提供精确的使用量分析和成本控制: ### 功能特性 1. **LLM请求记录** - 自动记录所有LLM请求和Token消耗量到MySQL表 2. **按天维度统计** - LLM请求量和Token消耗量按天统计 3. **按月维度统计** - 用户数量和知识库数量按月统计 4. **总计统计** - 提供LLM请求量、Token消耗量、用户数量、知识库数量的总计接口 ### 数据库表结构 #### 1. LLM请求记录表 (llm_requests) - 记录每次LLM请求的详细信息 - 包含用户ID、模型名称、Token使用量、响应时间等 - 支持JSON格式的请求和响应数据存储 #### 2. 每日LLM统计表 (daily_llm_stats) - 按天、按模型统计LLM请求数据 - 包含请求总数、成功数、失败数、Token消耗等指标 #### 3. 月度用户统计表 (monthly_user_stats) - 按月统计用户数量变化 - 包含总用户数、活跃用户数、新增用户数 #### 4. 月度知识库统计表 (monthly_knowledge_stats) - 按月统计知识库相关数据 - 包含知识库数量、文档数量、文档块数量等 ### 统计API接口 #### 获取按天LLM统计 ```http GET /api/v1/stats/llm/daily?start_date=2024-01-01&end_date=2024-01-31 ``` #### 获取按月用户统计 ```http GET /api/v1/stats/users/monthly?start_month=2024-01&end_month=2024-12 ``` #### 获取按月知识库统计 ```http GET /api/v1/stats/knowledge/monthly?start_month=2024-01&end_month=2024-12 ``` #### 获取总计统计 ```http GET /api/v1/stats/total ``` 返回示例: ```json { "total_requests": 15420, "total_tokens": 2847362, "total_users": 1250, "total_knowledge_bases": 85 } ``` ### 技术实现 #### 架构设计 - **Data层** - 数据库操作和模型定义 - **Biz层** - 业务逻辑和接口定义 - **Service层** - gRPC/HTTP服务实现 - **Proto层** - API接口定义 #### 自动记录 - AI业务层自动记录每次LLM请求 - 异步记录,不影响正常请求性能 - 支持Token数量估算和实际统计 #### 定时统计 - 提供定时任务接口更新每日统计 - 支持月度统计数据的重新计算 - 可通过cron job定期执行统计任务 ### 扩展功能 #### 1. 实时统计 可以扩展为实时统计Dashboard,展示当前系统使用情况。 #### 2. 报表生成 基于统计数据生成PDF或Excel格式的使用报表。 #### 3. 告警机制 当Token使用量超过阈值时发送告警通知。 #### 4. 成本分析 根据不同模型的Token价格计算使用成本。 ### 使用注意事项 1. **性能优化** - LLM请求记录使用异步方式,避免影响请求响应时间 2. **数据清理** - 建议定期清理历史统计数据,避免数据库过大 3. **权限控制** - 统计接口可能包含敏感信息,建议添加适当的权限验证 4. **监控告警** - 建议监控统计表的增长情况,及时发现异常 ## 🤝 贡献指南 欢迎贡献代码!请遵循以下步骤: 1. Fork 项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ### 开发规范 - 遵循 Go 语言编码规范 - 添加充分的单元测试 - 更新相关文档 - 使用有意义的提交信息 ## 📄 许可证 本项目采用 Apache-2.0 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 📞 联系我们 - 项目地址:https://gitee.com/mac2019/chat_fast - 问题反馈:https://gitee.com/mac2019/chat_fast/issues - 邮箱:contact@yourcompany.com ## 🙏 致谢 感谢以下开源项目的支持: - [Kratos](https://github.com/go-kratos/kratos) - 微服务框架 - [Milvus](https://github.com/milvus-io/milvus) - 向量数据库 - [OpenAI](https://openai.com/) - AI模型API - [通义千问](https://tongyi.aliyun.com/) - 阿里云大语言模型 - [智谱AI](https://www.zhipuai.cn/) - 智谱大语言模型 ## 特技 1. 有需要进一步帮忙二次开发的请加我微信:wx_mac2013