每一次解析语义 ID 的扩充,要么复用你的组织已知的概念,要么新建一个。语义 ID 页面让这份不断增长的词汇表变得可见:浏览它、衡量两个条目究竟有多接近、手动添加词条、回答身份判定模型留给你的问题、停用不再需要的条目,以及把整份词汇表迁移到另一个嵌入模型。
它位于侧边栏的 /semantic-ids,只有当你的组织已配置嵌入模型、且至少有一个模式带有语义 ID 时才有用——概念由增强创建,而非由该页面创建。
每一行代表一个概念:它的规范文本(首次创建该概念的身份文本)、它的概念类型(它所处的空间——默认为实体类型名称)、有多少条记录使用它,以及它的创建时间。可按文本、任意数量的概念类型、写入这些概念的模式,或按最低使用次数进行筛选,找出值得关注的条目。选择模式相当于选取其概念类型的快捷方式——由于类型是共享的,因此也会显示其他模式在同一类型中创建的概念。导出视图会完全按照当前筛选显示的内容进行下载。
相似度只在单个空间内计算。 向量仅在相同的概念类型和嵌入模型内才可比较。位于所选概念空间之外的行显示 —,意思是“不可比较”——绝不是“0%”。
有时数据尚未到来,你就已经知道词汇表了——一份菜品、状态或产品系列清单。整理栏正是为录入这类清单而设计的:先将范围限定到某个概念类型——范围会写入页面地址,因此 /semantic-ids/<concept type> 就是直达该切片的链接——然后重复输入值 → 检查 → 添加。按回车执行检查,再按一次回车即可添加,之后输入框会自动清空并保持焦点,因此录入五十个词条只需几分钟,全程无需使用鼠标。
「检查」是对真实解析阶梯的一次试运行——与增强所走的阶梯完全相同——因此它给出的结论并非估算。而且既然你已经为这个结论付过费,它同时充当重复项防护:当已有概念以不低于阈值的相似度覆盖你的文本时,添加概念 将保持禁用。
这种拒绝是有意为之:阈值以上的孪生条目永远无法在解析中胜出,还会让后续匹配在两个条目之间不可预测地分散。输入框旁的阈值滑块决定了检查时这条界线的位置——调高更严格,调低则更积极地合并。
词汇表也不必从一次扩充开始:新建概念类型…(位于页面工具栏,编辑者及以上角色可用)用于命名类型,并选择其概念所在的嵌入模型 —— 默认使用你所在组织的模型。整理栏会立即限定到该类型,而该类型会随你添加的第一个概念加入词汇表;已存在的类型将保留其模型,因为在模型之间移动词汇表正是迁移功能的用途。
不会有内容仅仅因为看起来相似就进入审核。这里的每一对都是身份判定模型作出决定后留给你的:它无法判断(不确定)、它发现你的两个概念都与同一段输入文本相同(疑似重复),或者它把两个度量上几乎完全相同的概念区分开了(保持区分)——列出最后一种情况,是为了让你确认它没有漏掉显而易见的候选项。每一行都附有判定模型自己的说明,解释它据何作出决定。
比较 → 会跳回表格并选中该概念,让你在决定之前先看看它附近还有什么。合并… 把一个并入另一个——落选一方的写法会成为胜出方的别名,于是这一对在各处都归为一体并保持一致。忽略 则在两者确实是两回事时关闭该问题。使用次数会告诉你数据实际上更偏向哪一个。
右侧面板显示该概念的 ID(可复制——这是数据库关联所依据的字段)、规范化文本、其背后的嵌入模型,以及解析到该概念的记录。所选概念是页面地址的一部分,因此地址栏中的 URL 就是可直接返回该概念的链接——可分享给同事,也值得记录在工单中。两种视图可将其置于相邻概念之中进行查看。
把 1536 个维度压平成 3 个必然无法保持距离,而且这种布局会夸大簇的紧密程度。两种视图都用同一套相似度色阶为每个点着色,所以要看颜色,而不是间距。一次会话中的第一张图需要几秒钟完成布局;之后的都是瞬时的。
每条关联记录都会显示它解析到此处时的得分。— 表示该 ID 是随输入传入并直接透传的,因此从未进行过任何比较——也就是语义 ID 指南中所述的免费且无歧义的路径。
导入并解析会将整列 CSV 数据送入同一套逐级流程,并为每一行标注将会发生的处理结果——文件大小不受限制;大文件会以每批 1000 条的方式解析,并实时显示进度。文件在你的浏览器中解析,只有值本身会被发送。
| 结果 | 这意味着什么 |
|---|---|
exact | 规范化后的相同文本已存在——免费,无需调用模型。 |
matched | 另一种表述以高于阈值的相似度解析到了某个已有概念。 |
would_mint | 没有足够接近的匹配项;在此处进行增强会创建一个新概念。 |
minted | 同一情况,但已开启创建——该概念现已存在(仅限所有者)。 |
概念类型靠输入,而非从列表挑选。用文件开启一套词表再正常不过,因此该字段会推荐你已有的概念空间,同时也接受一个你还没有的名称 —— 并在确实是新名称时标注新。新名称会提出一个之后无法再问的问题:它的概念将存放在哪个嵌入模型中。在此作答,概念空间便会随本次导入创建的第一个值一同建立;此后,将词表在模型之间移动就属于迁移了。
有两点可以避免一次笔误演变成第二套词表:输入你已有的概念空间名称即会选中它,无论大小写如何;与已有名称仅相差一两个字母的名称会被指出,并提供一键更正。而对于真正全新的概念空间,没有任何可比对的内容,因此仅匹配的运行会回答“所有值都将被创建”,不会嵌入任何一行 —— 也不会为此收费。
已解析的行可单独下载为 CSV,因此导入也可以纯粹用作审计:我们的 900 个供应商名称中,哪些已经存在,哪些会开出一个新身份?导出则反向运作,并以导出时所用的筛选条件命名文件,因此一整个文件夹的导出都能自我说明。
这里的删除具有多数数据删除操作所不具备的安全性:词汇表会自行重建,因为下一次增强只要需要就会重新生成。回不来的是与你已存储的 ID 之间的收敛性,对话框会在你确认前用真实数字把这一点说清楚。
发生这类变更后,保留旧概念才是冒险之举,而非稳妥之选:由新关键字段组成的身份仍可能落在旧向量的阈值范围内,被悄悄吸收,最终留给你一批两头都不代表的 ID。
来自两个不同模型的向量无法相互比较,因此切换模型意味着要为每个概念重新生成嵌入向量。一旦已存在概念,此迁移就是唯一受支持的做法——这也正是组织的嵌入模型设置不会自行变更的原因。
预览会报告重新嵌入的成本,以及哪些概念对可能碰撞——在新空间中彼此落入阈值范围内,从而开始被解析为同一个。它测量的是现实可能的候选对,而非所有配对,并会明确说明这一点。
在一旁构建新向量的同时,增强仍会在旧空间中继续解析;期间新生成的概念会由后续一轮处理补上。切换在最后一步一次性完成,同时也会切换你所在组织的默认嵌入模型。中断它并无害处——重新开始会从中断处继续。
检查、添加和导入与其他嵌入用量一样计费,而完全命中不产生费用,因为它们根本不会到达模型。浏览、对比、轨道图、3D 图、导出和删除均免费。一天的交互式支出会合并为额度记录中的一行,这样账目才保持可读,而不会被一堆不足一分钱的零头塞满。