themblem/doc/ai-chat.md
2025-10-29 21:27:29 +00:00

11 KiB
Raw Blame History

AI聊天功能技术实现计划

1. 项目概述

基于现有徵象防伪验证系统扩展AI客服聊天功能继承Kimi K2大模型能力为每个品牌租户提供个性化的AI客服服务。

2. 需求分析

2.1 核心功能需求

  • 接入Kimi K2或其他AI大模型API
  • 品牌专属AI客服独立回答本品牌产品相关问题
  • 多模态回答:文字、图片、视频链接、微信小程序码等
  • 联网搜索,以品牌官方信息为主
  • 支持客户上传额外内容供AI学习
  • 验证失败时提供对话式结果展示
  • 支持品牌色调定制

2.2 技术约束

  • 保留原有传统查询页面
  • 通过序列码批次管理选择使用页面类型
  • 与现有防伪验证流程集成

3. 系统架构设计

3.1 整体架构

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   小程序前端     │    │    Web管理端     │    │   AI服务层      │
│  (AI聊天界面)    │◄──►│  (内容管理)      │◄──►│  (Kimi K2 API) │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         ▼                       ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   验证服务      │    │   内容存储      │    │   RAG知识库     │
│  (二维码识别)    │    │  (OSS/数据库)    │    │  (向量检索)     │
└─────────────────┘    └─────────────────┘    └─────────────────┘

3.2 数据流设计

  1. 用户扫描二维码 → 验证服务
  2. 验证结果 → AI聊天界面
  3. 用户提问 → AI服务层处理
  4. AI回答 → 返回多模态内容
  5. 用户反馈 → 知识库更新

4. 技术实现方案

4.1 AI模型集成

4.1.1 智能能力调度系统

  • 架构选择: 直接以Tool形式接入Kimi K2无需复杂路由
  • 能力分类: 知识库检索工具、二维码扫描工具、一般问答
  • 调度策略: 依赖Kimi K2的智能判断自动选择合适的工具
  • 优势: 实现简单、维护成本低、Kimi K2原生支持
  • 扩展性: 后续可轻松添加更多工具,无需修改路由逻辑

4.1.2 RAG知识库系统 已实现

  • 存储方案: FAISS向量数据库 + Django缓存系统
  • 内容类型: 文字、图片、视频、文档支持HTML内容清理
  • 检索策略: 语义搜索 + 相似度评分
  • 更新机制: 支持实时更新和版本控制
  • 成本优化: 本地处理减少API调用
  • 性能优化: 多层缓存策略向量缓存30天搜索结果缓存1天

RAG流程

  • 检索(Retrieval): 从本地知识库找到相关信息
  • 增强(Augmentation): 将检索到的信息作为上下文
  • 生成(Generation): Kimi K2基于增强的上下文生成回答

技术实现细节

  • 向量化模型: shibing624/text2vec-base-chinese 中文嵌入模型
  • 文本分割: RecursiveCharacterTextSplitterchunk_size=1000overlap=200
  • 缓存策略: 文章内容哈希签名 + 向量存储序列化缓存
  • HTML处理: BeautifulSoup清理HTML标签提取纯文本内容

4.2 数据模型扩展

4.3 后端API设计

4.3.1 AI聊天API

# api/products/views.py

class AIChatView(BaseView):
    name = 'ai-chat'
    auth_check = 'tenant'
    
    def post(self, request):
        """发送消息给AI"""
        session_id = request.data.get('session_id')
        message = request.data.get('message')
        context = request.data.get('context', {})
        
        # 获取或创建会话
        session = self._get_or_create_session(session_id, request.tenant)
        
        # 调用AI服务
        ai_service = AIService(request.tenant.id)
        response = ai_service.chat(message, context, self._get_tenant_context(request.tenant))
        
        # 保存消息记录
        self._save_message(session, 'user', message)
        self._save_message(session, 'assistant', response)
        
        return JsonResponse({
            'session_id': session.session_id,
            'response': response
        })
    
    def get(self, request):
        """获取聊天历史"""
        session_id = request.GET.get('session_id')
        if not session_id:
            return http400("session_id required")
            
        session = ChatSession.objects.filter(
            session_id=session_id,
            tenant=request.tenant
        ).first()
        
        if not session:
            return http404("Session not found")
            
        messages = ChatMessage.objects.filter(session=session).order_by('created_at')
        return JsonResponse({
            'messages': [self._serialize_message(m) for m in messages]
        })

#### 4.3.2 RAG服务API ✅ **已实现**
```python
# api/products/rag_service.py

class CachedLangChainRAG:
    """基于缓存的实时LangChain RAG服务"""
    
    def search(self, query: str, max_results: int = 3, tenant_id: int = None) -> List[Dict[str, Any]]:
        """带缓存的搜索"""
        # 多层缓存策略
        # 1. 搜索结果缓存1天
        # 2. 向量存储缓存30天
        # 3. 文章列表缓存30天
    
    def get_enhanced_context(self, query: str, max_results: int = 3, tenant_id: int = None) -> str:
        """获取增强的上下文信息"""
        # 构建结构化的上下文信息
        # 包含标题、相关度评分、内容摘要

5. RAG系统架构详解 已实现

5.1 核心组件

5.1.1 文本处理管道

  • HTML清理: BeautifulSoup解析移除script、style等标签
  • 文本分割: 智能分块,保持语义完整性
  • 元数据管理: 文章ID、标题、租户ID、分块索引等

5.1.2 向量化系统

  • 嵌入模型: 中文优化的text2vec-base-chinese
  • 向量存储: FAISS高性能相似度搜索
  • 分块策略: 1000字符分块200字符重叠

5.1.3 缓存优化系统

  • 三级缓存架构:
    1. 搜索结果缓存1天过期
    2. 向量存储缓存30天过期
    3. 文章列表缓存30天过期
  • 智能失效: 基于内容哈希的缓存失效策略
  • 性能监控: 详细的耗时统计和性能分析

5.2 工作流程

用户查询 → 缓存检查 → 向量搜索 → 结果排序 → 上下文构建 → 返回增强信息
    ↓           ↓         ↓         ↓         ↓
  查询哈希   多层缓存   相似度计算  评分排序   结构化输出

5.3 性能特性

  • 响应时间: 缓存命中时 < 10ms首次查询 < 2s
  • 并发支持: 基于Django缓存的并发安全
  • 内存优化: 向量存储序列化缓存,避免重复计算
  • 扩展性: 支持多租户隔离,租户级缓存策略

7. 安全考虑

7.1 数据安全

  • API密钥加密存储
  • 用户隐私保护
  • 内容审核机制
  • 访问权限控制

7.2 系统安全

  • 请求频率限制
  • 异常监控告警

9. 项目计划

9.1 开发阶段

  1. 第一阶段 (1周): 核心架构和基础功能 已完成
    • 数据模型扩展(最小化)
    • Kimi K2 API基础集成
    • 基础AI聊天功能
    • 工具调用系统
    • Django管理命令
    • RAG知识库系统 新增完成
  2. 第二阶段 (1周): AI能力扩展 已完成
    • 知识库检索工具集成
    • 平台知识库(完整版)
    • 工具调用优化和扩展
    • RAG系统性能优化 新增完成
  3. 第三阶段 (1周): 小程序集成和内容管理
    • 小程序AI聊天界面核心功能
    • 小程序与AI服务的集成
    • 内容管理基础功能
  4. 第四阶段 (1周): 集成测试和部署
    • 功能测试和bug修复
    • 性能优化
    • 生产环境部署

9.2 里程碑

  • Week 1: 完成核心架构和基础AI聊天功能 已完成
  • Week 2: 完成知识库检索工具和RAG系统基础功能 已完成
  • Week 3: 完成小程序AI聊天集成和内容管理
  • Week 4: 完成测试、优化和上线

11.2 开发周期

  • 总周期: 4周压缩版
  • 核心功能: AI聊天、RAG知识检索、工具调用、小程序集成、基础内容管理
  • 技术栈: Django + Kimi K2 + LangChain知识库管理+ 微信小程序 + FAISS向量存储
  • 开发策略: MVP优先核心功能先行小程序集成优先后续迭代优化

11.3 架构设计总结

核心架构选择直接以Tool形式接入Kimi K2 + RAG知识库系统

  1. 简化设计:避免复杂的能力调度和路由逻辑
  2. 原生支持充分利用Kimi K2的Function Calling能力
  3. 易于维护:代码结构清晰,逻辑简单
  4. 扩展性好:后续可以轻松添加更多工具
  5. RAG集成:完整的知识库检索和增强系统

RAG实现方式

  • 知识库检索作为工具提供给Kimi K2
  • AI根据用户问题自动选择是否使用知识库
  • 基于检索结果生成高质量回答
  • 无需手动路由完全依赖AI智能判断
  • 多层缓存优化,支持高性能检索

技术优势

  • 减少系统复杂度
  • 降低维护成本
  • 提高系统稳定性
  • 保持架构简洁性
  • 新增: 完整的RAG知识库系统
  • 新增: 高性能缓存和向量检索
  • 新增: 多租户知识库隔离

12. RAG系统技术规格 已实现

12.1 性能指标

  • 响应时间: 缓存命中 < 10ms首次查询 < 2s
  • 并发能力: 支持多租户并发访问
  • 缓存效率: 向量存储缓存命中率 > 90%
  • 存储优化: 支持大规模知识库10万+文档)

12.2 技术特性

  • 中文优化: 专门针对中文内容优化的嵌入模型
  • 智能分块: 保持语义完整性的文本分割策略
  • 多层缓存: 搜索结果、向量存储、文章列表三级缓存
  • 租户隔离: 完整的多租户知识库隔离机制

12.3 扩展能力

  • 模型切换: 支持更换不同的嵌入模型
  • 存储后端: 可扩展支持其他向量数据库
  • 缓存策略: 可配置的缓存过期时间和策略
  • 监控告警: 内置性能监控和异常告警

TODO:

  • context length management
  • 小程序AI聊天界面集成
  • 内容管理系统的完善