一次次丰富同一类实体,你会不断重新发现相同的现实事物——同一家公司、同一种药物副作用、同一个人——每次却用略有不同的措辞来描述。语义 ID 是 Entity Enricher 根据对象的关键字段为其分配的稳定、组织范围内的标识符,因此这些近似重复项会归并为单一身份,供你进行分组、去重和联接。
对象的标识由其关键字段构建——可以是一个或多个。两个示例:
name 为键的副作用在不同运行和语言中,它显示为 Headache、Céphalée 和 Cephalalgia。一个关键字段,三种拼写,同一个真实概念。
名称 + 国家/地区为键的公司Acme Inc. · United States 和 Acme Incorporated · United States 是同一家公司 — 而 Acme Inc. · Germany 则是另一家。第二个键用于消除歧义;这就是一个对象可以携带多个键的原因。
纯字符串匹配对这些情况全部失效;而人能判断哪些是同一个。语义 ID 会自动编码这一判断。
string 属性(默认命名为 id),保存一个不透明且稳定的标识符。preserve)字段:始终为字符串,绝不是键,绝不是多语言,每个对象最多一个。manufacturer),或数组中的每一项(例如每个side_effect)。模型返回结果后,Entity Enricher 会分四步解析每个语义 ID——从成本最低的开始:
“Acme Inc.” 和“Acme Incorporated”会彼此相邻。0.92,可按属性调整),则复用该概念的 ID。否则会生成一个全新的 ID 并存储以备下次使用。阈值权衡:阈值越高越严格(意外合并更少);越低越宽松(去重更激进)。当默认值 0.92 合并过多或过少时,可按 property 单独调整。
是否生成 ID 取决于该对象的输入中是否已存在 ID。这正是实现往返的关键:先富集一次以获取 ID,随后在后续运行中传回已知 ID,从而将新事实附加到同一身份上——更省成本且无歧义。
如果你发送的对象已带有语义 ID,则会被视为一次查找:ID 原样保留,record 关联到该现有概念,并且不进行嵌入——无成本,也无匹配或生成。你是在告诉平台“该对象已在我们的数据库中被标识”。
如果对象没有语义 ID,平台会通过上述四个步骤生成一个。此后该 ID 将成为该对象在你 organization 数据库中的稳定标识符。
存在但无法识别的值(并非真正的概念 ID)将被忽略,转而生成一个 ID。
每次充实时,解析会消耗少量嵌入用量(与任何模型调用一样按量计费)。精确匹配缓存让重复调用免费,输入提供的 ID 则不产生任何费用。
解析出的 ID 会出现在充实输出的 JSON 中(每个对象上的 id 字段)以及记录详情的语义概念中。可用它们来:
融合会在单次运行内协调各模型之间的分歧;语义 ID 则跨多次运行和时间协调同一实体。两者协同工作。