Эмбеддинги простыми словами: как ИИ находит смысл в числах
Эмбеддинги простыми словами: как ИИ превращает фразу в вектор чисел и находит похожий смысл, и почему на этом держится память ассистента. С примерами.
Эмбеддинги простыми словами: это представление смысла текста в виде ряда чисел. У Алекса, который тонет в переписке своей команды, слова часто путаются: кто написал «клиент недоволен сроками», а кто «заказчик жалуется на задержку», он уже не помнит, а ведь по смыслу это одно и то же. Модель берёт слово, фразу или целый абзац и превращает их в вектор: длинный список чисел, обычно из сотен или тысяч позиций. Главное свойство такого перевода: у близких по смыслу текстов получаются близкие векторы, даже если слова не совпадают почти совсем. ИИ-ассистент пользуется этим каждый день. Когда Вы задаёте вопрос, система превращает его в такой же вектор, ищет в памяти записи с ближайшими векторами и подаёт их модели в момент ответа. Так работает поиск по смыслу, на котором держится долговременная память ассистента: она находит нужное, даже если Вы спрашиваете совсем другими словами, чем говорили месяц назад. Ниже разберём, как устроен этот перевод слов в числа, что он умеет и где проходят его пределы.
Что такое эмбеддинг: число вместо слова
Компьютер не понимает слов. Всё, с чем он умеет работать, это числа. Чтобы модель могла обращаться со смыслом, смысл нужно сначала перевести на язык чисел, и эмбеддинг ровно такой перевод. OpenAI в анонсе своих первых моделей эмбеддингов описала их как числовые представления понятий: текст превращается в последовательность чисел, и отношения между понятиями становятся видны компьютеру как отношения между числами.
В том анонсе был наглядный пример поиска. Запрос спрашивал, что говорят собачьи компаньоны, а поиск по эмбеддингам находил документ с единственным словом «woof», собачьим «гав». Ни одно слово запроса не совпадало с документом. Совпадал смысл, и числовые отпечатки это уловили.
Само слово пришло из английского: embedding, «встраивание». Фраза встраивается в пространство чисел и получает в нём своё место. Дальше мы будем говорить «вектор»: это тот же ряд чисел, только с ударением на том, что у него есть положение, которое можно сравнивать с положением других.
Как выглядит вектор смысла
Представьте координаты города: широта и долгота, два числа, и любая точка планеты определена. Эмбеддинг делает то же самое со смыслом, только координат не две, а сотни или тысячи. Фраза «клиент просит перенести оплату» становится точкой в пространстве с сотнями измерений, и рядом с ней лежат точки других фраз о деньгах, сроках и договорённостях.
Отдельное число в этом ряду не означает ничего: нельзя ткнуть в двести тринадцатую позицию и сказать, что она отвечает за вежливость. Смысл кодируется всем рядом сразу, как мелодия кодируется не отдельной нотой, а их последовательностью.
Важно и то, что вектор считается не по словарю, а моделью, которая училась на огромных объёмах текста. Поэтому она улавливает связи, которые словарю недоступны: «закрыть вопрос» и «решить проблему» лягут рядом, хотя общего корня в них нет ни одного.
Как ассистент ищет по смыслу, а не по словам
Обычный поиск сравнивает буквы. Спросите у него «жалоба на сроки доставки», и он честно найдёт документы, где встречаются слова «жалоба» и «доставка». Запись «клиент недоволен, что заказ пришёл поздно» он пропустит: совпадений нет.
Поиск по эмбеддингам работает иначе. Ваш вопрос превращается в вектор, и система ищет в базе записи, чьи векторы лежат ближе всего. Близость измеряется углом между векторами, а это как два человека, показывающие пальцем в небо: важно не длина руки, а смотрят ли оба в одну сторону. Чем меньше угол, тем ближе смыслы. Запись о недовольном клиенте окажется среди ближайших, потому что рядом её смысл, а не её буквы.
Руководство OpenAI по эмбеддингам перечисляет и другие задачи, которые решаются тем же приёмом: кластеризация (сгруппировать похожие тексты), рекомендации (подобрать связанное), классификация (отнести текст к категории). Все они сводятся к одному действию: измерить расстояние между смыслами.
Зачем эмбеддинги памяти ИИ-ассистента
Языковая модель сама по себе ничего не хранит между разговорами. Долговременная память ассистента это внешняя база, и эмбеддинги в ней главный рабочий инструмент. Каждый факт, документ или фрагмент разговора при записи получает свой вектор. Когда Вы задаёте вопрос, он тоже превращается в вектор, база отдаёт ближайшие по смыслу записи, и ассистент подкладывает их модели в момент ответа.
Без эмбеддингов такая память была бы бесполезна. У Алекса за год работы команды скопился архив: сотни разговоров, десятки документов. Найти в нём нужное по точным словам почти невозможно, ведь он не помнит, как именно формулировал мысль в марте. Работает это как библиотекарь, который помнит смысл каждой книги, а не номер полки: спросите его своими словами, и он принесёт нужное, даже если название забыто. Поиск по смыслу снимает это требование: Вы спрашиваете «кто просил отсрочку оплаты», а память находит фразу «Виктор уточнял, можно ли перенести платёж на конец месяца».
Так устроена и «Вечная память» Хермес: каждая запись хранится вместе со своим вектором, и она находит давние факты по смыслу вопроса, а не по совпадению слов. Как этот слой работает целиком, от контекстного окна до ночной консолидации, мы разбираем в обзоре темы память ИИ-ассистента.
Что эмбеддинги не умеют
Честный разбор требует назвать и пределы.
Вектор нельзя прочитать. Из ряда чисел не восстановить исходную фразу дословно, поэтому база памяти хранит обе вещи: сам текст и его числовой отпечаток. Вектор служит указателем, текст остаётся источником.
Векторы разных моделей несовместимы. Каждая модель эмбеддингов строит своё пространство смыслов, и сравнивать вектор из одного пространства с вектором из другого бессмысленно. Практическое следствие: при смене модели эмбеддингов накопленную базу пересчитывают заново. Это штатная процедура, но её стоит учитывать, когда Вы спрашиваете, переживёт ли память смену технологий.
Похожесть не гарантирует истину. Поиск по эмбеддингам находит близкое по смыслу, а не проверенное по факту. Если в базе лежат две противоречащие записи, обе могут оказаться рядом с вопросом. Поэтому зрелые системы памяти не ограничиваются поиском: они сводят дубли и помечают противоречия, чтобы модель получала упорядоченные факты, а не ворох похожих цитат.
Что из этого следует для Вашей работы
Разбираться в математике эмбеддингов Вам не нужно: ассистент считает векторы сам и молча. Полезны три практических вывода.
Первый: с памятью на эмбеддингах можно говорить как удобно. Не подбирайте «те самые» слова из старого разговора, спрашивайте своими: поиск по смыслу найдёт.
Второй: качество памяти проверяется вопросом другими словами. Опишите давний факт иначе, чем говорили тогда. Настоящая память на эмбеддингах ответит, поиск по буквам промолчит.
Третий: эмбеддинги объясняют, как память ищет, но не отвечают на вопрос, кому она принадлежит. Векторы Ваших разговоров лежат в конкретной базе на конкретном сервере, и вопрос «чей это сервер» остаётся главным. Число вместо слова: так ИИ находит смысл. А вот кто владеет этими числами, решает уже не математика, а архитектура продукта.
Что такое эмбеддинг простыми словами?
Эмбеддинг это числовой отпечаток смысла. Модель превращает слово, фразу или абзац в вектор: длинный ряд чисел, обычно из сотен или тысяч позиций. У похожих по смыслу текстов такие ряды получаются близкими, у далёких по смыслу: разными. Отдельное число в векторе не означает ничего, работает только весь ряд целиком. Благодаря этому компьютер сравнивает смыслы как расстояния: чем ближе два вектора, тем ближе две мысли.
Чем поиск по эмбеддингам отличается от поиска по словам?
Поиск по словам находит только совпадения букв: запрос «жалоба на доставку» не найдёт запись «клиент недоволен, что заказ пришёл поздно». Поиск по эмбеддингам сравнивает не буквы, а векторы смысла, поэтому находит эту запись, хотя в ней не совпадает ни одно слово. Для памяти ИИ-ассистента это ключевое свойство: Вы редко спрашиваете теми же словами, которыми говорили месяц назад.
Нужно ли разбираться в эмбеддингах, чтобы пользоваться ассистентом?
Нет. Эмбеддинги работают под капотом: ассистент сам превращает Ваши слова в векторы и сам ищет по ним. Полезно понимать одно следствие: память на эмбеддингах находит записи по смыслу, а не по точным словам, поэтому спрашивать можно как удобно. А при выборе ассистента стоит задать другой вопрос: где физически хранится база с этими векторами и можно ли её забрать.
источники (2)
- Vector embeddings · OpenAI API guide
- Introducing text and code embeddings · OpenAI · 2022