不用把合同发给服务器,也能把它问一遍
律师、律师助理或合规人员可以一次对最多 40 份 PDF 或 DOCX 提问,解析、向量化、检索全部在浏览器里完成。文件永不离开你的设备。这一页写明哪些格式靠得住、哪些提问能检索到内容,以及什么时候本地工具就是选错了。
最后更新:
合同类问题分两种:找精确的标识,或者找一段换个说法讲同一件事的原文。这套检索同时做这两件事,所以向量排序和 BM25 是并行跑完再融合,而不是二选一。
法律工作里的文件库长什么样
典型体量是 30–40 份:待审的合同、它的附件、它必须符合的内部制度,以及它起草时参照的模板。这些文件都不大,所以你会先撞到 40 份的数量上限,而不是 200MB 的体积上限。
| 格式 | 常见体量 | 解析保留什么 | 会丢掉什么 |
|---|---|---|---|
| 有文字层的 PDF | 20–300 页,1–12MB | 每个文本块都带页码,引用能写成「第 14 页」 | 表格的网格结构会塌成一段单元格文字 |
| DOCX | 80KB–2MB | 标题层级,第 8.2 条能保持它的归属 | 批注和修订痕迹不参与解析 |
| Markdown 或 TXT | 1MB 以下 | 标题与行结构 | 不适用 |
| CSV 或 JSON | 25MB 以下 | 行边界,提问可以针对某一列 | 不适用 |
| 纯图片扫描 PDF | 不限 | 什么都不保留——系统会识别并报出来 | 在你另做 OCR 之前,整份文件都用不上 |
哪些提问检索得到,以及为什么
一个问题里同时出现一个精确词元和一个换说法的概念,两路排序就都被激活了。需要跨三份文件做算术的问题则不行:检索返回的是段落,可选的生成环节只是本地 0.5B–1.5B 模型,上下文窗口有限。
- “通知期是在哪一条定义的?”——定义术语是精确词元命中,换说法的部分靠向量命中。
- “哪些条款允许供应商涨价?条件是什么?”——会把条款和它的例外一起找出来,15% 的分块重叠就是在这儿起作用。
- “把所有提到第 8.2 条的地方列出来。”——精确词元问题,关键词排序负责,引用里带页码。
- “这四份合同的赔偿上限分别是多少?”——返回四段原文,各自带文件名和页码,比较由你来做。
- “哪些协议在 90 天内到期?”——日期以文字写出时可行;盖在扫描件印章里的日期看不到。
- “谁签的?哪天签的?”——签署块在多数 DOCX 和有文字层的 PDF 里就是纯文本,通常能答上来。
用 40 分钟把一份供货合同过一遍
把主合同和附件一起导入
供货合同正文 PDF、价格附件 PDF、服务级别附件 DOCX 放进同一个库。三份文件在笔记本上不到一分钟就建完索引,这一步用不到显卡。
先问定义
提问:「生效日在合同里是怎么定义的?」定义条款里这个术语反复出现,密度高,排序会排在那些只是顺带用到它的段落前面。
义务一条一条问
交付窗口、调价机制、独家条款、解约触发条件——一个问题问一条。答案里的编号引用可以直接点到对应页码和附近的段落。
找例外
例外条款通常紧跟在规则后面那句,这正是分块边界容易切开的位置。可以在设置里调高重叠,或者直接追问「上一条后面的那段」。
把没点开的引用也读一遍
检索浮上来的是它认为排序最高的段落,和这单交易真正关键的段落不是同一个集合。
留一份记录
把问题清单连同引用导出成 Markdown 或 CSV,以后可以照着重走一遍。索引本身留在当前浏览器配置里,清除站点数据即消失。
检索会在哪些地方掉链子
| 现象 | 原因 | 该怎么办 |
|---|---|---|
| 明知道存在的条款怎么都搜不到 | 那份附件是扫描件,没有文字层 | 先做 OCR,再导入文字版 |
| 金额落到了错误的列 | PDF 表格被压成了阅读顺序的文字流 | 直接问页码,用眼睛读表 |
| 定义术语指到了错的地方 | 这个术语只定义了一次,后面被重复使用四十次 | 问「定义 X 的那一条」,而不是问 X |
| 交叉引用把人带偏 | 引到「依第 12 条」却没带出第 12 条原文 | 按条号直接问第 12 条,这是精确词元命中 |
| 长答案有一部分是错的 | 生成档跨段落做了推断 | 切回默认的抽取档,只要引用原文的回答 |
这个方案不适合你的时候
- 分析结果需要别人在共享系统里复核。这里没有后端也没有共享索引:每个人只能把文件导入自己的浏览器配置。
- 文件数量超过 40 份或总量超过 200MB。按事项拆开,或者改用为规模设计的文档库。
- 关键文件是没有文字层的扫描件。没有 OCR 就一点文字都抽不出来,系统会直接报出这份文件,而不是建一个空索引。
- 需要留下「谁看过什么」的记录。这里什么都不记录,这正是隐私上的优点,也是保管链要求下的缺点。
- 答案会被直接采信,没有人去读那段被引用的原文。这里不核对被引条款是否仍然有效,也不判断适用法律是否就是客户以为的那部。
- 你希望工具直接对文件下结论。它负责检索和引用原文,判断留在人这边。
数据处理,直说
- 文件永不离开你的设备。解析、分块、向量化、检索都在标签页里完成。
- 无账号、无追踪像素。没有登录,也就没有把文档和某个人对应起来的可能。
- 不用于训练。另一端没有任何服务在接收文本。
- 缓存后可离线。唯一的外发请求是首次拉取模型权重,载荷只有文件名。
- 在浏览器里清除站点数据,索引、文本块和向量就一起删掉了,不会在别处留副本。
扫描版合同能读吗?
只有带文字层才行。纯图片页抽不出任何文字,解析器会把这份文件报出来,而不是建一个空文档。
合同会被发去别处做向量化吗?
不会。向量化在你的机器上由 Web Worker 完成:中文用 bge-small-zh-v1.5(约 25MB),英文用 all-MiniLM-L6-v2(约 23MB),中英混排用 multilingual-e5-small(约 120MB)。唯一的外发请求就是第一次下载这些权重。
一个库里能放多少份合同?
40 份文件、单份不超过 25MB、总量不超过 200MB、不超过 20,000 个文本块。合同文件通常很小,所以实际先撞到的是份数上限。
两个人能共用一个索引吗?
不能。索引存在某一个浏览器配置的 IndexedDB 里。要「共享」,只能导出带引用的问答记录,或者各自导入同一批文件。
生成的摘要能直接放进案卷吗?
把它当成一条检索结果,而不是核对过的结论。可选的生成档在本地跑 0.5B–1.5B(4-bit)模型,引用是从检索到的段落挂上去的,但每一句在成为工作成果之前,仍然要对着原文读一遍。