山东大学软件学院项目创新实训开发日志(5)之中医知识问答UML图设计

根据上篇博文对中医知识问答功能模块的数据库设计,为更好的进行理解与开发,所以进行了UML图设计,实现可视化介绍

UML图

山东大学软件学院项目创新实训开发日志(5)之中医知识问答UML图设计_第1张图片

UML 类图描述

1. `conversations` 类

  • 功能概述:代表对话管理模块,用于管理用户与问答系统之间的多轮对话记录。
  • 属性
  • `conv_id`:对话的唯一标识符,数据类型为整数,用于唯一标识每一次对话。
  • `user_id`:关联用户的标识符,数据类型为整数,表明该对话属于哪个用户。
  • `title`:对话的标题,数据类型为字符串,用户可以设置对话的标题,例如“舌苔相关问题”。
  • `created_at`:对话创建的时间,数据类型为日期时间类型,自动记录对话创建的时间点。
  • `updated_at`:对话更新的时间,数据类型为日期时间类型,自动记录对话最后一次更新的时间点。
  • 操作
  • `createConversation()`:创建新的对话记录,并生成唯一的 `conv_id`。
  • `updateConversation()`:更新对话的相关信息,如标题或其他属性。

2. `messages` 类

  • 功能概述:代表消息记录模块,用于记录用户和 AI 助手之间的每一条问答消息,支持多语言与不同内容类型。
  • 属性
  • `msg_id`:消息的唯一标识符,数据类型为整数,用于唯一标识每一条消息。
  • `parent_msg_id`:父消息的标识符,数据类型为整数,用于表示消息之间的关联关系,如回复消息与原始消息的关系。
  • `conv_id`:关联对话的标识符,数据类型为整数,将消息与具体的对话进行关联。
  • `content_type`:消息的内容类型,数据类型为字符串,支持 `text` 和 `file` 两种类型。
  • `language`:消息的语言类型,数据类型为字符串,支持中英文等多种语言。
  • `content`:消息的具体内容,数据类型为字符串,存储用户或助手发送的消息文本。
  • 操作
  • `saveMessage()`:保存用户与助手的消息内容及其发送顺序。

3. `attachments` 类

  • 功能概述:代表附件处理模块,用于存储用户上传的图片、语音或视频等中医相关文件资料。
  • 属性
  • `attachment_id`:附件的唯一标识符,数据类型为整数,用于唯一标识每一个附件。
  • `msg_id`:关联消息的标识符,数据类型为整数,将附件与具体的消息进行关联。
  • `file_type`:附件的文件类型,数据类型为字符串,支持 `image`、`audio`、`video`、`file` 等多种类型。
  • `file_path`:附件的文件路径,数据类型为字符串,存储文件在 OSS/S3 等存储系统中的 URL。
  • `thumbnail`:附件的缩略图,数据类型为字符串,存储附件的缩略图信息(如果有)。
  • `file_size`:附件的文件大小,数据类型为整数,记录文件的大小。
  • `duration`:附件的时长(对于音视频文件),数据类型为整数,记录音视频文件的时长。
  • 操作
  • `attachFile()`:将文件作为附件绑定到具体的消息上。

4. `knowledge_embeddings` 类

  • 功能概述:代表 RAG 知识向量检索模块,实现基于嵌入向量的中医知识语义检索,支持问答系统“以文生成回答”。
  • 属性
  • `embedding_id`:知识嵌入的唯一标识符,数据类型为整数,用于唯一标识每一条知识嵌入记录。
  • `original_text`:原始的中医文本资料,数据类型为字符串,存储如《黄帝内经》《本草纲目》中的段落内容。
  • `embedding_vector`:嵌入向量,数据类型为数组,将原始文本转换为向量形式(如 768 维),用于语义相似度检索。
  • `metadata`:元数据,数据类型为字符串,记录文档来源、时间、标签等信息,支持溯源与过滤。
  • 操作
  • `convertToEmbedding()`:将原始中医文本资料转换为向量嵌入。
  • `retrieveBySimilarity()`:根据输入的向量,结合语义相似度检索,从知识嵌入中找到相关的中医知识段落。

类之间的关系:

  • `conversations` 类与 `messages` 类是一对多的关系(`conversations` "1" -- "0.." `messages`),表示一个对话可以包含多条消息。
  • `messages` 类与 `attachments` 类是一对多的关系(`messages` "1" -- "0.." `attachments`),表示一条消息可以有多个附件。
  • `knowledge_embeddings` 类与 `messages` 类是一对多的关系(`knowledge_embeddings` "1" -- "0.." `messages`),表示知识嵌入为生成消息(回答)提供支持。

你可能感兴趣的:(2025创新项目实训,uml,java,人工智能,nlp)