На деле этот способ работать с личной информацией сильно упрощает жизнь. Вместо того чтобы прятать имена или телефоны под звёздочками и делать текст бессмысленным, мы заменяем их на специальные метки:
{Имя-1} или {Телефон-2}. В метке сразу видно, что это за данные и какой у них номер. Настоящие значения — имя, номер, адрес — хранятся в отдельной защищённой таблице с парами «метка = оригинал». Чем полезно для бизнеса
Представьте, что нужно отправить текст стороннему провайдеру, например от OpenAI или Grok, но без риска передать личные данные клиентов. Находим в тексте важные данные, ставим вместо них метки, отправляем безопасный вариант LLM. Она работает с фразами вроде: «клиент
{Имя-1} позвонил по {Телефон-2}», генерирует ответ с этими метками, например: «Перезвоните {Имя-1} на {Телефон-2}». Потом наша система берёт из таблицы настоящие значения и возвращает клиенту обычный текст. Модель не видела оригинальные данные, все правила соблюдены, а клиент получил обычный ответ. Другой распространённый случай. Компании важно разграничить допуск разных сотрудников к личным данным. Здесь поможет внутренний агент с доступом и к документам, и к отдельной таблице с личной информацией. Он соберёт информацию по запросу, но нужно установить правило: агент показывает руководителю настоящее имя из
{Имя-1}, а рядовому сотруднику отправляет звёздочки 😊. Каждый видит только ту часть информации, которая ему доступна.Сложности в работе
Сначала задача кажется простой, но на практике возник ряд неожиданных проблем. Основная сложность связана с тем, что текст — «живая система». В русском языке слова изменяются по падежам и формам, и система поиска с последующей заменой на метки должна это учитывать.
✔️ На ранних этапах часть проблем удалось снизить за счёт доработки промптов. Например, модель стала реже генерировать лишние и избыточные теги, а разметка стала более устойчивой.
↗️ Отдельного внимания потребовала обработка разных форм одного и того же имени. Например, в предложении «Михаил, Елена и Саша пришли» все сущности корректно заменяются на
{Имя-1}, {Имя-2}, {Имя-3}. Однако в следующем предложении «Михаилу звонил клиент» форма «Михаилу» может быть распознана как новая сущность, что приведёт к появлению отдельной метки {Имя-4}. Без механизма сопоставления по смыслу и контекстной близости одна сущность начинает дробиться на несколько — это усложняет таблицу и снижает качество последующей обработки.☝️ Ещё один сложный случай — связанные данные внутри одного предложения. Например, в конструкции «Моё имя Михаил, фамилия Мартьянов» система может выделить
{Имя-1} и {Имя-2} как независимые сущности. Формально такая разметка допустима, однако в дальнейшем она приведёт к неоднозначностям при извлечении данных или генерации ответов. LLM частично восстанавливает связь по контексту, но без явного механизма сопоставления ошибки всё равно накапливаются.Сейчас мы продолжаем исследовать подходы к решению этих проблем — тестируем разные механизмы объединения сущностей и учёта контекста.
Если у вас есть похожие кейсы или идеи — давайте обсудим в комментариях 😊
Автор этого поста и множества других по фильтрации данных, Миша Мартьянов — NLP-инженер в R&D red_mad_robot.
#Безопасность