Семантические ID — документация Entity Enricher

Семантические ID

Обогащая один и тот же тип сущности снова и снова, вы постоянно заново обнаруживаете одни и те же реальные объекты — ту же компанию, тот же побочный эффект препарата, того же человека — каждый раз описанные немного разными словами. Семантический ID — это стабильный идентификатор в рамках организации, который Entity Enricher присваивает объекту на основе его ключевых полей, поэтому такие почти-дубликаты сводятся к одной идентичности, по которой вы можете группировать, дедуплицировать и объединять данные.

Проблема: одно и то же, разными словами

Идентичность объекта строится из его ключевых полей — и их может быть одно или несколько. Два примера:

Один ключ

Побочный эффект с ключом по name

Оно появляется как Headache, Céphalée и Cephalalgia в разных запусках и на разных языках. Одно ключевое поле, три написания, одно реальное понятие.

Два ключа

Компания с ключами название + страна

Acme Inc. · United States и Acme Incorporated · United States — это одна и та же компания, тогда как Acme Inc. · Germany — другая. Второй ключ устраняет неоднозначность; именно поэтому объект может содержать более одного.

Простое сопоставление строк не срабатывает ни в одном из этих случаев; человек понимает, какие из них совпадают. Семантические ID кодируют это суждение автоматически.

Что такое семантический идентификатор

Как это работает

После того как модель возвращает результат, Entity Enricher разрешает каждый семантический идентификатор за четыре шага — сначала самый дешёвый:

1
Составьте текст идентичности
Объедините все ключевые поля объекта — плюс ключи всех вложенных объектов 1-1, которые он содержит — в одну строку на вашем основном языке. Элементы внутри массивов не включаются: каждый элемент массива имеет собственную идентичность. Текст нормализуется (приводится к нижнему регистру, части в скобках удаляются, пробелы сжимаются), чтобы уменьшить незначительные различия.
2
Искать точное совпадение
Если этот в точности нормализованный текст уже встречался в вашей организации, его существующий ID используется повторно немедленно — без вызова модели и без затрат.
3
Встроить и сравнить
В противном случае текст встраивается и сравнивается по смыслу с существующими концептами того же типа с помощью векторного сходства — так что «Acme Inc.» и«Acme Incorporated» оказываются рядом.
4
Использовать повторно или создать
Если ближайшее совпадение набирает больше порога схожести (по умолчанию 0,92, настраивается для каждого свойства), ID этого концепта используется повторно. Иначе создаётся совершенно новый ID и сохраняется на будущее.

Компромисс порога: более высокий порог строже (меньше случайных слияний); более низкий — мягче (более агрессивная дедупликация). Настраивайте его для каждого свойства, когда значение по умолчанию 0.92 объединяет слишком много или слишком мало.

Входные ID против сгенерированных ID

Будет ли ID сгенерирован, зависит от того, присутствует ли он уже во входных данных для этого объекта. Именно это позволяет выполнять круговой обмен: обогатите один раз, чтобы получить ID, а затем передавайте известный ID в последующих запусках, чтобы привязать новые факты к той же сущности — дешевле и без неоднозначности.

ID уже во входных данных → сохранён (поиск)

Если отправляемый вами объект уже содержит семантический ID, он трактуется как поиск: ID сохраняется дословно, запись связывается с этим существующим концептом, и эмбеддинга нет — ни затрат, ни поиска-или-создания. Вы сообщаете платформе, что «этот объект уже идентифицирован в нашей базе данных».

Во входных данных нет ID → сгенерирован

Если у объекта нет семантического ID, платформа создаёт его с помощью четырёх шагов выше. Этот ID с этого момента становится стабильным идентификатором объекта в базе данных вашей организации.

Присутствующее, но нераспознаваемое значение (не настоящий ID концепта) игнорируется, и вместо него генерируется ID.

Как это включить

1
Выберите модель эмбеддингов (один раз для организации)
Владелец выбирает модель с поддержкой эмбеддингов в разделе Model Management как модель эмбеддингов по умолчанию для организации. Она почти неизменяема: после появления концептов её можно только очистить, но не переключить (сохранённые векторы несопоставимы между моделями). Без неё семантические ID просто пропускаются.
2
Добавить семантические идентификаторы в схему
Два способа, оба в Редакторе schema:
  • Автоматически при генерации — отметьте «Генерировать семантические ID для типов»; каждый объект с ключом (собственным или на вложенном объекте 1-1) получает его, включая корневую сущность.
  • Вручную — используйте элемент управления «+ Добавить семантический ID» на любом объекте или в нижней части сущности.

Разрешение расходует небольшое количество эмбеддингов на каждое обогащение (тарифицируется как любой вызов модели). Кэш точных совпадений делает повторы бесплатными, а предоставленные во входных данных ID ничего не стоят.

Где появляются ID и что с ними делать

Разрешённые ID появляются в выходном JSON обогащения (поле id у каждого объекта) и в семантических концепциях в деталях записи. Используйте их, чтобы:

Дополняет слияние нескольких моделей

Слияние согласовывает расхождения между моделями в рамках одного запуска; семантические ID согласовывают одну и ту же сущность между запусками и во времени. Оба механизма работают вместе.