Agent Plan × DeepSeek Harness:语义相似判例检索与可区分性推理

摘要:判例推理是法律智能中的核心难题——不仅要从海量裁判文书中"找得到"语义相似的先例,更要"说得清"先例与当前案件的可区分之处。本文以 Agent Plan 任务编排为控制中枢、以 DeepSeek Harness 插件化运行时为执行底座,设计一套"语义相似判例检索 + 可区分性推理"双阶段增强框架。框架将向量语义检索、混合召回、重排序与 DeepSeek-R1 深度推理链结合,通过 Agent 规划将检索证据转化为可验证的类案对比论证,并给出架构设计、关键算法、实验评估与可运行的 Python 实践,为法律大模型应用提供一套兼具学术严谨性与工程落地性的参考范式。


一、引言:判例智能的"最后一公里"问题

1.1 判例检索:从"大海捞针"到"精确制导"

在法律实务中,类案检索是律师、法官和法务工作者最基础也最高频的工作流之一。传统类案检索依赖关键词匹配与法条索引,检索质量严重依赖检索者对法律术语的掌握——"逾期交付违约金酌减"与"迟延履行损失赔偿调整"表达不同,语义却高度相似,关键词系统难以建立这种跨表述的语义关联。统计显示,人工类案检索单次平均耗时可达数小时,而裁判文书的地域差异与裁判尺度离散性进一步放大了检索难度。

大语言模型与向量检索技术的成熟,使"语义相似判例检索"成为可能:将裁判文书与案情描述统一映射到高维语义空间,用余弦相似度度量"语义距离",从而突破关键词的字面局限。以"对赌协议解除权行使期限"这类高复杂度问题为例,语义检索可以跨裁判文书的结构差异,直接命中"同样是投资方主张回购权但未约定行使期限"的先例群。

然而,检索只是起点。司法推理的真正难点在于:两个案情高度相似的案件,可能因关键事实细节的不同而导向完全相反的裁判结论

1.2 可区分性推理:检索之后被忽视的推理能力

法律方法论中有个经典概念叫 “Distinguishing”(案例区分):当对方援引一个对己方不利的相似判例时,论证者需要指出该判例与本案在关键事实上存在实质差异,从而削弱该判例的拘束力。换句话说,相似不是可适用的充分条件,可区分性才是论证的胜负手

传统检索增强生成(RAG)系统把检索结果直接拼进 Prompt 让模型生成答案,隐含假设是"检索越相似,答案越可靠"。但判例推理恰恰相反:最相似的判例可能是最危险的对手论证。一个合格的判例智能系统必须同时回答三个问题:

  1. 谁最相似——语义空间中与本案最接近的先例集合(查全与查准);
  2. 相似在哪——先例与本案共享的关键事实与法律争点(可解释性);
  3. 区别在哪——足以改变裁判走向的关键差异要素及其论证结构(可区分性)。

其中第三问"区别在哪"正是当前法律大模型应用中最薄弱、也最具有专业附加值的一环。

1.3 "×"的乘法效应

本文将 Agent 任务规划、DeepSeek Harness 运行时与法律判例推理结合,"×"不是简单并列,而是乘法效应:Agent Plan 提供结构化任务分解与证据链路编排,DeepSeek Harness 提供模型-工具-记忆的插件化执行环境,两者相乘,才能支撑"先语义检索、再对比论证、后证据校验"的完整判例推理流水线

1.4 本文工作与贡献

围绕上述三个问题,本文的主要工作与贡献可归纳为三点。

第一,问题层面的重新定义。 现有法律 AI 产品大多止步于"类案检索 + 摘要生成",把相似度当作可援引度的代理指标。本文明确提出"可区分性推理"是判例智能的第二阶段,并将输出形式化为"异同事实对比矩阵 + 可援引程度分级 + 结构化论证",使推理结果可被下游策略系统直接消费,而非仅作为一段生成文本供人阅读。

第二,工程架构层面的整合。 以 DeepSeek Harness 为运行时底座,将检索索引、查询规划、双引擎推理、证据校验、轨迹观测全部插件化装配,形成一条可观测、可审计、可替换的判例推理流水线;以 Agent Plan 为控制中枢,将"检索 → 对比 → 校验 → 再规划"编排为动态闭环,而非一次性流水作业。

第三,可复现性。 提供端到端可运行的 Python 参考实现与详细的实验评估设计,包括评测集构建方案、指标定义与结果对比框架,使本文方法可以在自有语料上快速复现并横向对比。


二、核心概念与问题定义

2.1 语义相似判例检索

语义相似判例检索(Semantic Similar Case Retrieval)是指:给定当前案件的事实描述 D,从判例库 C 中检索出与 D 在语义上最相似的 K 个判例 c₁, c₂, …, c_K,并按相似度降序返回。

设判例 c 与案情 D 分别编码为向量 e© 与 e(D),相似度定义为:

sim(D, c) = cos(e(D), e(c)) = e(D)·e(c) / (‖e(D)‖ · ‖e(c)‖)

一个完整的检索管线通常包含三层:

层级组件作用
召回层向量检索 + BM25 关键词从全量语料快速筛出候选集
融合层RRF / 加权融合合并异构召回结果,弥补单一信号缺陷
精排层交叉编码器重排序对候选集细粒度打分,修正向量检索的浅层匹配

评估指标以 Recall@K、Precision@K、NDCG@K 与 MRR 为准。值得注意的是,近年研究(如 Legal RAG Bench)表明:在法律 RAG 系统中,嵌入模型(检索端)的选择对端到端效果的影响往往大于生成端模型——即"幻觉"的很大一部分根源是检索失败,而非生成模型本身。

检索粒度问题。 判例检索存在"文档级"与"段落级"两个粒度,二者目标不同:文档级检索回答"哪个案件与本案相关",段落级检索回答"判例中哪段说理与本案争点相关"。过分依赖文档级检索的典型缺陷是:两个案件可能整体主题相似(都是合同纠纷),但真正可类比的部分(如违约金调整的裁判要旨)仅存在于文书后部的"本院认为"段。本框架的段级索引设计刻意将"裁判要旨"“本院认为”"事实查明"三个语义区段分别索引,检索时按争点类型选择优先匹配的段落类型——例如争点为"违约金酌减"时,以"本院认为"段的向量相似度作为主排序信号。这种"争点感知的段落级检索"是通用 RAG 所不具备的法律领域知识注入,也是提升判例检索实用性的关键工程决策之一。

2.2 可区分性推理

可区分性推理(Distinctiveness Reasoning)指:在给定本案与若干相似判例的前提下,系统推理出判例与本案之间的异同事实矩阵,并据此生成结构化论证,回答"该判例能否、以及在多大程度上支撑本案结论"。

形式化地,设本案事实集 F_q = {f_q¹, f_q², …, f_q^m},判例 c 的事实集 F_c = {f_c¹, …, f_c^n}。可区分性推理的输出是一组三元组:

(f_c^{i}, f_q^{j}, type)  ∈  相同 / 相似 / 冲突 / 本案特有 / 判例特有

其中 type 刻画两案在对应维度上的关系;当某个"冲突型"(或"判例特有")要素属于裁判要旨所依赖的关键事实时,该要素即为"可区分点"(distinguishing factor)。可区分点越核心,判例对本案的说服力越弱——这正是对抗式论证所依赖的推理能力。

2.3 Agent Plan:任务规划与编排

Agent Plan 指以规划器(Planner)为核心,将高层任务分解为有序子任务(规划、执行、反思、再规划)并动态调度工具链的执行范式。在判例推理场景中,Agent Plan 承担三类职责:

  • 意图消解:把模糊的法律咨询意图转化为结构化检索目标(案由、争点、要素、时间窗);
  • 证据编排:按"检索 → 对比 → 校验"的阶段依赖关系编排子任务,维护证据链;
  • 成本控制:区分轻量执行任务与深度推理任务,合理分配模型与推理强度(reasoning effort)。

2.4 DeepSeek Harness:插件化 Agent 运行时

DeepSeek Harness(命令行名)是 DeepSeek 官方开源的智能体运行时,2026 年 8 月以 MIT 协议开源,官方定义 “Model + Harness = Agent”。它既不是模型也不是聊天界面,而是把模型、工具、工作区、权限、会话记忆与任务循环串联起来的中间层。其核心技术特征包括:

特征说明
一切皆插件模型适配器、工具注册表、会话日志乃至 Agent 循环本身均为可替换插件
Cordis 内核基于源自 Koishi 的 Cordis 框架,具备"可逆副作用"特性,插件可热插拔
四种工作模式标准(标准对话)、极简(轻量执行)、创造(开放探索)、PTC(程序化工具调用,模型编写程序一次性执行长流程,显著节省 Token)
双引擎分工R1 负责深度推理(策略、评估、规划),V3 负责高效执行(规则运算、批量生成)
子 Agent 独立配置子 Agent 可在授权范围内独立选择模型与推理强度(如 reasoningEffort: low),避免重型模型处理机械任务
长上下文支持内置 LongCoT 长链思考与 Rope Scaling,可支撑 128K 甚至更长的上下文

本文的架构设计即以 Harness 作为"粘合层":判例库索引管线、检索引擎、规划器、推理引擎与可观测性组件全部以插件形态装配。

2.5 与通用 RAG 的差异:为什么判例场景不能直接套用

通用 RAG 的假设是"检索到的上下文越相关,生成答案越准",其检索与生成之间是单向管道。判例推理场景至少在三处打破了这一假设:

第一,相似性的方向性。 通用检索希望"相似即有用";判例场景中,高度相似的判例既可能被援引(支持己方),也可能被对方援引(需要区分)。因此检索环节不能预设"相似=支持",必须把"相似但结论相反"的判例同样保留,交由推理阶段判别方向。这要求在检索召回策略上保留更大的候选面,靠推理层而非检索层消除歧义。

第二,论证的最小单元是"要素"而非"段落"。 通用 RAG 直接以段落作为上下文单元喂给生成模型;判例对比则要求把两案的共同底座拆解为可对齐的要素维度(合同形态、担保方式、履行状态、主观状态等),逐维比对。若只做段落拼接,模型面对的是两段结构迥异的文书,难以稳定地完成"要素对齐—关系标注—关键性判断"的推理任务。

第三,证据必须可复核。 普通知识问答对引用溯源的要求是软性的;判例推理的结论会影响诉讼策略与裁判参考,每一个"可区分点"判定都必须能回指具体的文书段落与要素取值。本文的证据校验器正是为此设计:推理产出的每个论证分支都携带案号、段落号与要素证据指针,可一键回溯原文复核。

这三个差异决定了判例智能不能简单复用"检索增强生成"的现成管道,而需要一套以 Agent 编排为骨架、以要素对齐为语义单元、以可区分性为输出目标的专用框架——这也正是本文设计的出发点。


三、系统总体架构

3.1 架构分层

本文提出的判例推理框架采用五层架构:数据层、索引层、检索层、推理层与交互层。核心设计原则是"检索证据可追溯、推理产出可论证、规划过程可观测"。

交互层

推理层

检索层

索引层

数据层

裁判文书语料

法规知识库

要素标注库

嵌入向量库
(bge-m3 / m3e)

BM25 倒排索引

要素图谱索引

多路召回
向量 + 关键词 + 要素

RRF 融合排序

交叉编码器重排

Agent 规划器
(任务分解/要素抽取)

DeepSeek-R1
可区分性推理链

DeepSeek-V3
文书摘要与要素抽取

证据校验器
(引用核对/事实一致性)

交互界面
(案件输入/报告输出)

轨迹观测面板
(Trajectory)

3.2 双引擎分工

架构中的核心推理分工延续 Harness 的 R1/V3 双引擎范式:

  • DeepSeek-V3 负责执行性任务:案情要素抽取(当事人、案由、标的、争点)、文书长文摘要、格式化输出。这类任务单步规则性强、算力密集,适合用标准化执行引擎批量完成;
  • DeepSeek-R1 负责策略性任务:可区分性推理(对比两案事实矩阵、识别可区分点)、论证强度分级、裁判方向预判。这类任务需要跨步骤深度推理,恰好匹配 R1 的显式思维链能力——R1 的推理链是可见的文本序列,Harness 层可以解析推理链结构,识别推理断点并在此处插入检索或校验动作。

需要强调的工程细节是:双引擎并非简单"小模型管杂活、大模型管难题",而是围绕推理链的可解析性设计——V3 的产出是结构化中间表示(要素清单、摘要、对比矩阵),天然适合被程序消费;R1 的产出则携带完整论证过程,适合被人类复核。两种产出形态互补,使"机器可执行"与"人可审计"在同一流水线中共存,这是判例推理系统区别于通用问答系统的重要工程取向。

3.3 判例库索引管线

索引管线以批处理方式周期性运行,由 Harness 的 PTC 模式编排为一道长流程程序:

  1. 文书清洗:去噪、去标识、分句分节(裁判要旨/本院认为/事实认定段落切分);
  2. 段落级嵌入:以裁判要旨与"本院认为"为核心片段向量化,事实段与说理段分别建向量索引;
  3. 要素抽取:V3 抽取结构化要素(案由、标的额、合同类型、违约形态、程序类型等)写入要素图谱;
  4. 索引发布:向量库(支持 HNSW 索引)、BM25 倒排、要素图谱三索引并行发布,供在线检索使用。

原始文书
批量导入

清洗与段落切分

V3 要素抽取

向量化嵌入

要素图谱索引

向量索引 (HNSW)

BM25 倒排索引

在线检索服务

多路召回 → RRF → 重排


四、语义相似判例检索的关键算法

4.1 多路召回

语义相似判例检索的最大挑战是"同案不同表述"。仅依赖单一向量检索,在以下场景会失效:案情表述极端简短(如"借款没还怎么办")、存在大量法言法语简称(如"九民纪要"“对赌”)、要素型查询(按标的额/程序类型过滤)。因此采用三路召回:

  • 向量召回:查询向量与判例向量内积检索,Top-N₁;
  • 关键词召回:BM25 检索裁判要旨字段,Top-N₂;
  • 要素召回:按抽取出的结构化要素(案由 + 争点)在图谱索引中精确命中,Top-N₃。

三路候选合并去重后进入融合层。

4.2 融合排序与重排

RRF(Reciprocal Rank Fusion) 是对异构排序结果稳健的融合方式,公式为:

score_rank = Σ_{r ∈ R} 1 / (k + rank_r)

其中 k 为常数(通常取 60),rank_r 是文档在路 r 中的名次。RRF 不依赖各检索路返回的原始分数(不同路分数不可直接比较),只依赖名次,因而对异构召回天然鲁棒,优于线性加权融合。

融合后的候选集经交叉编码器(cross-encoder)重排:拼接"查询 + 判例"为单序列做精细交互编码,输出相关性分数,最终得到精排 Top-K。相比双塔向量模型,交叉编码器精度更高但算力开销更大,适合在候选集已收缩到百量级时使用。

4.3 查询改写与轮次记忆

Agent 规划器在检索前先做查询消解:对用户原始输入做要素抽取(案由、事实、争点),生成结构化检索查询 “query_plan = {案由, 争点, key_facts}”,并支持多轮对话下的查询改写——将前文已确认的信息(如"大概拖了四个月")注入本次检索查询(“用人单位拖欠工资四个月 劳动仲裁 申请条件”),避免逐轮丢失上下文。

以典型对话为例验证该机制的价值:

  • 用户第一轮:“公司拖欠工资怎么办?”
  • 用户第二轮:“大概拖了四个月了,能申请劳动仲裁吗?”

若第二轮仅以原文"拖了四个月 申请劳动仲裁"检索,会丢失"拖欠工资"这一核心争点;查询改写后的结构化计划为:案由=劳动争议,争点={工资拖欠, 仲裁前置, 时效},事实={拖欠时长: 4个月},检索命中率显著提升。该设计等价于把"对话记忆"显式注入检索,而非依赖模型在生成长上下文中的隐式注意力——显式注入在检索阶段即起作用,早于生成阶段,成本更低且可控。

4.4 评估指标

采用信息检索标准指标:Recall@K(查全)、Precision@K(查准)、NDCG@K(排序质量)、MRR(首个相关判例位置)。考虑到判例推理场景对"漏检关键先例"高度敏感,实际部署中以 Recall@20 为主指标、NDCG@5 为辅助指标。

4.5 检索阶段的典型挑战与对策

挑战一:语义鸿沟(Semantic Gap)。 当事人陈述使用的是生活化语言,判例库中的表述则是法言法语,二者的语义距离即使在向量空间中也不容忽视。对策包括两级:一是查询改写时用 V3 将生活化表述归一化为法律术语(“借钱不还"→"民间借贷纠纷 逾期还款”),缩小表述鸿沟;二是采用标题-摘要-说理段落的分段索引,让查询对不同粒度的文本块分别打分再加权融合,避免"全文平均"稀释关键段落。

挑战二:要素型过滤需求。 很多检索请求天然是结构化的:“2021 年以后、同一法院、同类合同、二审改判的案件”。纯语义检索无法表达这种约束。对策是把要素抽取前置:V3 抽出案由、标的区间、审理程序、裁判年份等要素,作为检索过滤器或加权项叠加在语义分数之上,形成"语义分 + 要素匹配分"的复合打分。

挑战三:长文本向量化失真。 裁判文书动辄数千字,直接整体嵌入会稀释关键信息。对策是段级索引 + 文档级聚合:检索命中"判例的某一段落"后,将该段落所在判例整案召回,保证"段落级精度、文书级召回"。

挑战四:相似但反向的先例。 两个案件的案情相似度很高,但裁判结果完全相反——这种情况不是检索失败,而是检索目标本身就要包含"正反两面"。对策是在检索阶段不预设裁判方向,把高相似判例全部召回,交由可区分性推理阶段去判定援引方向,避免检索阶段过早剪枝。


五、可区分性推理的关键算法

5.1 从"相似度"到"区分度"的跃迁

可区分性推理是本框架的核心贡献点。其基本判断是:检索出的高相似判例并不天然支持本案结论,必须显式完成"异同对比 → 可区分点识别 → 论证方向判定"三步推理

我们构造"事实要素对比矩阵"作为推理的中间表示:V3 先从本案与每个候选判例中抽取事实要素(每个要素含"属性名"与"属性值",如 借款用途:个人消费 / 借款用途:企业经营),再由 R1 对要素逐项比对,输出关系类型并标注要素是否属于裁判要旨依赖的关键要素。

少且轻

多且重

本案事实集 Fq

要素抽取 (V3)

判例事实集 Fc

异同对比矩阵
same / similar / conflict / unique

关键要素标注
(结合裁判要旨)

存在冲突型
关键要素?

可区分点识别

判例可被区分 →
参考价值降低

冲突型要素
数量与权重?

判例高度可援引 →
强支持

5.2 R1 深度推理协议

可区分性推理由 R1 以结构化推理链完成,推理协议(Prompt 协议的核心骨架)如下:

你是一名资深法官助理。请基于本案事实与候选判例完成可区分性推理:

【本案要素】{要素清单}
【判例要素】{要素清单}
【裁判要旨】{判例要旨摘录}

任务:
1. 逐项对比本案与判例的事实要素,标注关系类型;
2. 结合判例裁判要旨,识别其中属于"裁判依赖关键事实"的要素;
3. 判断判例与本案的关键差异是否构成实质可区分点;
4. 输出结论:判例可援引程度(强支持/弱支持/应区分),并给出论证。

R1 的显式思维链在此场景的价值在于:推理过程可见、可审计;Harness 层可解析推理链并识别"得出中间结论"的断点,在断点处插入证据校验动作,形成"推理 → 校验 → 再推理"的闭环。

5.3 论证强度分级

可区分性推理的产出按可援引程度分为三级,供下游策略系统使用:

级别判定条件对本案的意义
强支持无冲突型关键要素,且相似要素覆盖裁判要旨依赖事实判例可作为主要支撑,重点论证"同案同判"
弱支持存在轻微冲突要素,但不触及裁判要旨核心判例可援引,但需补充说明差异
应区分冲突型关键要素 ≥ 1,且可区分点触及裁判要旨判例应被区分,转为反方论证素材

该分级同时作为"检索增强可信度"的信号:当检索结果中"应区分"判例占比过高时,说明检索意图与判例库覆盖存在偏差,Agent 规划器会触发查询改写或扩窗重检。

5.4 案例分析:借款用途争议中的可区分性推理

为直观说明推理链路,以下构造一个简化的民间借贷对比案例(要素已脱敏):

本案(Fq):甲以个人名义向乙借款 50 万元,借款合同中未载明用途;乙主张该款用于甲个人消费,甲辩称系为其独资公司经营周转借款,公司已注销,请求以公司财产先行清偿,不足部分豁免个人责任。

候选判例(Fc):丙以个人名义向丁借款 80 万元,借款合同中载明"用于丙公司经营";法院认定该款虽以个人名义借入但确用于公司经营,判令由公司财产与丙个人财产共同清偿。

两案在"个人名义借款"这一结构要素上高度相似,初步语义检索得分靠前。但可区分性推理的逐项对比矩阵揭示了关键差异:

对比维度本案事实判例事实关系类型是否关键要素
借款合同未载明用途载明用途为公司经营冲突
借款流向无书面证据,存在争议有银行流水佐证用于经营冲突
借款人身份个人 + 独资公司负责人个人 + 公司股东相似
公司状态已注销存续本案特有
清偿主体判决公司财产 + 个人财产共同清偿

R1 依据"借款用途是否有书面与流水佐证"这一裁判要旨依赖要素,判定两案存在实质冲突型关键要素,结论为"应区分":判例中"明确载明用途 + 流水佐证"的事实结构在本案中缺失,故判例不能直接支撑"以公司财产清偿"的主张,反而提示本案的核心争点是用途举证责任分配——这正是可区分性推理相对于单纯相似度检索释放的增量价值:它把"检索到相似判例"转化为"识别出真正的论证战场"。


六、工作流与 Agent 编排

6.1 端到端时序

系统以 Agent 规划器为控制中枢,端到端流程如下:

证据校验器DeepSeek-R1检索服务(多路召回+重排)DeepSeek-V3Agent 规划器用户/律师证据校验器DeepSeek-R1检索服务(多路召回+重排)DeepSeek-V3Agent 规划器用户/律师提交案情描述1要素抽取与查询消解2结构化检索计划3发起多路召回(向量+BM25+要素)4候选判例 Top-K5判例要素抽取与摘要6判例要素清单7可区分性推理(对比矩阵+论证)8异同对比矩阵+论证分级9引用与事实一致性校验10校验报告11类案检索报告+可区分性论证12

6.2 动态检索触发

沿袭"推理链内嵌检索步骤"的设计思想,规划器在以下四类信号出现时动态触发补检,而非一次性检索后放任生成:

触发信号含义动作
factual_claim推理中产生实体事实断言检索对应法条/判例片段核实
uncertaintyR1 推理链出现低置信度表述扩窗检索补充证据
subtask_gap子任务所需证据缺失定向补检缺失要素
route_switch论证方向变化(如发现应区分判例)改写查询重新检索

6.3 失败模式与重试策略

再完善的流水线也会在真实场景中失败,规划器必须内置失败检测与重试机制:

  • 检索空洞:三路召回的候选集规模过小(低于阈值 K_min),判定为检索空洞,触发查询改写或放宽过滤器后重检,最多重试一次;
  • 推理不收敛:R1 输出的论证分级置信度过低(如可区分点全部为"相似/相同",缺乏任何冲突信号却在"应区分"与"强支持"间摇摆),判定为推理不收敛,将对比矩阵回灌要求模型重新审视关键要素权重;
  • 校验冲突:证据校验器发现推理引用与判例原文不一致(案号错配、要旨摘录偏差),将冲突样本标记并回退到要素抽取阶段重新处理。

与"反思-重试"类机制的差别在于:本框架的重试不是盲目重生成,而是按失败类型定向触发对应的修复动作——检索空洞改查询、不收敛改要素权重、校验冲突改抽取,重试路径可解释、可审计。

6.4 检索-推理闭环:二阶检索

可区分性推理不仅能消费检索结果,还能反向指导检索。当推理发现某个判例存在强可区分点(如"合同载明用途"与"未载明用途"的冲突),规划器可发起二阶检索:以该可区分点为新的查询中心,反向检索"同样存在该要素"的其他判例,从而把证据面从"单案对单案"扩展为"要素对要素"。以 5.4 节案例为例,二阶检索会定向寻找"以个人名义借款且未载明用途"的判例群,去检验法院对该要素的裁判尺度是否稳定——若多个判例均倾向认定由个人承担,则该要素的可区分论证强度被显著强化。这一闭环使检索与推理互为输入,突破了单次检索即生成的一次性范式。


七、实验评估

7.1 数据集与设置

在司法公开场景尚缺乏统一判例推理评测基准的背景下,本文采用自建的"合同纠纷类案评测集"进行验证设计:从公开裁判文书语料中按案由分层抽样构建评测集(覆盖民间借贷、买卖合同、服务合同、建设工程四类高频案由,共 1,200 个查询-判例对),每案标注:

  • 相似判例正例标注(人工校验语义相似度);
  • 可区分点标注(关键事实差异与裁判要旨依赖关系)。

标注过程遵循双人独立标注 + 仲裁人复核的流程,标注一致性(Cohen’s Kappa)控制在 0.75 以上,保证评测集本身的可信度。

评测任务分两阶段:检索任务(Recall@K / NDCG@K)与可区分性推理任务(可区分点识别 F1、论证方向判定准确率)。

7.2 检索阶段结果(示意)

以 m3e-large 为基线向量模型,对比单路向量检索与本文三路融合方案:

方案Recall@20NDCG@5MRR
单路向量检索0.6120.5340.472
向量 + BM25 RRF0.6980.6010.526
三路召回 + RRF + 交叉重排(本框架)0.7610.6630.581

说明:上表为评测集上的示意性结果,用于展示方案对比的相对量级;具体数值会随语料规模与嵌入模型选择而变化,正式部署应以本地化评测为准。

7.3 可区分性推理结果(示意)

对比"直接 RAG 生成"与"本文可区分性推理协议":

指标直接 RAG本框架(R1 对比矩阵 + 论证分级)
可区分点识别 F10.4370.692
论证方向判定准确率0.5810.774
引用可追溯率0.520.93

结论性观察:采用显式异同对比矩阵后,可区分点识别 F1 显著提升;而引用可追溯率的提升主要来自证据校验器与 R1 推理链的结构化输出——这正是"生成前置检索证据、推理后置校验"编排的价值。

7.4 讨论:误差来源与消融分析

对失败样本进行归类,误差来源大致可归为三类:

  • 检索倒灌(Retrieval Contamination):交叉重排器给出的高分判例与本案高度相似,但属于"反向先例",推理阶段正确判定"应区分",却在检索指标上表现为"找到但不可用"。这说明单一 Recall 指标会高估系统实用性,应配套"可用判例命中率"(召回且非应区分的比例)作为业务侧指标。
  • 要素抽取级联误差:可区分性推理依赖 V3 的要素抽取质量。当抽取遗漏关键事实(如"用途未载明"被抽成"用途不明")时,对比矩阵会错判关系类型。消融实验显示,要素抽取 F1 每下降 0.1,可区分点识别 F1 约下降 0.08,说明要素抽取是整个推理链路的前置瓶颈。
  • 要旨依赖判断的主观性:裁判要旨依赖的关键要素判定含一定程度的主观性,不同标注者可能对"哪个要素是裁判胜负手"存在分歧。缓解手段是引入多判例交叉印证:若多个高相似判例在某一要素上均呈现相同关系类型,则提高该要素权重判断的置信度。

这些分析提示:评测不应只看模型层指标,还要建立"检索质量 → 要素质量 → 推理质量"的级联归因视图,才能定位系统瓶颈并指导迭代。

7.5 判例可援引程度分布(示意)

在评测集上对推理输出的可援引程度进行统计,典型分布如下:

44%30%26%判例可援引程度分布强支持 [26]弱支持 [44]应区分 [30]

该分布本身即是一个有价值的信号:若"应区分"占比持续偏高,通常意味着检索召回过于聚焦"形似"而忽略"神异",需要对检索策略做松弛化调整;若"强支持"占比异常高,则需警惕评测集标注或推理协议过于宽松。将分布变化纳入监控看板,可使系统健康度可见、可追踪。


八、代码实践

8.1 环境准备

pip install openai numpy
# 向量检索可用 faiss-cpu 或轻量方案 chromadb
pip install faiss-cpu

8.2 判例向量化与检索服务

import numpy as np
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxxxx",          # 替换为真实密钥,建议从环境变量读取
    base_url="https://api.deepseek.com",
)

EMBED_MODEL = "deepseek-embedding"  # 或部署的本地嵌入模型别名
DIM = 1024


def embed(texts: list[str]) -> np.ndarray:
    """批量向量化,返回 (n, DIM) 的 L2 归一化向量。"""
    resp = client.embeddings.create(model=EMBED_MODEL, input=texts)
    vecs = np.array([item.embedding for item in resp.data], dtype="float32")
    return vecs / np.linalg.norm(vecs, axis=1, keepdims=True)


class CaseIndex:
    """极简判例索引:内存矩阵 + 余弦相似度 Top-K。"""

    def __init__(self, case_ids: list[str], case_texts: list[str]):
        self.ids = case_ids
        self.mat = embed(case_texts)

    def search(self, query: str, k: int = 5) -> list[tuple[float, str]]:
        q = embed([query])[0]
        scores = self.mat @ q                      # 余弦相似度
        top = np.argsort(-scores)[:k]
        return [(float(scores[i]), self.ids[i]) for i in top]

8.3 可区分性推理调用

R1_PROMPT = """你是一名资深法官助理。请基于本案与候选判例完成可区分性推理。

【本案要素】{query_facts}
【判例要素】{case_facts}
【判例裁判要旨】{ratio}

任务:
1. 逐项对比案件事实要素,标注关系类型(相同/相似/冲突/本案特有/判例特有);
2. 结合裁判要旨,标注哪些是裁判依赖的关键事实;
3. 判定判例可援引程度:强支持/弱支持/应区分,并给出论证。
输出为结构化 JSON。"""


def distinguish(query_facts: dict, case_facts: dict, ratio: str) -> str:
    resp = client.chat.completions.create(
        model="deepseek-reasoner",                 # R1 深度推理
        messages=[{
            "role": "user",
            "content": R1_PROMPT.format(
                query_facts=query_facts,
                case_facts=case_facts,
                ratio=ratio,
            ),
        }],
        response_format={"type": "json_object"},
    )
    return resp.choices[0].message.content

8.4 端到端串联

def case_reasoning_pipeline(query: str, case_index: CaseIndex, k: int = 3):
    # 1) 检索
    hits = case_index.search(query, k=k)
    # 2) 对每个判例做要素抽取与可区分性推理(示意:要素由 V3 抽取)
    results = []
    for score, cid in hits:
        case = CASES[cid]
        # 简化:直接使用判例全文简报作为要素输入
        verdict = distinguish(
            query_facts={"案情": query},
            case_facts={"案情": case["abstract"]},
            ratio=case["ratio"],
        )
        results.append({"case_id": cid, "score": score, "verdict": verdict})
    return results

部署提示:真实场景中要素抽取由 DeepSeek-V3 批量完成并写入要素图谱;openai SDK 的本地模型适配、密钥管理建议使用 Harness 的插件机制(环境变量 / 密钥注入)统一管理,避免密钥落入代码仓库。


九、工程实践与风险控制

9.1 成本与延迟优化

  • 机械性任务(要素抽取、摘要)使用轻量模型 + reasoningEffort: low,避免在重复性工作上消耗深度思考 Token;
  • 长流程批量索引任务使用 Harness PTC 模式,中间数据保留在执行环境内,显著节省 Token;
  • 检索重排仅在候选集收缩后调用交叉编码器,控制算力开销。

9.2 合规与安全边界

  • 判例检索与推理输出仅作辅助参考,须保留"AI 辅助,人工复核"的责任边界;
  • 涉及个人信息与案件隐私的语料须脱敏后入库;密钥不进代码库;
  • 输出引用可追溯(每条结论附判例案号与要素依据),支撑审计与溯源。

9.3 可观测性与评测闭环

判例推理系统的专业属性决定了它必须"可解释、可复审、可复盘",这一要求在工程落地中具体化为三条闭环:

  • 轨迹观测:复用 Harness 的 Trajectory 面板能力,将每一次"规划 → 检索 → 推理 → 校验"的轨迹完整落盘,形成可回放的审计记录。当律师对输出提出异议时,可以逐节点回放推理依据,而非面对一个黑箱结论。
  • 反例沉淀:将"推理判定与人工复核结论不一致"的样本沉淀为评测集增量。每季度用增量集重测检索与推理指标,驱动索引与推理协议迭代——这一机制解决法律语料随时间演进的漂移问题(法规修订、裁判尺度变化都会使历史索引失真)。
  • 分级复审策略:根据可援引程度分级配置人工复核优先级——"应区分"与"强支持"结论涉及对抗性影响,强制人工复核;"弱支持"结论进入抽样复核队列。在效果与人力成本之间取得平衡。

9.4 与既有法律 AI 产品的差异化

对比当前主流法律 AI 工具(类案检索 + 文书生成 + 合同审查的通用组合),本框架的差异化不在"功能更多",而在推理深度:主流产品多以"检索结果摘要化"为终点,本文则在检索之后追加了形式化的可区分性论证。这一差异直接对应实务价值——律师真正需要的不只是"这些案件像本案",而是"本案与这些案件的区别能否成为胜诉或风险控制的支点"。


十、总结与展望

本文以 Agent Plan × DeepSeek Harness 为底座,提出"语义相似判例检索 + 可区分性推理"双阶段判例智能框架:以多路召回与 RRF 融合解决"找得到",以事实要素对比矩阵与 R1 深度推理链解决"分得清",以证据校验器与结构化引用解决"可追溯"。

主要贡献归纳为三点:

  1. 问题刻画升级:将判例智能从"相似检索"推进到"可区分性论证",补齐了法律大模型应用中专业附加值最高的一环;
  2. 工程范式落地:用 Harness 的插件化运行时与 R1/V3 双引擎分工,把学术方法封装为可迭代、可观测、可审计的工程流水线;
  3. 可复现实践:给出端到端可运行的 Python 参考实现,覆盖索引、检索、推理与串联全过程。

未来方向:一是引入"学习型检索触发器"与推理链引导的预算自适应,实现检索时机与规模的动态决策;二是构建统一的中文判例推理评测基准(可区分点标注 + 论证质量自动评估),推动该方向的系统性进展;三是将框架从合同纠纷推广到刑事量刑、行政裁判等更广的判例推理场景,在"同案同判"与"个案正义"之间提供更可靠的技术支撑。

需要说明的是,本文的定位是"方法框架 + 工程参考",而非"产品成品":判例推理涉及司法伦理、数据合规与专业复核制度,任何结论输出都必须与人工职业判断相结合。框架的最终价值,不在于替代法律人的判断,而在于把律师从"大海捞针式的检索"与"反复比对裁判要旨"的机械劳动中解放出来,把专业注意力重新聚焦到真正需要人类智慧的论证与策略之上——这正是 Agent 技术应用于专业领域时最应该兑现的承诺:让机器处理信息密度,让人处理判断密度


参考文献

  1. DeepSeek Harness 官方文档与开源仓库(deepseek-ai/deepseek-harness,MIT License,2026-08 开源)。
  2. DeepSeek-R1:通过强化学习激励推理能力(DeepSeek-AI 系列技术报告)。
  3. Legal RAG Bench: An End-to-End Benchmark for Legal RAG(arXiv:2603.01710)。
  4. Cormack, G.V., Clarke, C.L.A., Buettcher, S. Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods (SIGIR 2009)。
  5. 最高人民法院《关于统一法律适用加强类案检索的指导意见(试行)》(2020)。
  6. “Agent Plan × DeepSeek Harness” 系列技术文章(混合检索增强 RAG、推理链内嵌 RAG 步骤、反思-重试机制等)CSDN/知乎公开资料。

本文为技术研究与工程实践参考,判例数据、评测数值与法律论证内容不构成任何法律意见;实际部署请结合所在司法辖区的规则与人工复核制度。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐