Skip to content

SUQL:让文本条件与数据库条件一起工作 ​

对应 CS224V · 2026-10-14 · A Structured / Unstructured Query Language。日期为校方课表日期,可能调整。核对官方课表。

资料状态

核对日期:2026-09-19。对应课程尚未开课;本文是基于公开课纲与文中原始资料的原创预习技术解读,不是课堂实录、讲义翻译或官方作业答案。本文于 2026-09-20 深度修订。示例为原创教学设计;离线实验与真实模型实验的边界分别说明,不以推演冒充模型实测。

结构化查询已经得到 C1、C5、C6,但用户还要求实践充分。C1 的评价明确支持,C5 明确反对,C6 没有相关信息。现在问题变成:怎样把有不确定性的文本判断放进数据库查询,同时保留可解释的语义?

SUQL 将文本运算放进可组合的查询表示 ​

SUQL 论文定义文本问答与摘要原语,使其能与关系运算组合;它还讨论执行优化。以下是本项目的教学设计,三值标签与缓存结构并非对论文接口的逐字复刻。

将文本判断记作 P(course),硬条件记作 H(course)。目标是满足 H AND P 的候选,而不是“先找到语义相似的评价,再希望它碰巧符合时间与学分”。

文本阶段返回支持、反对、未知,并保存证据片段。确定推荐要求 H 已确认成立且 P 为支持;未知项可以单独展示,但不能当成不实践或已实践。

为什么先取 top-k 可能改变答案 ​

假设语义排序最前面是 C2、C4,它们的实践评价都很强,但一个时间冲突,一个学期不符。若先取 top-2 再过滤,结果为空;真正符合条件的 C1 排第三,被永久丢掉。

所以“语义检索后过滤”是一个可能损失召回的近似计划,不能不加说明地当作精确查询。可以先限制结构化候选范围,再在其中检索文本;或渐进扩大检索,但仍需证明是否达到任务所需覆盖。

这条原则对“满足条件的所有课程”尤其重要。只查 top-k 无法直接证明全量结果完整。

条件下推什么时候合法 ​

对确定、无副作用的合取条件 H AND P,先检查廉价 H 通常能减少昂贵文本调用。但遇到或条件,不能随意把 H 全局下推。

text
用户条件:(秋季 且 实践充分) 或 明确指定 C4
错误计划:先只保留秋季 → 永远丢掉春季的 C4

正确计划必须保留两个分支的并集,再按实体去重。类似地,先 LIMIT 后过滤、先过滤后 LIMIT 通常不等价。优化器的首要责任是保持语义,其次才是省调用。

用成本模型解释执行顺序 ​

对两个确定的合取谓词 A、B,单条检查成本分别为 cA、cB,通过比例为 sA、sB。固定成本和短路执行下:

text
A 后 B:cA + sA × cB
B 后 A:cB + sB × cA

假设结构化检查成本 0.1,通过率 20%;文本检查成本 5,通过率 40%。前者优先的平均成本为 1.1,后者优先为 5.04。它解释了为什么廉价且排除率高的条件常值得先做。

实际模型调用可能批处理,成本随文本长度变化,选择率也需要估计,因此这个算例只用于理解优化依据。对有副作用、不稳定或依赖顺序的谓词,不能直接套用。

未知如何参与布尔运算 ​

设支持为 T、反对为 F、证据不足为 U。采用三值组合时,T AND U = U,F AND U = F,T OR U = T,F OR U = U,NOT U = U。这是一套本例明确选择的语义,不意味着任意文本问答接口都天然遵守它。

C6 的硬条件为 T、实践条件为 U,合并后仍为 U。C2 已有时间冲突,硬条件为 F;即使实践未知,合取也已经为 F,因而可以短路省掉一次文本调用。短路节省的依据来自布尔关系,不是因为未知被强制改成了假。

否定尤其危险。用户问“找不以考试为主的课程”,如果直接筛选 label != 'exam_heavy',缺证据记录可能被当作满足。正确过程是先判断“考试为主”的状态,再对其求否定:未知的否定依然未知。

输出策略则是另一层:只返回 T,还是把 U 放进待核实列表,可以由产品决定。不能通过展示层隐藏未知,就宣称检索阶段已经证明这些候选不符合。分开保存逻辑状态与展示策略,才能在用户降低要求或补充证据时重新计算。

文本结果的缓存需要绑定语义 ​

缓存键只用课程 ID 不够。评价更新、问题从“实践充分”变为“适合初学者”、模型与判断规则变化,都可能改变结果。应至少绑定文档版本、问题含义和判断器版本。

未知结果也可以缓存,但需要有效期或数据变化失效机制。否则新评价已经出现,系统仍永久显示未知。

追踪一条错误到具体阶段 ​

若 C6 被推荐,先看文本标签是否被误判为支持;标签正确为未知而最终仍推荐,则检查布尔组合或展示逻辑。若 C1 消失,检查它是否被 top-k 提前裁掉,或连接重复与聚合改变了结果。

固定 C1–C6 数据,分别运行硬过滤、文本标注、合并和排序,保留中间表。改变一个条件或一条评价,预期只影响依赖它的结果。这比让模型解释“为什么推荐”更能验证真正执行的逻辑。

SQL 的确定性与文本判断的不确定性会在这里相遇;系统必须显式管理二者,而不是把模型输出包装成数据库字段后就视为事实。继续阅读SPINACH,进入需要主动探索模式的知识图谱。


本课程逐讲目录 · 两门课程映射与资料边界 · 离线实验与验证边界