Семантические 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 разрешает каждый семантический ID за шесть шагов — начиная с самых дешёвых. Четыре шага до эмбеддинга — это чистое сравнение текста, поэтому идентичность, определённая на них, не стоит вообще ничего:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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