Можете ли вы преобразовать текст в 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 и не только
Post #487
3.15K