Можете ли вы
преобразовать текст в embeddings вручную?
Натолкнулся на
пост буквально разжёвывающий что такое Embeddings. Чуть чуть переработал что бы показать каким образом эта технология делает возможным
мой проект.
Как работают векторные базы данных на простейшем примере?
[1]
Дано
↳ Набор данных (то, что отправляем
Сохранителю) из трёх предложений, каждое содержит 3 слова (или токена, типа токен на слово).
Обработаем фразу "how are you".
[2] 🟨
Векторное представление слов
↳ Для каждого слова ищем соответствующий вектор представления слова из таблицы, содержащей 22 вектора, где 22 — это наш размер словаря (напоминаю: одно слово — один токен).
[3] 🟩
Кодирование
↳ Передаем последовательность векторов слов в кодировщик, чтобы получить последовательность векторов признаков, по одному на каждое слово.
[4] 🟩
Среднее объединение
↳ Объединяем последовательность векторов признаков в один вектор с помощью "среднего объединения" — усреднения по столбцам.
↳ Результат — это единый вектор. Часто его называют текстовый embedding.
[5] 🟦
Индексация
↳ Для удобства уменьшаем размерность вектора текста с помощью проекционной матрицы. Объём уменьшения — 50% (с 4 до 2).
↳ Вектор с уменьшенной размерностью сохраняется в векторной базе данных.
[6] Обработка "who are you" и "who am I"
↳ Повторяем шаги [2]-[5].
Теперь наш набор данных (
флэшбэков) индексирован.
[7] 🟥
Запрос: "am I you" (то, что мы спрашиваем у Отвечателя)
↳ Повторяем шаги [2]-[5].
↳ Результатом является двумерный вектор запроса.
[8] 🟥
Скалярное произведение
↳ Вычисляем скалярное произведение между вектором запроса и векторами базы данных. Все они двумерные.
↳ Цель — использовать скалярное произведение для поиска похожих данных.
[9] 🟥
Поиск ближайшего соседа
↳ Находим наибольшее скалярное произведение среди данных с помощью линейного сканирования.
↳ Предложение с наибольшим скалярным произведением — "who am I".
↳ На практике, поскольку сканирование миллиардов векторов медленно, используется алгоритм приближённого поиска ближайших соседей (ANN).
Вот
здесь автор статьи даже сделал документ позволяющий экспериментировать вручную.
Сергей Булаев AI 🤖 - об AI и не только
Обсуждение 2
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram