项目背景与上线结果
合作背景
- 合作单位: 政策证据知识图谱平台由新加坡国立大学计算机学院与商学院合作开展。
- 研究要求: 研究需求在导师指导下形成,围绕气候政策证据的组织、核验与综合展开。
- 项目周期: 项目于 2026 年 1 月至 6 月完成研究开发与交付。
- 平台目标: 论文先转化为带原文锚点的结构化证据,再由知识图谱连接政策工具、结果、方法、地区与论文,受约束的问答服务据此完成概念解释和跨论文综合。
研究问题
- 同一种政策工具可能采用不同术语,名称漂移会切碎检索结果和概念关系。
- 效应估计、方法说明与适用条件可能埋在正文、表格或附录中,普通关键词检索难以完整定位。
- 研究结论需要保留论文身份、原文片段、页码语境和表格位置,回答才能回到可检查的来源。
- 跨论文比较需要同时呈现结果方向、研究方法、地区情境与限定条件,避免把异质结论压缩成单一判断。
- 分类、规范名、重复概念与译名需要经过审核和可撤销的治理流程,才能保持数据口径一致。
交付结果
- 平台已面向内部公开上线,最高触达规模近 100 名访客。
- 双语产品覆盖研究入口、证据浏览、知识图谱探索、受约束问答和治理操作,共享相同的概念与来源身份。
- 实际上线将长时间入库、流式回答、会话保存、反馈记录、管理权限和故障恢复纳入同一生产闭环。
- 平台作为内部研究基础设施运行,研究查询与管理写入采用分层访问边界。
项目分工与技术职责
Chunxiao Ren 担任项目的主要技术实现者。主导研究需求的技术落地与核心系统研发,覆盖文献数据工程、知识图谱与智能问答服务、Web 产品交付及生产环境建设。
文献数据工程
- 将导师指导下的研究要求转化为数据模式、原文锚定规则、阶段门槛和审核状态。
- 组织文档解析、证据抽取、表格引用、书目修复与版本化结构产物,使每条记录能够回到来源。
- 为长时间入库建立持久任务、追加日志、阶段对账和恢复流程,保留部分成功与失败原因。
知识图谱与 Agent
- 设计论文、证据、政策工具、结果、方法和情境之间的图关系及规范概念治理流程。
- 建立受约束的路由、检索、区块生成、引用核验和置信度计算,使生成内容只使用已检索证据。
- 将证据不足、结构失败、引用缺失和拒答建模为明确状态,并保持知识图谱读取与治理写入的边界。
React Web 产品
- 交付双语研究界面,覆盖 Wiki、证据库、详情、图谱探索、问答、会话历史、入库进度和治理后台。
- 以带类型的载荷驱动答案区块、证据卡、引用跳转和局部状态,减少界面对自由文本的二次推断。
- 协调流式展示、分层缓存、延迟加载和错误恢复,使已完成区块在局部故障时仍可使用。
生产环境建设
- 建立应用、Agent、数据服务与持久存储的部署边界,支持双语产品在生产环境中持续运行。
- 配置反向代理、加密访问、进程监管、日志和健康检查,处理流式响应与长时间任务的运行要求。
- 将公开入口、普通研究读取和受保护治理写入分层,并通过重启恢复与持久状态降低中断影响。
端到端架构
平台采用一个 React Web 应用、一个受约束的 FastAPI Agent 和一个 FastAPI 知识图谱与数据服务。组件通过带类型的载荷连接,浏览器负责研究交互,Agent 负责问答编排,数据服务负责证据与图关系。
1. React Web 应用
- 职责: 呈现双语导航、Wiki、证据浏览、图谱探索、问答、会话、入库进度和治理界面。
- 输入: 接收用户问题、界面语言、筛选条件、上传选择和审核操作,并读取服务返回的带类型载荷。
- 输出: 按回答类型渲染固定页面骨架、答案区块、证据卡、引用标签、任务进度和治理状态。
- 状态与故障: 分别展示加载、就绪、空结果、局部失败和跳过状态;单个区块失败时,其他已就绪区块继续保持可读和可操作。
- 边界: 界面不从长段文本猜测引用关系,也不补造载荷中缺失的证据字段。
2. 受约束的 FastAPI Agent
- 职责: 完成问题路由、检索编排、答案区块生成、流式事件组织和程序化置信度计算。
- 输入: 接收问题、界面语言和查询范围,并使用数据服务返回的证据集合或确定性统计。
- 输出: 返回回答类型、预期区块、区块载荷、证据卡、引用身份、相关论文和置信度元数据。
- 状态与故障: 模型输出必须通过预期结构与引用校验;缺少支撑或结构不合格的内容进入失败、跳过或拒答状态。
- 边界: 服务对知识图谱保持只读,生成过程只能使用检索结果和确定性统计提供的上下文。
3. FastAPI 知识图谱与数据服务
- 职责: 集中处理论文入库、证据审核、分类体系治理、概念去重、语义检索、确定性图查询和图谱读写。
- 输入: 接收经过预检的文档批次、审核动作、治理操作以及 Agent 提交的受约束检索条件。
- 输出: 提供论文身份、政策工具、结果、方法、情境、效应信息、证据引用和检索相关度,并持久化审核后的图关系。
- 状态与故障: 入库阶段保存持久状态、追加日志和结构化产物;字段缺失时返回明确空值,阶段失败时保留原因与可恢复检查点。
- 边界: 普通研究查询与治理写入分离,检索向量、规范概念和图语义在该服务中维护一份。
两条核心数据流
- 问答流: 浏览器问题与界面语言 → Agent 路由与参数提取 → 数据服务语义检索或确定性图查询 → Agent 生成带类型区块 → 浏览器展示与交互。
- 数据服务提供带来源链的证据集合。
- Agent 负责答案结构、引用核验和终止状态。
- 浏览器依据稳定身份打开对应论文、原文和图节点。
- 入库流: 管理界面上传预检 → 数据服务创建持久任务 → 分阶段结构化处理 → 证据校验与人工审核 → 数量对账 → Neo4j 物化。
- 每个阶段以版本化产物传递结果。
- 未满足证据门槛的记录停留在审核队列。
- Agent 不参与数据变更,研究提问不会触发抽取或图谱写入。
存储职责
- Neo4j: 保存论文、证据、政策工具、结果、方法和情境之间需要遍历的研究关系。
- SQLite: 保存具有顺序、状态迁移和频繁更新特征的任务、会话、日志索引与反馈。
- 版本化结构产物: 保存解析文本、抽取原始结果、表格引用、审核输入和图谱物化前的可信集合,支持审计与重建。
- 一致性边界: 图数据库与关系库之间不执行隐式双写,会话和任务只引用稳定研究身份,派生图可由审核后的结构产物重建。

首页把知识结构与研究入口放在同一视图,通过双语分类卡片进入 Wiki。问答、证据库与图谱探索保持独立入口,同时共享相同概念身份,导航可以从概览进入具体来源。
15 阶段数据与知识图谱流水线
论文入库被拆分为十五个可观察、可恢复的阶段:
- 将 PDF 解析为保留版面信息的结构化文档;
- 展平解析结果并写入稳定页码标记;
- 先发现候选结论,再按模式生成证据记录(finding);
- 使用独立 critic 复核抽取内容与来源支撑;
- 将政策工具名称归并到已有规范概念;
- 生成能够回到原文位置的证据片段;
- 修复缺失的分类体系(taxonomy)字段;
- 把论文、证据记录、证据片段、政策工具、结果与方法写入 Neo4j;
- 使用权威书目元数据修复疑似文件代号的论文标题;
- 按当前分类体系完成政策工具分类;
- 为论文生成政策工具、领域、目标、结果、主体与触发因素标签;
- 在分类完成后生成跨论文主题综述;
- 在结构护栏下发现并合并重复政策工具概念;
- 补齐概念与标签的中文展示名;
- 审核中文名中的错译、生硬表达和未翻译文本。
四个阶段组
- 文档与证据组,第 1 至 7 阶段: 完成版面解析、页码稳定化、候选发现、结构规范化、critic 复核、概念归并、证据片段生成和基础分类字段修复。
- 图谱物化与书目修复组,第 8 至 9 阶段: 将可信记录写入 Neo4j,并使用权威书目元数据修复异常标题。
- 语义治理组,第 10 至 13 阶段: 完成政策工具分类、论文标签、跨论文综述和重复概念合并。
- 本地化组,第 14 至 15 阶段: 补齐中文展示名并审核错译、生硬表达与未翻译文本。
- 阶段依赖: 综述依赖已完成的分类标签,概念合并保留关系与撤销快照,中文名只改变展示字段。
证据门槛与审核
- 抽取粒度: 候选发现先定位表达政策效果的段落或表格,结构规范化再生成包含政策工具、结果、情境和方法的严格记录。
- 原文匹配: 候选引文必须匹配解析后的来源片段;公式标记、连字符或排版变化造成偏移时,受限的模糊重定位重新锚定并记录位置。
- 表格证据: 记录保留表格身份、行列语境、页码和轻量引用,避免多维表格被压缩成失去上下文的纯文本。
- critic 复核: 独立检查结论与来源支撑,识别方向反转、数值错误、方法描述误作结论、限定条件缺失和来源不足。
- 审核队列: 无法定位、数字不一致、页码语境缺失或语义支撑不足的候选进入审核;原始输出、失败原因和建议修正字段继续保留。
- 状态迁移: 接受、修正与拒绝形成新的审核状态,后续图谱阶段只读取可信集合,待审记录不进入研究问答。
增量任务与全库任务
- 逐篇增量: 解析、抽取、证据生成与书目修复按当前批次和受影响论文执行。
- 全库依赖: 跨论文综述、重复概念发现和部分分类重建读取当前语料状态,并通过产物版本、图查询条件和受影响集合限定范围。
- 执行边界: 新增论文无需重跑全部高成本阶段,全库关系变更也不会被当作简单追加。
- 产物传递: 阶段之间以版本化结构产物交换结果,后续任务验证输入版本后再运行。
状态、恢复与数量对账
- 持久任务: 运行批次、十五个阶段任务、追加日志、输入摘要、结果摘要和产物引用写入持久状态,界面刷新后仍能恢复进度。
- 状态模型: 阶段采用等待、运行、完成、失败、中断和跳过状态;父运行结果由全部阶段的终态推导。
- 中断恢复: 服务重启时,遗留的运行状态转为中断状态,并保留最后完成阶段、现有产物和可选恢复动作。
- 定点重试: 失败阶段可按论文集合重试,系统从可靠检查点读取输入并验证上游产物版本,审计链继续沿用原批次。
- 幂等执行: 图谱写入等外部变更使用稳定身份和对账查询,重复运行不会复制论文或证据节点。
- 串行约束: 数据变更阶段显式串行执行,避免高成本阶段同时修改同一批次;问答读取仍可独立运行。
- 数量对账: 关键转换比较预期、实际处理、跳过与异常集合;任何缺失都会使阶段保持未完成,并阻止依赖该结果的后续物化或治理。
- 集合核验: 对账交叉检查源批次、结构化产物与 Neo4j,避免总量相同但记录集合不一致。
- 部分成功: 已经完成的产物保持可见和可复用,中断批次不会被呈现为完整入库。
成本控制
- 阶段分级: 全文候选发现、结构规范化与 critic 复核影响下游语料质量,采用能力更强的模型层级和更严格的结构检查。
- 轻量处理: 短文本分类、翻译与候选判定采用成本更低的模型层级,低置信结果进入人工审核。
- 范围控制: 高成本全库任务依据受影响集合运行,已审核且版本一致的产物直接复用。
- 运行复盘: 日志记录阶段配置层级、处理摘要和异常集合,支持按阶段比较成本与质量,无需暴露具体模型标识。
受约束的 AI 问答
Agent 在生成前先确定回答类型,再把检索参数、证据集合和页面结构交给对应契约。
路由与检索
- T1,概念解释: 处理政策工具定义、类型和相关概念,输出 C0 到 C7 概念页。
- T2,跨论文综合: 处理影响、比较、共识、分歧和异质性,输出 L0 到 L4 分析页。
- T3,语料库元数据: 通过允许列表中的图查询模板返回统计、列表和图表载荷。
- T4,明确拒答: 覆盖未来预测、无来源反事实、即时外部事实、闲聊、系统探测和语料外问题。
路由参数
- 意图: 区分定义、影响、比较、语料统计和范围外问题。
- 研究对象: 提取政策工具、结果、地区、时间范围、方向和方法要求。
- 复杂问题: 拆分为有顺序的子问题,分别检索后再合并。
- 护栏: 语料统计问题固定进入 T3;具备政策对象和影响关系的问题进入证据检索;非法参数会被收窄并返回范围说明。
双语检索
- 中文问题生成受控的英文等价表达,与原问题共同参与语义召回。
- 用户明确提供的地区、方向、工具和表格要求用于结构化过滤。
- 关键词命中参与软排序,避免硬匹配切断同义表达和跨语言召回。
- 语义结果为空或覆盖过窄时,确定性图查询从规范概念和允许的邻接关系补充候选。
合并与来源控制
- 子问题结果按原始顺序合并,稳定身份用于第一轮去重。
- 同一论文中高度重叠的证据范围继续合并,独立结果和独立情境仍被保留。
- 单篇论文上限在全部结果合并后统一执行,减少单一来源支配综合答案。
- 图谱扩展需要已有种子证据,并记录召回路径和关系类型。
- 每条候选携带论文身份、证据身份、页码语境、方法、情境、效应字段和过滤原因。
结构化区块契约
- 固定身份: 每个区块都有稳定标识、预期状态和载荷模式。
- 确定性字段: 数据库计数、规范记录、工具行和覆盖指标直接进入载荷。
- 模型辅助字段: 定义解释、共识描述和异质性分析只能读取已召回证据。
- 引用关系: 正文引用必须解析到同一响应中的证据卡,证据卡必须关联有效论文元数据。
- 格式失败: 输出未通过模式校验时,只将对应区块标为错误,其他区块继续渲染。
- 终止对账: 统一核对区块状态、引用、证据卡、相关论文和置信度输入。
置信度范围
- T1 依据定义一致性、引用支撑、语料覆盖和最终区块完整度计算。
- T2 依据结论收敛、独立来源、研究方法质量、引用覆盖和最终区块完整度计算。
- T3 使用确定性查询结果,T4 表达语料边界,两类回答不附加综合置信度。
- 分数描述当前答案在当前语料中的支撑程度,适用范围限定在用户实际收到的内容。
T1:C0 到 C7 概念页
区块职责
- C0,核心定义: 给出带引用的概念解释,引用贴近具体陈述。
- C1,类型边界: 说明规范概念、常见子类型和容易混淆的相邻概念。
- C2,实施背景: 按地区和指标组织当前语料能够支撑的实施信息。
- C3,时间线: 使用带日期和来源的政策或研究里程碑。
- C4,概念关系: 展示机制、结果、风险和相关研究实体的有类型关系。
- C5,本库覆盖: 由数据库计算论文、地区、方法和覆盖缺口。
- C6,代表证据: 展示逐篇论文、研究方法、结论摘要和原文入口。
- C7,后续问题: 从当前证据集合生成可以继续检索的问题。
核心与可选状态
- 核心区块包括定义、本库覆盖和代表证据。
- 实施背景、时间线、关系图和后续问题根据证据情况进入就绪或跳过状态。
- 定义支撑不足时,C0 显示来源限制,页面继续提供本库覆盖和逐篇证据。
- 任一可选区块失败时,已完成的证据卡和引用关系保持可用。

- 可见内容: 回答类型、概念定义、类型卡片、引用入口和会话上下文。
- 交互结果: 引用打开对应证据,固定卡片顺序保持流式更新时的页面稳定。

- C2 展示: 地区指标、政策状态及其来源。
- C3 展示: 带日期的里程碑和独立区块状态。
- 降级行为: 时间线证据不足时跳过 C3,C0 到 C2 继续保留。

- C4 展示: 政策工具与机制、结果、风险和研究实体之间的关系。
- C5 展示: 本库实际拥有的论文、地区、方法和覆盖缺口。
- 导航: 关系节点可以继续进入图谱探索,覆盖卡继续进入对应证据集合。

- C6 展示: 作者、年份、期刊、方法、证据摘要和原文入口。
- C7 展示: 由当前证据推导的后续问题,继续进入对应回答类型。
- 置信度: 说明分数组成、缺失区块和适用范围。
- 下钻路径: 概念区块 → 论文卡 → 原文证据 → 图谱关系。
T2:L0 到 L4 跨论文综合
区块职责
- L0,证据基础: 统计独立论文、研究设计、年份和语料覆盖。
- L1,工具盘点: 列出进入分析的政策工具及其证据规模。
- L2,单工具综合: 分别呈现共识、分歧、限制和代表来源。
- L3,跨工具比较: 对齐效应方向、可比指标、支持来源和限制。
- L4,异质性: 按地区、行业、方法和实施设计呈现差异。
生成边界
- L0、L1 和结构化比较行来自确定性记录与数据库计算。
- L2 和 L4 的解释文字读取对应的证据卡集合。
- 混合方向保留为分歧,稀疏工具保留为覆盖不足。
- 比较条件不足时,页面返回逐篇证据、更窄的结论和明确证据缺口。

- 来源仪表盘: 先列出进入综合的论文规模、工具分布和研究设计构成。
- 首屏状态: 确定性仪表盘可以先进入就绪,模型辅助区块继续处理。
- 阅读顺序: 用户先检查证据基础,再阅读单工具共识和异质性解释。

- L3 比较表: 将方向、可用效应信息、支持论文和研究限制放在同一行。
- 证据缺口: 列出语料当前缺少的地区、结果或工具比较。
- 引用覆盖: 按独立论文核对实质性综合,并抑制同一来源的重复记录。
- 局部失败: L2 或 L4 超时后,L0、L1、已有比较行和逐篇证据继续可用。
T3:语料库元数据
- 输入: 论文数量、期刊分布、概念覆盖和其他关于语料库自身的问题。
- 执行: 路由选择允许列表中的图查询模板并提取受控参数。
- 输出: 结构化数字、列表或图表载荷,中英文页面共享同一数值来源。
- 边界: 语言层只生成标签和句式,统计值保持数据服务返回结果。
T4:明确拒答
- 适用范围: 未来预测、无来源反事实、即时外部事实、语料未覆盖的地方政策知识、闲聊和系统探测。
- 输出: 说明当前语料可支持的范围,并提供能够进入证据检索的改写方向。
- 证据规则: 无关论文不会进入拒答内容,页面不附加程序化置信度。
区块级 SSE 状态
- 开始事件: 发送回答类型和预期区块列表,前端建立固定页面骨架。
- 处理中: 每个区块独立进入加载、就绪、错误或跳过状态。
- 并行任务: 互不依赖的检索和生成可以并行完成,事件顺序不改变区块位置。
- 终止事件: 核对预期区块、实际状态、引用、证据卡、相关论文和置信度输入。
- 会话保存: 完成事件通过对账后再写入服务端,加载骨架不会成为历史答案。
- 网络中断: 浏览器保留已经就绪的区块并记录连接错误,部分证据仍可检查。
React Web 产品
首页与三级 Wiki
- 用途: 从根主题进入政策工具类型和规范概念详情。
- 页面功能: 组合定义、机制、地区、时间线、分类标签、相关论文和覆盖缺口。
- 导航: 概念身份贯穿 Wiki、问答、证据卡和知识图谱。
问答与会话
- 页面功能: 按 T1 到 T4 渲染固定骨架、流式区块、引用、证据卡和置信度说明。
- 会话来源: 服务端保存会话,浏览器保留有限缓存,并迁移早期本地记录。
- 加载策略: 会话摘要和完整消息分开获取,打开侧栏无需加载全部历史正文。
- 保存条件: 终止对账完成后写入消息,查看历史与修改会话采用不同操作。
证据库与详情
- 双视图: 论文视图用于浏览书目和研究设计,证据记录视图用于浏览具体结论与来源片段。
- 筛选能力: 文本搜索、结构化条件、分页和独立空状态。
- 论文详情: 展示书目、摘要、方法、结果和关联证据。
- 证据详情: 展示原文、页码语境、效应字段、方法和图谱关系。
- 来源导航: 正文引用和证据卡使用稳定身份打开同一记录。
知识图谱探索
- 查找: 支持节点搜索和节点类型过滤。
- 扩展: 以选中节点为中心请求当前需要的邻域关系。
- 详情: 展示节点类型、关联论文和可继续导航的研究实体。
- 局部故障: 扩展失败时保留画布已有节点,证据阅读和问答状态不受影响。
双语交互
- 导航、卡片、问题、回答、拒答和元数据模板随语言切换。
- 语言切换保留稳定记录身份,避免中英文页面形成两套引用关系。
- 中文概念名经过补全和审核,原文、中文译名和规范英文名保持可区分。
- 检索层使用双语语义表达,展示层继续提供来源语言和书目信息。
缓存与延迟加载
- 稳定读请求按语言、查询参数和数据版本建立缓存键。
- 图谱引擎、入库页面和治理后台按需加载,降低 Wiki 与问答首屏负担。
- 搜索输入延迟触发,图谱按节点请求邻域,详情与列表独立获取。
- 带内容版本的静态资源长期缓存,入口文档保持重新验证。
- 概念或分类版本变化后,相关读缓存自然失效。
Loading、Empty、Partial 与 Error
- Loading: 显示目标区块或模块的加载状态,并保留已完成内容。
- Empty: 明确说明当前筛选没有匹配证据,提供调整条件的操作。
- Partial: 展示已经完成的答案区块、图节点或入库产物,同时标记缺失集合。
- Error: 说明失败范围、可重试操作和仍然安全的数据。
- 隔离: 详情失败不关闭外层答案,延迟加载模块拥有独立错误边界。
可访问性措施
- 导航标注当前页面,可展开控件公开开合状态。
- 纯图标按钮提供可读名称,装饰图标对辅助技术隐藏。
- 引用控件携带来源描述,焦点样式保持可见。
- 键盘支持问题提交和管理输入,禁用与忙碌状态抑制重复操作。
管理后台与数据治理
上传预检与入库运行
- 上传前: 检查文件类型、批次结构和重复论文。
- 运行中: 展示批次身份、阶段状态、追加日志、预期数量、实际数量和异常集合。
- 中断后: 保留最后完成阶段和已有产物,提供定点重试。
- 完成时: 执行终止对账,区分进程结束和数据完整。

证据与分类审核
- 队列组织: 低置信记录和 critic 标记项按论文分组,保留相邻记录和共同来源语境。
- 审核材料: 结构化结论、原文片段、页码、方法、标记原因和建议修正字段。
- 状态迁移: 接受、修正和拒绝均形成新状态,原始抽取产物继续保留。
- 分类审核: 先使用概念名和描述,低置信项再加入代表证据。
- 论文标签: 概念分类稳定后生成政策工具、领域、目标、结果、主体和触发因素标签。
- 中文名审核: 并列展示规范英文名、建议译名和代表证据,识别错译、生硬表达和未翻译项。
去重、撤销与衍生数据
- 候选依据: 词法相似度、科学文本表示、分类位置和代表证据。
- 审核对象: 候选对与连通集合,界面同时展示拟议规范名和受影响关系。
- 结构护栏: 阻止跨不兼容根类别或语义组的合并。
- 快照: 每次应用前保存节点属性、关系和分类位置。
- 撤销: 确认后续没有冲突治理,再依据快照恢复结构。
- 衍生重建: 规范名改变后更新关系、分类、论文计数、概念邻域和跨论文综述。
- 治理历史: 记录候选依据、审核决定、变更结果和撤销状态。
配置、权限与反馈
- 阶段配置: 全文抽取、critic、短分类和翻译任务分别保存成本档位。
- 版本关联: 配置与运行记录绑定,批次审计可以还原当时的模型策略。
- 权限边界: 普通证据读取与治理写入分离,公开前端资源不携带管理授权材料。
- 回答反馈: 保存问题、判断、区块、引用和当时的置信度快照。
- 页面反馈: 记录独立产品问题,后台支持筛选、查看和导出。
- 使用方式: 反馈用于质量检查、问题归类和后续校准,现有证据保持审核后的状态。
质量控制与反幻觉设计
| 层级 | 校验内容 | 失败处理 |
|---|---|---|
| 原文锚定 | 引文与解析来源逐字匹配,保留页码和表格语境 | 受限模糊重定位仍失败时进入审核队列 |
| critic 复核 | 检查方向、数字、方法、限定条件和来源充分性 | 标记问题类型并移出可信图谱候选 |
| 概念规范化 | 综合原始术语、规范身份、分类位置和代表证据 | 低置信或结构冲突项进入人工确认 |
| 数值与方向 | 保留原值、单位、可比较形式和原文方向 | 不一致记录停留在审核状态 |
| 引用一致性 | 正文引用、证据卡和论文身份互相解析 | 区块进入错误或证据缺口状态 |
| 确定性统计 | 计数和列表使用独立结构化载荷 | 生成文字没有修改统计值的权限 |
| 区块降级 | 检查核心区块、可选区块和最终引用覆盖 | 跳过、范围收窄或进入 T4 |
| 置信度 | 只计算 T1、T2 最终可见区块的语料支撑 | T3、T4 不附加综合分数 |
| 治理后一致性 | 检查概念合并、分类变更与派生数据版本 | 重建计数、邻域和跨论文综述 |
工程化与测试
代码库使用单一仓库组织,Web、Agent 和知识图谱数据服务保持独立依赖边界。类型模型、结构模式、区块载荷和分类版本共同定义服务契约。
测试层次
- 纯转换测试: 证据范围、模糊重定位、统计量规范化、概念规范化、分类映射和区块载荷构建。
- 服务测试: 任务状态迁移、重启恢复、阶段对账、权限边界、检索回退、反馈持久化和确定性模板。
- 集成测试: 路由到检索的连接、图谱变更与撤销、流水线运行、SSE 事件顺序、会话终止保存和双语回答。
- 前端检查: T1、T2 骨架,加载与局部错误状态,引用跳转,生产构建和国际化审计。
重点回归场景
- 结构合法的证据记录引用了错误原文位置。
- 图谱合并在数据库层成功,但概念分类或语义关系不兼容。
- 阶段进程正常退出,实际处理集合仍缺少论文。
- 流式请求结束后,某个区块仍停留在加载状态。
- 网络中断覆盖了已完成区块和证据卡。
- 中文界面混入未翻译标签,双语统计值出现偏差。
- 撤销图谱变更后,派生计数或综述没有重建。
发布检查
- 生产构建验证模块解析、资源分块和页面生成。
- 国际化审计扫描用户可见文本和模板覆盖。
- 入口验证检查静态页面、结构化数据和 SSE 行为。
- 管理验证检查受保护写入、反馈提交和静态资源版本。
阿里云部署与稳定性
生产环境运行在新加坡地域的阿里云 ECS。
- 部署拓扑: React 构建产物作为静态资源,两个 Python 服务作为独立进程,Neo4j 提供研究图数据,Caddy 统一入口。
- 同源代理: 浏览器通过同一来源访问页面、结构化数据和 Agent 流,内部服务位置不进入公开构建产物。
- 受保护入口: 公网访问经过访问保护,应用服务只绑定回环接口。
- Caddy 与 SSE: 事件流关闭代理缓冲,区块事件能够及时到达浏览器。
- 缓存与压缩: 带内容哈希的资源长期缓存,入口文档重新验证,大型图谱和分类响应启用压缩。
- 服务日志: 入口、Agent 和数据服务分别保留日志,记录请求关联信息、阶段身份和错误类别。
- 健康检查: 按服务职责返回最小状态,常规探测不触发高成本图查询或模型请求。
- 进程守护: 应用异常后独立恢复,问答服务重建只读依赖,数据服务先清理遗留任务状态。
- 开机恢复: 恢复静态站点和应用进程,将遗留高成本任务标为中断,等待管理员检查日志与对账。
- 访问边界: 普通研究查询保持只读,治理写入需要应用层授权,公开资源不携带管理配置。
- 故障定位: 沿入口、Agent、数据服务、Neo4j 和浏览器区块状态逐层排查。
项目结果
项目交付了一条已部署的气候政策证据研究工作流。
- 研究流程: 论文 → 十五阶段处理 → 可审核证据 → 规范概念与分类 → Neo4j 图谱。
- 回答流程: 问题 → T1 到 T4 路由 → 受约束检索 → 结构化区块 → 引用与证据卡。
- 产品交付: React Web 连接 Wiki、论文、证据、图谱、会话、反馈和治理后台。
- 工程保障: 持久任务、定点重试、数量对账、局部降级、图谱撤销和生产监控进入同一运行体系。
- 上线结果: 平台完成内部发布,实际访问验证了长任务恢复、流式传输和会话持久化路径。
- 可追溯性: 研究者可以从概念进入综合结论,再沿引用、证据卡和图关系回到论文原文。
- 治理闭环: 概念分类、中文名、重复节点和派生综述均保留审核、变更和撤销记录。