models: Add product to chat session

This commit is contained in:
Fam Zheng 2025-08-23 22:46:55 +01:00
parent 2554150b29
commit d7cfb68587
3 changed files with 129 additions and 18 deletions

View File

@ -0,0 +1,19 @@
# Generated by Django 3.2.25 on 2025-08-23 21:46
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('products', '0106_article_is_platform_knowledge_base_and_more'),
]
operations = [
migrations.AddField(
model_name='chatsession',
name='product',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='chat_sessions', to='products.product', verbose_name='产品'),
),
]

View File

@ -447,6 +447,7 @@ class DataLabel(models.Model):
class ChatSession(models.Model):
session_id = models.CharField(max_length=128, unique=True, db_index=True, verbose_name="会话ID")
tenant = models.ForeignKey(Tenant, related_name="chat_sessions", null=True, blank=True, on_delete=models.CASCADE, verbose_name="租户")
product = models.ForeignKey(Product, related_name="chat_sessions", null=True, blank=True, on_delete=models.CASCADE, verbose_name="产品")
consumer = models.ForeignKey(ConsumerInfo, related_name="chat_sessions", null=True, blank=True, on_delete=models.CASCADE, verbose_name="消费者")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")

View File

@ -31,8 +31,8 @@
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 验证服务 │ │ 内容存储 │ │ 知识库管理
│ (二维码识别) │ │ (OSS/数据库) │ │ (品牌知识) │
│ 验证服务 │ │ 内容存储 │ │ RAG知识库
│ (二维码识别) │ │ (OSS/数据库) │ │ (向量检索) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
@ -47,24 +47,31 @@
### 4.1 AI模型集成
#### 4.1.4 智能能力调度系统
#### 4.1.1 智能能力调度系统
- **架构选择**: 直接以Tool形式接入Kimi K2无需复杂路由
- **能力分类**: 知识库检索工具、二维码扫描工具、一般问答
- **调度策略**: 依赖Kimi K2的智能判断自动选择合适的工具
- **优势**: 实现简单、维护成本低、Kimi K2原生支持
- **扩展性**: 后续可轻松添加更多工具,无需修改路由逻辑
#### 4.1.5 本地知识库系统
- **存储方案**: 向量数据库 + 文件存储
- **内容类型**: 文字、图片、视频、文档
- **检索策略**: 语义搜索 + 关键词匹配
#### 4.1.2 RAG知识库系统 ✅ **已实现**
- **存储方案**: FAISS向量数据库 + Django缓存系统
- **内容类型**: 文字、图片、视频、文档支持HTML内容清理
- **检索策略**: 语义搜索 + 相似度评分
- **更新机制**: 支持实时更新和版本控制
- **成本优化**: 本地处理减少API调用
- **性能优化**: 多层缓存策略向量缓存30天搜索结果缓存1天
**RAG流程**
- **检索(Retrieval)**:从本地知识库找到相关信息
- **增强(Augmentation)**:将检索到的信息作为上下文
- **生成(Generation)**Kimi K2基于增强的上下文生成回答
- **检索(Retrieval)**: 从本地知识库找到相关信息
- **增强(Augmentation)**: 将检索到的信息作为上下文
- **生成(Generation)**: Kimi K2基于增强的上下文生成回答
**技术实现细节**
- **向量化模型**: `shibing624/text2vec-base-chinese` 中文嵌入模型
- **文本分割**: RecursiveCharacterTextSplitterchunk_size=1000overlap=200
- **缓存策略**: 文章内容哈希签名 + 向量存储序列化缓存
- **HTML处理**: BeautifulSoup清理HTML标签提取纯文本内容
### 4.2 数据模型扩展
@ -119,6 +126,62 @@ class AIChatView(BaseView):
'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 数据安全
@ -140,10 +203,12 @@ class AIChatView(BaseView):
- 基础AI聊天功能 ✅
- 工具调用系统 ✅
- Django管理命令 ✅
2. **第二阶段 (1周)**: AI能力扩展
- 知识库检索工具集成
- 平台知识库(简化版)
- 工具调用优化和扩展
- **RAG知识库系统** ✅ **新增完成**
2. **第二阶段 (1周)**: AI能力扩展 ✅ **已完成**
- 知识库检索工具集成 ✅
- 平台知识库(完整版) ✅
- 工具调用优化和扩展 ✅
- **RAG系统性能优化** ✅ **新增完成**
3. **第三阶段 (1周)**: 小程序集成和内容管理
- 小程序AI聊天界面核心功能
- 小程序与AI服务的集成
@ -155,37 +220,63 @@ class AIChatView(BaseView):
### 9.2 里程碑
- Week 1: 完成核心架构和基础AI聊天功能 ✅ **已完成**
- Week 2: 完成知识库检索工具和RAG系统基础功能
- Week 2: 完成知识库检索工具和RAG系统基础功能 ✅ **已完成**
- Week 3: 完成小程序AI聊天集成和内容管理
- Week 4: 完成测试、优化和上线
### 11.2 开发周期
- **总周期**: 4周压缩版
- **核心功能**: AI聊天、RAG知识检索、工具调用、小程序集成、基础内容管理
- **技术栈**: Django + Kimi K2 + LangChain知识库管理+ 微信小程序 + 基础向量存储
- **技术栈**: Django + Kimi K2 + LangChain知识库管理+ 微信小程序 + FAISS向量存储
- **开发策略**: MVP优先核心功能先行小程序集成优先后续迭代优化
### 11.3 架构设计总结
**核心架构选择直接以Tool形式接入Kimi K2**
**核心架构选择直接以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
- context length management
- 小程序AI聊天界面集成
- 内容管理系统的完善