Недавно проводил очередной курс молодого ИИ-бойца - обучал переводчицу ИИ-инструментам, и поймал себя на мысли, что если переводить глоссарий через ИИ и подгружать его в ИИ, делать его надо по-другому

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Суть идеи такая.

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

Как этого избежать? Нужно строить глоссарии по смысловым группам, то есть строить группы терминов вокруг одного термина. Получается: берем одиночный термин, и подтягиваем в его группу все термины, которые имеют этот или однокоренной термин в составе. И так далее проходим по всем одиночным терминам.

Безусловно, часть многословных терминов будут присутствовать в нескольких группах, это неизбежное зло, но так хотя бы ИИ сможет пользоваться глоссарием через RAG. Это значит, что если ИИ захочется посмотреть какой-то термин, то она получит по нему один жирненький и информативный чанк, в котором будут собраны все ипостаси этого термина, и модель уже сможет прилепить его к переводу.

Есть вероятность, что этот подход решит и еще одну пока нерешаемую проблему. Как-то раз ко мне обратилась переводчица, попросила придумать, как заставить модель видеть одну нераспространенную, но принятую у клиента аббревиатуру. Аббревиатура не несла никакого смысла для обычного человека и вряд ли появлялась в учебных данных у модели - что-то типа ТАЛЭ. Если у модели нет смысловой привязки, значит она не может отнести слово ни к какому семантическому пространству, следовательно, в RAG такое пихать бесполезно - целенаправленно такой эмбеддинг модель искать не будет. На тот момент мы решили, что оптимальнее всего просто закинуть этот термин в промпт (так оно работает, хотя и жрет токены в каждом запросе).

А вот если мы этот термин подадим с расшифровкой, то он уже приобретет какой-то смысл, модель его отнесет в нужное векторное/семантическое пространство (например, "энергетику", последняя буква как раз было что-то про энергетику), и модель сможет им оперировать. Это гипотеза, на практике будем посмотреть.

Таким образом, глоссарии под RAG следует строить группами - слово + группа терминов, содержащих это слово; следующее слово + его группа. В Python это реализуется без проблем. Будем потихоньку писать скрипт.


Источник: vk.com

Комментарии: