11 KiB
11 KiB
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 数据流设计
- 用户扫描二维码 → 验证服务
- 验证结果 → AI聊天界面
- 用户提问 → AI服务层处理
- AI回答 → 返回多模态内容
- 用户反馈 → 知识库更新
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中文嵌入模型 - 文本分割: RecursiveCharacterTextSplitter,chunk_size=1000,overlap=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天过期)
- 向量存储缓存(30天过期)
- 文章列表缓存(30天过期)
- 智能失效: 基于内容哈希的缓存失效策略
- 性能监控: 详细的耗时统计和性能分析
5.2 工作流程
用户查询 → 缓存检查 → 向量搜索 → 结果排序 → 上下文构建 → 返回增强信息
↓ ↓ ↓ ↓ ↓
查询哈希 多层缓存 相似度计算 评分排序 结构化输出
5.3 性能特性
- 响应时间: 缓存命中时 < 10ms,首次查询 < 2s
- 并发支持: 基于Django缓存的并发安全
- 内存优化: 向量存储序列化缓存,避免重复计算
- 扩展性: 支持多租户隔离,租户级缓存策略
7. 安全考虑
7.1 数据安全
- API密钥加密存储
- 用户隐私保护
- 内容审核机制
- 访问权限控制
7.2 系统安全
- 请求频率限制
- 异常监控告警
9. 项目计划
9.1 开发阶段
- 第一阶段 (1周): 核心架构和基础功能 ✅ 已完成
- 数据模型扩展(最小化)
- Kimi K2 API基础集成 ✅
- 基础AI聊天功能 ✅
- 工具调用系统 ✅
- Django管理命令 ✅
- RAG知识库系统 ✅ 新增完成
- 第二阶段 (1周): AI能力扩展 ✅ 已完成
- 知识库检索工具集成 ✅
- 平台知识库(完整版) ✅
- 工具调用优化和扩展 ✅
- RAG系统性能优化 ✅ 新增完成
- 第三阶段 (1周): 小程序集成和内容管理
- 小程序AI聊天界面(核心功能)
- 小程序与AI服务的集成
- 内容管理基础功能
- 第四阶段 (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知识库系统
- 简化设计:避免复杂的能力调度和路由逻辑
- 原生支持:充分利用Kimi K2的Function Calling能力
- 易于维护:代码结构清晰,逻辑简单
- 扩展性好:后续可以轻松添加更多工具
- RAG集成:完整的知识库检索和增强系统
RAG实现方式:
- 知识库检索作为工具提供给Kimi K2
- AI根据用户问题自动选择是否使用知识库
- 基于检索结果生成高质量回答
- 无需手动路由,完全依赖AI智能判断
- 多层缓存优化,支持高性能检索
技术优势:
- 减少系统复杂度
- 降低维护成本
- 提高系统稳定性
- 保持架构简洁性
- 新增: 完整的RAG知识库系统
- 新增: 高性能缓存和向量检索
- 新增: 多租户知识库隔离
12. RAG系统技术规格 ✅ 已实现
12.1 性能指标
- 响应时间: 缓存命中 < 10ms,首次查询 < 2s
- 并发能力: 支持多租户并发访问
- 缓存效率: 向量存储缓存命中率 > 90%
- 存储优化: 支持大规模知识库(10万+文档)
12.2 技术特性
- 中文优化: 专门针对中文内容优化的嵌入模型
- 智能分块: 保持语义完整性的文本分割策略
- 多层缓存: 搜索结果、向量存储、文章列表三级缓存
- 租户隔离: 完整的多租户知识库隔离机制
12.3 扩展能力
- 模型切换: 支持更换不同的嵌入模型
- 存储后端: 可扩展支持其他向量数据库
- 缓存策略: 可配置的缓存过期时间和策略
- 监控告警: 内置性能监控和异常告警
TODO:
- context length management
- 小程序AI聊天界面集成
- 内容管理系统的完善