Chat 模块是知识引擎中的 AI 对话管理模块,负责管理用户与 AI 之间的对话会话和消息记录。该模块支持完整的对话生命周期管理,包括会话创建、消息存储、RAG 引用记录等功能。
核心实体设计
ChatConversation(会话实体)
数据库表名chat_conversation | 字段名 | 类型 | 说明 | 备注 | | --- | --- | --- | --- | | id | Long | 主键ID | 自增 | | conversationId | String | 会话唯一标识 | 会话唯一标识 | | userId | String | 用户ID | 关联用户 | | title | String | 会话标题 | 默认"新对话" | | createTime | LocalDateTime | 创建时间 | | | updateTime | LocalDateTime | 更新时间 | 每次操作更新 | | status | ChatConversationStatus | 会话状态 | 枚举类型 |
会话状态枚举(ChatConversationStatus) | 状态值 | 说明 | | --- | --- | | ACTIVE | 活跃状态,正常使用中 | | ARCHIVED | 已归档,不再活跃但保留 | | DELETED | 已删除,逻辑删除标记 |
设计要点 1. 软删除机制:删除操作仅将状态设为 DELETED,不进行物理删除 2. 时间追踪:记录创建和更新时间,便于排序和审计
ChatMessage(消息实体)
数据库表名chat_message
| 字段名 | 类型 | 说明 | 备注 |
| --- | --- | --- | --- |
| id | Long | 主键ID | 自增 |
| messageId | String | 消息唯一标识 | |
| conversationId | String | 所属会话ID | 外键关联 |
| type | ChatMessageType | 消息类型 | USER/ASSISTANT |
| content | String | 消息内容 | 原始内容 |
| transformContent | String | 改写后内容 | 用户问题改写结果 |
| tokenCount | Integer | Token数量 | AI回复的Token统计 |
| modelName | String | 模型名称 | 使用的LLM模型 |
| ragReferences | List
消息类型枚举(ChatMessageType) | 类型值 | 说明 | | --- | --- | | USER | 用户消息 | | ASSISTANT | AI助手消息 |
RAG引用内部类(RagReference),用于记录 AI 回复中引用的知识库内容:
| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| documentId | String | 文档ID |
| url | String | 文档URL |
| documentTitle | String | 文档标题 |
| chunkId | String | 文档块ID |
| chunkContent | String | 文档块内容 |
| similarityScore | Double | 相似度分数 |
| rerankScore | Double | 重排序分数 |
| retrievalSource | RetrievalSource | 检索来源 |
| metadata | Map
检索来源枚举(RetrievalSource) | 来源值 | 说明 | | --- | --- | | VECTOR | 向量检索 | | KEYWORD | 关键词检索 | | HYBRID | 混合检索 | | RERANK | 重排序后结果 |
设计要点 1. JSON字段存储:ragReferences 和 metadata 使用 MyBatis-Plus 的 JacksonTypeHandler 进行 JSON 序列化 2. 问题改写支持:transformContent 字段支持存储用户问题改写后的结果,用于 RAG 优化 3. Token统计:记录 AI 回复的 Token 消耗,便于成本分析 4. RAG追溯:完整记录 AI 回复引用的知识库来源,支持答案可解释性