← 返回全部文章

把《史记》做成知识图谱:shiji-kb 上手教程

一个开源项目把《史记》57.7 万字拆成实体、事件、关系和 Wiki 页面。这里按在线体验、本地运行、深度研究三条路径整理成教程。

《史记》知识库 shiji-kb 是一个很适合拿来观察 AI 知识工程的开源项目。它没有停在电子书层面,而是把 57.7 万字拆成实体、事件、关系、章节页面和 Wiki 网络。

项目目前公开的数据很扎实:14,065 个实体词条,126,441 次标注;3,198 个历史事件,7,637 条事件关系;还有 20,830+ 个 Wiki 页面。读者看到的高亮、跳转、搜索和地铁图,背后都是这些结构化数据在起作用。

先在线体验

最快的方式是直接打开站点:

第一次看,建议从几个熟悉章节开始,比如《项羽本纪》《高祖本纪》《孔子世家》《刺客列传》。进入章节后,先观察两件事:一是人名、地名、官职、时间、邦国等标注颜色;二是每个词条是否能继续跳到对应页面。

右上角的设置面板可以关闭高亮。想安静读书,就关掉标注;想研究人物和地点,就打开高亮,把它当成一套古籍阅读辅助层。

再看史记地铁图

地铁图是这个项目里很直观的入口。它把《史记》 130 篇变成 130 条线路,把历史事件做成站点,并按时间轴排布。

使用方法很简单:

  1. 打开 https://baojie.github.io/shiji-kb/app/metro/
  2. 用鼠标滚轮缩放,拖拽移动视图。
  3. 在搜索框输入人物、地点或事件名。
  4. 点击站点,看事件说明、涉及人物、地点和章节来源。
  5. 在侧边栏勾选特定线路,比如只看《秦本纪》或《项羽本纪》。

这张图适合解决一个传统阅读里很麻烦的问题:同一个人物或事件分散在不同章节,线性阅读时很容易断掉。地铁图把这些交叉点显出来,读历史的路径会清楚很多。

本地运行教程

如果想自己研究代码和数据,可以把仓库拉到本地:

git clone https://github.com/baojie/shiji-kb.git
cd shiji-kb

仓库已经包含生成后的 docs/ 静态站点。只想本地浏览,不需要先跑完整构建,直接启动 HTTP 服务即可:

./serve.sh 8888

然后打开:

http://localhost:8888/chapters/
http://localhost:8888/wiki/
http://localhost:8888/app/metro/

这里不要直接双击 HTML 文件。项目里的特殊读音、搜索索引和页面数据需要通过 HTTP 加载,本地 file:// 访问会碰到浏览器跨域限制。

重新生成章节页面

如果只想看渲染链路,可以先生成单章:

python3 render_shiji_html.py chapter_md/001_五帝本纪.tagged.md

要批量生成 130 篇章节页面:

python3 generate_all_chapters.py

项目里还有一个发布脚本,会生成章节、修正路径、构建搜索索引,并准备 GitHub Pages 需要的 docs/ 目录:

./publish_to_docs.sh

如果只是学习,不建议一上来跑全量发布脚本。先看单章渲染,再看 generate_all_chapters.py 怎么扫描 chapter_md/,最后再看发布脚本处理了哪些文件路径和索引。

读仓库时重点看什么

第一层看 chapter_md/。这里是一百三十篇带标注的章节文件。标注符号对应人名、地名、时间、官职、邦国、器物、礼仪、刑法等类型。读懂这一层,就能理解语法高亮从哪里来。

第二层看 render_shiji_html.pygenerate_all_chapters.py。前者负责把标注文本渲染成 HTML,后者负责批量处理章节、生成导航和索引。

第三层看 app/metro/。这个目录是史记地铁图,核心文件是 index.htmlmetro.jsmetro.cssdata/metro_map_data.json。数据里每个站点都有年份、人物、地点、描述和章节信息。

第四层看 wiki/docs/wiki/。这里是百科式页面网络,包括人物、事件、地名、邦国、故事、概念等页面类型。wiki/doc/query-syntax.md 还记录了页面里如何嵌入 ::: query 查询块,比如筛出精品人物页,或按引用次数排序。

第五层看 skills/。这个项目很有意思的一点,是把知识工程流程写成大量 Skill 文档:校勘、结构分析、实体构建、事件构建、关系构建、本体构建、逻辑推理、应用构造。它不像普通项目只交付代码,更像把一套古籍处理方法论也开源出来。

可以怎么用

历史爱好者可以把它当增强阅读器。打开章节,先关掉高亮通读,再打开标注看人物、地点、官职和事件之间的关系。

做内容的人可以把它当素材索引。比如要写鸿门宴、荆轲、韩信、秦灭六国,先在 Wiki 和地铁图里找人物、地点、事件链,再回到章节核对文本。

AI 工程师可以把它当知识工程样板。它展示了一个从古籍文本到结构化知识库的完整路径:文本标注、事件抽取、关系发现、 Wiki 页面、可视化应用,再到 Agent 维护和反思机制。

这个项目最值得学习的地方,是它没有停在“让 AI 总结古籍”。它把古籍拆成可验证、可跳转、可复用的数据结构。对古文化内容来说,这比单纯做问答更踏实。

源地址

来源:https://github.com/baojie/shiji-kb