游戏NPC对话系统的数据库设计文档
本数据库设计文档用于存储和管理游戏中NPC与玩家交互的相关数据,包括历史文档、文本块、NPC背景信息等。目的是实现高效的查询和相似度检索,以便为玩家提供与NPC相关的个性化对话体验。
1. 数据库概述
该系统的数据库由 **关系型数据库(PostgreSQL)** 和 **向量数据库(如Elasticsearch)** 组合构成。
- **PostgreSQL** 用于存储NPC信息、文档元数据等结构化数据。
- **Elasticsearch** 用于存储文本块的嵌入向量并执行相似度检索。
2. 数据库表结构设计
2.1 NPC表
用于存储游戏中所有NPC的信息。
- **id**: 主键,NPC的唯一标识。
- **name**: NPC的名称。
- **background\_info**: NPC的详细背景信息。
- **related\_document\_ids**: 与NPC相关的文档ID列表(外键,指向文档元数据表)。
2.2 文档元数据表
用于存储与历史和文化相关的文档信息。
- **document\_id**: 主键,文档的唯一标识。
- **title**: 文档的标题。
- **content\_summary**: 文档内容的摘要,用于基本搜索和快速筛选。
- **tags**: 文档的标签,例如“饮食”、“神话”等,用于确定文档的主题或类别。
2.3 文档块表
用于存储分割后的文档文本块及其向量。
- **document\_id**: 外键,指向文档元数据表中的文档ID,标识此文本块所属的文档。
- **content**: 文本块的内容,