原创虚构教学示例,未预填模型结果。
可编辑的起点
- 1 · 要检查的材料
- L1| 订单在付款后两个工作日内发货。 L2| 未拆封的商品可在 30 天内退货,并获得全额退款。 L3| 已拆封的商品可在 14 天内换货,但不予退款。 L4| 礼品卡永久有效,且不能兑换现金。 L5| 请通过电子邮件联系客服,通常在一个工作日内回复。
- 2 · 你想问的问题
- 哪一行回答了这个查询:“打开包装盒之后,还能把钱要回来吗?”
- 3 · 定义 2–6 个选项
- L1
- L2
- L3
- L4
- L5
- 没有任何一行能回答
没有哪一行涉及这个查询。
这些是模型判断的概率,不是实测准确率或保证。“是/否”对应你写的标准,选项概率只在你提供的选项内比较。
Jev 能按语义而不是关键词来搜索吗?
可以,前提是候选范围有限。TypeSafe 的逐行搜索实用示例先给文档的每一行标上 id,把带标记的文本作为状态发送,再提出一个 Choice 问题:哪一行回答了这个查询?返回的答案带有每一行的概率,你的代码可以据此排序。任何简短的文本行列表都适用同样的结构:收件箱里的邮件主题、表格中的各行、政策文件的各项条款。
打开可编辑的逐行搜索模板。其中有 5 行虚构的店铺政策,以及一个查询;这个查询与真正回答它的那一行几乎没有共同的字词。载入只会建立草稿,主动点击检查才运行。
模板里为什么有一个“没有任何一行能回答”选项
Choice 的各项概率加起来始终等于 1。因此,即使文档中没有任何内容能回答查询,也总会有某一行排在第一。官方实用示例的做法是在同一个请求里再问一个是非问题:到底有没有哪一行涉及这个查询?你的代码先读取这个答案,再决定是否相信排序。
本站的自定义编辑器一次只问一个问题,所以这个模板增加了第六个选项“没有任何一行能回答”,用来培养同样的习惯。在实际集成中,建议优先采用实用示例里的双问题形式。
| 组成部分 | 作用 |
|---|---|
行 id(L1 … L5) |
给每个候选一个简短、稳定的 id。 |
| Choice 问题 | 针对一个查询给各个 id 排序。 |
| “没有任何一行能回答” | 避免无法回答的查询看起来像是已有答案。 |
每次只改一项,再比较结果
- 运行模板,记录 L2 和 L3 的概率。两行都提到退换,但只有一行针对已经拆封的商品。
- 把查询改为“送货需要多长时间?”,再运行一次。
- 问一个这几行都无法回答的问题,例如“你们能寄到加拿大吗?”,看最后一个选项是否胜出。
模板没有预填正确答案。在 5 行虚构文本上运行三次,并不能说明它在你的文档上准确率如何。
需要提前考虑的限制
- 列表规模。 实用示例指出,一个 Choice 问题最多接受 255 个选项,因此一个请求最多覆盖 255 行;更长的文档需要先做一轮筛选,缩小候选范围。本站编辑器支持 2–6 个选项;这是本站限制。
- 阈值。 实用示例中用于区分“已回答”“部分回答”和“未涉及”的分界值,只是恰好能把它自己的例子分开,本意是让你在自己的文档上调整。
- 检索依然重要。 TypeSafe 的重排序实用示例先用关键词筛出一份候选短名单,然后才针对每一组“查询–段落”各问一个问题。Jev 判断的是交给它的候选,它并没有搜索整个语料库。
- 事实留在原文里。 排序只是指向某一行。请展示那一行的原文,而不是转述,方便读者自行核实。
项目案例页列出了社区的搜索和重排序实验;每一项都只是作者自行报告的单次对比,不是基准评测。如果相近的几行给出了互相矛盾的信号,请阅读概率与置信度的区别。
来源与延伸阅读
本指南依据官方文档和所链接的社区报告编写。社区观察均注明原作者。
我们如何核查来源