跳到主要内容

结构化知识提取

哪类知识无法用文档 RAG 获取?​

  • 场景: 许多专业领域的知识以隐性、分散的形式蕴含在海量结构化案例数据中;
  • 司法例子: 决定判决结果的“知识”并非仅写在法条里,更多体现在成千上万份判例中——法官如何权衡犯罪动机、伤害程度、自首情节、社会影响等复杂甚至相互冲突的因素;
  • 类比: 这像资深医生的“直觉”,背后是无数病例的经验积累而非仅仅教科书理论;
  • 结论: 从这类数据集中学习需要全新的 RAG 范式——不能满足于简单文本检索,必须深入数据内部,通过统计分析和模式识别把隐性知识“挖掘”出来,转化为 Agent 可理解和运用的结构化决策逻辑;
  • 定位: 本质上是从“信息检索”到“知识发现”的飞跃;

两个阶段分别做什么?​

  • 第一阶段 知识提取与结构化: 利用 LLM 的理解和归纳能力,把每个案例的非结构化描述(如案情陈述)转换为包含所有关键判决因素的标准化 JSON 对象;
  • 第一阶段的挑战: 定义一个既全面又一致的数据模式(Schema);
  • 第二阶段 因子分析与重要性建模: 在获得大规模结构化数据后,运用数据分析技术发现模式、提炼规律,识别哪些因素对最终结果影响最显著并量化其权重;
  • 第二阶段的产物: “判决因子重要性层次模型”——从海量案例中提炼出的、可供 Agent 使用的“判决经验”;

司法判例实验的关键结论是什么?​

  • 数据集: 大规模的中文刑事判决数据集 CAIL2018,目标是构建从判例中学习“判决经验”的智能法律顾问;
  • 模式构建: 没有采用预先定义好的僵化数据模式,而是“自下而上”的因子发现——让 LLM 分析数百个样本案例并自由列出所有可能影响判决的关键因素;
  • 模式结构: 适用于所有案件的“核心模式”(如自首、赔偿等情节),加上针对不同罪名的“扩展模式”(如盗窃罪的涉案金额、故意伤害罪的伤害等级);
  • 编码方法: 把案件信息翻译成数字——对有多个选项的字段(如犯罪类型)用独立开关位,盗窃=[1,0,0]、抢劫=[0,1,0]、诈骗=[0,0,1];对“是否自首”“是否赔偿”用 1 表示是、0 表示否;
  • 编码理由: 之所以不用 1、2、3,是因为数字大小会让算法误以为“诈骗比盗窃严重 3 倍”,而开关位只表示“是哪一类”,不暗示大小关系;
  • 聚类: 把案件变成数字串后用聚类算法寻找自然的“案件原型”;
  • 聚类例子: 故意伤害罪案件按冲突起因、作案方式、伤害后果等特征分组,每组内部相似,如“轻微口角引发的徒手斗殴致人轻伤”“有预谋的团伙持械围殴致人重伤”;
  • 建模: 通过分析定义聚类的关键特征,构建数据驱动的“因子重要性层次模型”;
  • 不直接预测刑期的理由: 直接让 AI 预测刑期会产生一个“黑箱”——能给出答案但说不清为什么;

因子模型如何驱动 Agent 服务?​

  • 对话式信息收集: 当用户描述案情时,Agent 利用因子重要性层次模型,按重要性顺序智能地向用户提出引导性问题,补全所有关键判决因素;
  • 检索与解释: 信息收集完毕后,Agent 在知识库中检索最相似的案件原型,基于该原型的统计数据(如典型刑期范围)提供数据驱动的、有充分判例支持的分析与解释;
  • 方法结论: Agent 不一定要把知识库当成只能检索的静态仓库——它可以先把数据“读懂”,提炼出结构化的决策逻辑,再基于这个逻辑回答问题;