这份文档面向你后续自己逐步开发和测试,只保留最重要的建设路线、实施步骤、架构选型原因和常见问题。
建设一套可持续扩充的 Diablo II / LoD / D2R 知识库,用于:
- 全文检索 / RAG
- 图谱检索 / GraphRAG
- 中英文混合问答
- 后续 Agent 工具调用
当前项目已经完成:
- 基础抓取
- 高价值详情页抓取
- PureDiablo 高价值补充
- 91D2 中文高价值补充
- merged 主知识层
- graph / csv / export bundle / handoff / quickstart / query recipes
- Chroma-ready 统一数据包
- 第一版可运行问答底座(FastAPI + Chroma + local graph + OpenAI-compatible LLM)
后续开发重点是:把这些结果真正接成可问答系统。
当前第一版系统快速入口:
docs/first-system-quickstart.mdscripts/smoke_test_first_system.pydocs/tier0/curated/docs/tier0/verification/README.md
以后你开发时,优先只看:
docs/tier0/merged/normalized/documents.jsonldocs/tier0/merged/chunks.jsonldocs/tier0/merged/canonical-entities.jsonldocs/tier0/merged/canonical-claims.jsonldocs/tier0/merged/provenance.jsonl
docs/tier0/merged/export-bundle.jsondocs/tier0/merged/csv/manifest.json
docs/tier0/merged/CONSUMER-GUIDE.mddocs/tier0/merged/QUICKSTART.mddocs/tier0/merged/HANDOFF.mddocs/tier0/query-recipes.mddocs/tier0/bilingual-term-map.jsondocs/data-spec-v1.mddocs/tier0/bilingual-graphrag-guidelines.mddocs/中英实体映射与知识图谱建设手册.mddocs/tier0/blizzhackers-d2data-source-assessment.mddocs/社区问答能力缺口与补强方案.md
原因:
- 纯向量检索适合找“相似文本”
- 纯图谱适合找“明确关系”
- Diablo II 既有:
- item / skill / rune / runeword / area / monster 这种结构化知识
- 又有 build / FAQ / 攻略 / 经验这种半结构化知识
所以最合理的方案不是二选一,而是:
负责:
- chunk 检索
- 证据正文
- FAQ / build / 经验内容
负责:
- 实体定位
- 关系扩展
- source / version / conflict 约束
原因:
- base 层比较干净,但覆盖有限
- high-value / purediablo 层有更高信息密度
- merged 层已经把多来源合并到一个主结果里
所以后续生产问答默认应以:
docs/tier0/merged/
作为主入口。
原因:
- 中文名、英文名、俗称、缩写都可能变化
- 若直接拿语言文本做主键,会导致:
- 中英文不统一
- 别名难合并
- 版本难治理
所以主键必须是:
canonical_id
而不是:
- 中文标题
- 英文标题
原因:
暗黑 2 的问答里大量失败都不是因为 embedding 弱,而是因为:
- 中文问法和英文知识不一致
- 军帽 / Harlequin Crest
- 精神 / Spirit
- 地穴 / The Pit
- 火炬 / Hellfire Torch
所以必须先把:
- alias
- 术语映射
- 缩写
- 中文俗称
做扎实,再调 embedding。
因为 Diablo II 是强结构化领域。
错误做法:
- 纯 512 / 1024 token 固定切块
正确做法:
- 按知识对象切
- item
- skill
- recipe
- build section
- FAQ section
这样检索质量更高。
先把规范固定,不要边做边改。
必读:
docs/data-spec-v1.mddocs/tier0/bilingual-graphrag-guidelines.md
目标:
- 明确 documents / chunks / canonical_entities / canonical_claims / provenance 字段
- 明确 alias / version / contradiction 规则
只确认 merged 主层:
merged/normalized/documents.jsonlmerged/chunks.jsonlmerged/canonical-entities.jsonlmerged/canonical-claims.jsonlmerged/provenance.jsonl
目标:
- 后续所有开发都基于 merged,不再分散看 base / high-value / purediablo
你后续真正开发时,先做这两类索引:
输入:
- canonical name
- aliases
- node_type
- short summary
输出:
- entity lookup index / embedding
输入:
- chunks
- source
- authority
- version
- language
输出:
- 向量索引 / BM25 / 混合索引
目标:
- query 先找实体,再找证据
最推荐:
- Neo4j
原因:
- 上手快
- 适合 property graph
- 容易调试
- 可以直接做关系扩展和 provenance 查询
参考:
docs/tier0/merged/NEO4J-PLAYBOOK.md
目标:
- 把 merged nodes / edges / claims / chunks 接入图数据库
推荐固定流程:
- 语言识别
- alias 扩展
- canonical entity 定位
- 图扩展
- canonical claims 检索
- provenance grounding
- chunk 召回
- authority / version / language rerank
- 生成答案
最少准备:
- 50 条中文问句
- 50 条英文问句
覆盖:
- item
- runeword
- skill
- monster / area
- quest
- build / FAQ
- 版本差异
目标:
- 看 alias 命中率
- 看 entity 命中率
- 看 evidence grounding 是否正确
优先补:
- 91D2
- TTBN
- 中文 FAQ / build / 地图 / 掉落
- 版本差异资料
适合你想快速跑起来。
步骤:
- merged jsonl + chunks 建本地检索
- alias lookup
- canonical claims + provenance 做 grounding
- LLM 生成答案
优点:
- 快
- 易调试
缺点:
- 图能力还不强
步骤:
- Neo4j 接入 merged graph
- 构建 graph neighborhood retrieval
- chunk 作为证据补充
- 版本和冲突进入排序
优点:
- 结构化问答强
- 版本/来源控制更好
缺点:
- 实现更重
- 先搭文本检索原型
- 同时导入 Neo4j
- 最后把图检索和文本检索融合
原因:
- 这是最稳的路线
- 文本层能快速出效果
- 图层能逐步增强复杂问答
- JSONL 文件本地维护
- 后续可切换对象存储 / 数据库
- Neo4j 优先
- 单独 embedding store
- 不建议和图层强耦合
最少三路:
- alias / exact match
- lexical / BM25
- vector search
GraphRAG 再加:
- graph neighborhood expansion
排序必须至少考虑:
- authority_tier
- source
- language fit
- version fit
- supporting_source_count
答案最好固定包含:
- 结论
- 适用版本
- 中英文术语
- 证据来源
- 冲突说明(如果有)
A:docs/tier0/merged/
A:
canonical-entities.jsonlcanonical-claims.jsonlprovenance.jsonlchunks.jsonlexport-bundle.json
A:因为 Diablo II 有大量结构化关系,纯向量检索不够稳。
A:因为中英文、俗称、缩写会冲突,后续无法长期维护。
A:可以抓,但不先冻结规范,后面会重构成本很高。
A:还不够。当前更像“英文知识底座 + 中文查询入口”。
A:先接 merged 主层做原型问答,再补中文高质量内容。
你后续自己开发时,不要被中间层干扰。
- 主入口是
merged/ - 规范看
data-spec-v1.md - 流程看
production-flow.md - 中英文细则看
bilingual-graphrag-guidelines.md
- 先把 merged 接成一个可问答原型
- 再做评测
- 再补中文高质量源
- 再增强 graph 关系和版本治理