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

282 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```python
# 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聊天界面集成
- 内容管理系统的完善