蒿草知识图谱问答系统
2025 年 9 月 — 2025 年 12 月 | 独立全栈开发
项目简介:围绕蒿属(Artemisia)植物学知识,构建了一个基于知识图谱与大语言模型的智能问答平台。用户以中文自然语言提问,系统从 Neo4j 图数据库中检索相关结构化知识,由 DeepSeek 大模型生成带来源引用的回答,并在前端以交互式力导向图实时可视化展示检索到的子图。
技术选型:Python / Django 6.0 / Neo4j 5.x / DeepSeek API / jieba / JavaScript / vis-network / CSS (OKLCH)
我的工作:
知识建模:在 Neo4j 中设计 13 种节点类型(Plant、ChemicalCompound、Location、Use、Habitat、Family、Genus、Section、Series、Alias、Adaptation、FloweringPeriod、Allergen)及关系模式,为数百条蒿属百科数据完成结构化入库,配置 CJK 全文索引。
后端核心开发:
封装 Neo4j 只读客户端(~560 行),实现「全文索引优先 → jieba 分词降级」双路径检索、节点邻域 1-3 跳展开、结果去重合并、大整数 ID 安全转换
封装 DeepSeek LLM 调用器(OpenAI 格式),覆盖超时/鉴权/限流等错误分级处理
设计并实现三阶段 QA 流水线:意图分类 + 实体抽取(单次 LLM 调用)→ 图谱检索 + 邻域扩展 → LLM 带来源编号引用的答案生成
开发 6 个 RESTful JSON API 端点(/api/ask/、/api/graph-data/、/api/graph-stats/、/api/search-nodes/、/api/node-types/、/api/nodes/)
前端交互开发:
手写 ~870 行 JS 实现问答交互与图谱可视化,包括 18 种节点类型配色系统、节点详情弹窗(智能避让定位)、双击邻域展开、类型筛选侧边栏(Ctrl+多选)、问答-图谱双向联动(引用徽章点击展开节点、追问按钮自动填充提交)
从零搭建 ~800 行 CSS 设计系统,OKLCH 色空间 Design Tokens,WCAG 2.1 AA 对比度,双断点响应式布局
安全设计:Cypher 全参数化防注入、只读 Session 隔离、JS 大整数精度保护
项目成果:完成了一个从数据层到展示层全链路打通的端到端系统,可对蒿属植物分类、化学成分、地理分布、用途等维度的自然语言问题进行带溯源的智能回答,支持交互式图谱探索。项目仓库含 140 行 README 文档和完整 API 文档。
关键收获:
理解了知识图谱「实体-关系」模型相比关系型数据库在表达语义关联上的优势
掌握了 Prompt Engineering 在实际工程中的要点(约束输出格式、禁止幻觉、强制引用)
认识到前后端数据类型不一致(如 Node ID 精度)是实际工程中容易被忽视但影响重大的问题
学会用文档驱动开发——先写 README 再写代码,减少返工和记忆成本