章节 01
导读 / 主楼:Star Trek GraphRAG:构建知识图谱驱动的角色对话系统与AI剧集创作
一个基于GraphRAG技术的《星际迷航:下一代》知识图谱项目,将176集、7万多句台词、2143个角色数据整合到Neo4j图数据库中,实现本地零成本的角色聊天机器人和AI剧集创作功能。
正文
一个基于GraphRAG技术的《星际迷航:下一代》知识图谱项目,将176集、7万多句台词、2143个角色数据整合到Neo4j图数据库中,实现本地零成本的角色聊天机器人和AI剧集创作功能。
章节 01
一个基于GraphRAG技术的《星际迷航:下一代》知识图谱项目,将176集、7万多句台词、2143个角色数据整合到Neo4j图数据库中,实现本地零成本的角色聊天机器人和AI剧集创作功能。
章节 02
章节 03
在生成式AI时代,大型语言模型面临一个核心挑战:如何在保持对话连贯性的同时避免幻觉(hallucination)?传统的RAG(检索增强生成)方法通常将大量文本直接塞入上下文窗口,但这既昂贵又低效。
本项目采用了一种更优雅的解决方案——GraphRAG(图检索增强生成)。开发者将《星际迷航:下一代》(TNG)的全部176集内容——包含70,544句台词、2,143个角色——构建成一个完整的知识图谱,存储在Neo4j图数据库中。这种方法不仅实现了零成本的本地嵌入,还创造了一种全新的角色交互体验。
章节 04
项目由三个主要模块组成,形成了一个完整的生成式AI应用栈:
1. 知识图谱构建(Knowledge Graph)
所有TNG剧集数据被加载到Neo4j中,构建了包含剧集、场景、台词、角色、地点、飞船等实体的完整关系网络。这种图结构允许进行复杂的关联查询,例如"找出与Data同框次数最多的角色"或"Worf和Gowron共同出现的剧集"。
2. 角色聊天机器人(Character Chatbots)
用户可以与Picard、Worf、Data等任意角色对话。系统的关键在于:LLM的回答严格基于正典台词,不会编造角色背景故事。如果询问的内容不在图谱中,角色会诚实表示没有相关记录。
3. AI剧集创作(Episode Writer)
多智能体写作室功能,让多个角色智能体协作创作符合正典风格的新剧集。
章节 05
传统RAG方法会将50万+个词元的台词全部送入上下文窗口,而GraphRAG采用了一种更聪明的策略:
用户问题
│
▼
使用nomic-embed-text-v1.5进行本地嵌入(零成本)
│
├──► Qdrant(语义检索) Neo4j(结构上下文)
│ "与查询相似的台词" "剧集+关系上下文"
│ │ │
└─────────┴──────────────────────┘
│
▼
约3,500词元的上下文块
│
▼
Claude Opus → 角色回复
这种设计将每次对话的上下文从50万+词元压缩到约3,500词元,大幅降低了API调用成本,同时保持了回答的准确性和相关性。
章节 06
项目提供了完整的数据处理管道:
scripts/ingest_tng.py将数据导入Neo4j(首次运行约10分钟)src/embedder.py构建Qdrant向量索引(首次运行约7分钟,纯CPU)章节 07
项目提供了丰富的Cypher查询示例,展示了图数据库的强大能力:
查找角色台词数量排名:
MATCH (l:Line)-[:SPOKEN_BY]->(c:Character)
RETURN c.canonical_name AS character, count(l) AS lines
ORDER BY lines DESC LIMIT 20
查找共同出现的角色:
MATCH (w:Character {canonical_name: "WORF"})-[:APPEARS_IN]->(e:Episode)
MATCH (g:Character {canonical_name: "GOWRON"})-[:APPEARS_IN]->(e)
RETURN e.title, e.stardate ORDER BY e.stardate
搜索特定主题的台词:
MATCH (l:Line)-[:SPOKEN_BY]->(c:Character {canonical_name: "PICARD"})
WHERE toLower(l.text) CONTAINS "duty"
RETURN l.text LIMIT 25
章节 08
项目提供了简洁的命令行界面:
# 与Picard对话(默认)
./trek
# 与Worf对话,检索60条相关台词
./trek --character WORF --top-k 60
# 与Data对话
./trek --character DATA