SillyTavern知识图谱:结构化信息存储
·
SillyTavern知识图谱:结构化信息存储
概述
SillyTavern作为一款面向高级用户的LLM前端工具,其知识图谱系统(World Info)是其核心功能之一。该系统通过结构化的信息存储机制,为AI对话提供丰富的上下文背景,显著提升对话质量和一致性。
知识图谱架构设计
核心数据结构
SillyTavern的知识图谱采用分层的JSON结构存储,每个世界信息文件包含多个条目(entries),每个条目代表一个独立的知识单元:
{
"entries": {
"unique_id": {
"key": ["主要关键词"],
"keysecondary": ["次要关键词"],
"content": "详细内容描述",
"comment": "注释信息",
"selectiveLogic": 0,
"scanDepth": 4,
"sticky": 0,
"cooldown": 0,
"delay": 0
}
}
}
条目字段详解
| 字段名 | 类型 | 描述 | 默认值 |
|---|---|---|---|
key |
Array | 主要触发关键词 | 必填 |
keysecondary |
Array | 次要触发关键词 | 可选 |
content |
String | 知识内容 | 必填 |
comment |
String | 开发者注释 | 可选 |
selectiveLogic |
Number | 激活逻辑类型 | 0 |
scanDepth |
Number | 扫描深度 | 4 |
sticky |
Number | 粘性持续时间 | 0 |
cooldown |
Number | 冷却时间 | 0 |
delay |
Number | 延迟激活 | 0 |
激活逻辑系统
SillyTavern支持多种激活逻辑,通过selectiveLogic字段控制:
逻辑类型枚举
export const world_info_logic = {
AND_ANY: 0, // 任意关键词匹配即激活
NOT_ALL: 1, // 所有关键词都不匹配时激活
NOT_ANY: 2, // 任意关键词不匹配时激活
AND_ALL: 3 // 所有关键词都匹配时激活
};
扫描与匹配机制
深度缓冲区系统
SillyTavern采用先进的深度缓冲区机制来处理知识图谱的扫描:
class WorldInfoBuffer {
#depthBuffer = []; // 按深度排序的消息缓冲区
#recurseBuffer = []; // 递归扫描缓冲区
#injectBuffer = []; // 注入内容缓冲区
#skew = 0; // 扫描偏移量
#startDepth = 0; // 起始深度
constructor(messages, globalScanData) {
this.#initDepthBuffer(messages);
this.#globalScanData = globalScanData;
}
}
扫描上下文类型
系统支持多种上下文类型的扫描匹配:
| 上下文类型 | 字段名 | 描述 |
|---|---|---|
| 用户角色描述 | matchPersonaDescription |
用户设定的角色背景 |
| 角色描述 | matchCharacterDescription |
AI角色背景信息 |
| 角色性格 | matchCharacterPersonality |
AI角色性格特征 |
| 深度提示 | matchCharacterDepthPrompt |
角色深度提示信息 |
| 场景设定 | matchScenario |
对话场景背景 |
| 创作者注释 | matchCreatorNotes |
角色创作者注释 |
时间效应管理系统
SillyTavern实现了复杂的时间效应管理,确保知识条目的合理激活:
时间效应配置示例
// 粘性条目:匹配后持续3轮对话
{
"key": ["魔法", "咒语"],
"content": "这是一个古老的魔法咒语...",
"sticky": 3
}
// 冷却条目:激活后需要5轮冷却
{
"key": ["秘密", "机密"],
"content": "这是一个重要的秘密信息...",
"cooldown": 5
}
// 延迟条目:需要2轮延迟后激活
{
"key": ["预言", "未来"],
"content": "预言显示未来的事件...",
"delay": 2
}
高级功能特性
递归扫描机制
SillyTavern支持递归扫描,允许知识条目触发其他条目的激活:
// 递归扫描配置
export let world_info_recursive = false; // 是否启用递归
export let world_info_max_recursion_steps = 0; // 最大递归步数
预算控制系统
为了防止上下文过长,系统实现了智能的预算控制:
export let world_info_budget = 25; // 知识内容token预算
export let world_info_budget_cap = 0; // 预算上限
export let world_info_overflow_alert = false; // 溢出警告
分组评分系统
启用分组评分后,系统会对相关条目进行智能分组和优先级排序:
export let world_info_use_group_scoring = false; // 是否使用分组评分
最佳实践指南
1. 关键词设计策略
// 良好的关键词设计
const goodKeywords = {
key: ["魔法学院", "霍格沃茨", "巫师学校"],
keysecondary: ["教育", "学习魔法", "魔法训练"]
};
// 不佳的关键词设计
const badKeywords = {
key: ["魔法"], // 过于宽泛
keysecondary: ["学校"] // 容易误触发
};
2. 内容结构化建议
# 角色名称
**基本信息**: 年龄、性别、职业等
**性格特点**: 主要性格特征
**背景故事**: 详细的背景信息
**特殊能力**: 拥有的特殊技能或能力
**关系网络**: 与其他角色的关系
3. 性能优化技巧
- 使用适当的
scanDepth(通常4-6) - 合理设置
sticky和cooldown避免重复激活 - 利用
selectiveLogic精确控制激活条件 - 定期清理不再需要的知识条目
技术实现细节
文件存储结构
worlds/
├── fantasy_world.json # 奇幻世界知识库
├── scifi_world.json # 科幻世界知识库
├── historical_world.json # 历史世界知识库
└── custom_world.json # 自定义知识库
API端点设计
SillyTavern提供了完整的RESTful API用于知识图谱管理:
| 端点 | 方法 | 功能 |
|---|---|---|
/worldinfo/get |
POST | 获取世界信息 |
/worldinfo/delete |
POST | 删除世界信息 |
/worldinfo/import |
POST | 导入世界信息 |
/worldinfo/edit |
POST | 编辑世界信息 |
总结
SillyTavern的知识图谱系统通过精心的架构设计和丰富的功能特性,为AI对话提供了强大的结构化信息支持。其灵活的激活逻辑、智能的时间效应管理和高效的扫描机制,使其成为构建复杂对话场景的理想工具。
通过合理利用知识图谱系统,用户可以创建更加丰富、一致和沉浸式的AI对话体验,充分发挥大型语言模型的潜力。
更多推荐



所有评论(0)