От слов к векторам: как эмбеддинги помогают моделям понимать нас

embeddings vector llm

Поделиться:

Чтобы применять большие языковые модели (LLM) в бизнесе, важно разобраться, что такое эмбеддинги. Эмбеддинг (от англ. embedding — вложение или встраивание) — это числовое представление данных, которое позволяет моделям анализировать и интерпретировать текст.

Эмбеддинги используются не только для текста, но и для изображений, видео и аудио, с различными методами для каждого типа данных. В этой публикации мы рассмотрим текстовые эмбеддинги.

Текстовые эмбеддинги представляют собой числовые векторы, отображающие слова или фразы в многомерном пространстве. Эти векторы помогают моделям машинного обучения распознавать смысл и взаимосвязи в тексте.

Технология создания эмбеддингов появилась задолго до генеративного ИИ и уже давно используется в обработке естественного языка (NLP). С появлением LLM эмбеддинги особенно «пригодились» для решение двух задач: преобразования текста в подходящую математическую форму и выполнения быстрого семантического поиска. Одним из популярных применений эмбеддингов является Retrieval-Augmented Generation (RAG), пример реализации можно посмотреть в нашем блоге.

В этой публикации мы рассмотрим, как эти задачи решаются с помощью векторных баз данных и оптимизированных алгоритмов поиска.

На основании текста нельзя делать вычисления

Начнём с того, что текст нельзя использовать для вычислений напрямую, потому что он не имеет числового представления, необходимого для выполнения математических операций. Возникает вопрос — как мы можем сделать его пригодным для анализа и обработки?

Для этого текст необходимо перевести в числовой формат. Для этого и используется текстовые встраивания — эмбеддинги. Давайте разберёмся, что такое эмбеддинги и как они работают.

Поэтому нужны числовые представления текста

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

Как именно перевести текст в числа (и получить эмбеддинги)?

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

Существует больше десятка моделей, преобразующих текст в векторы. Если кратко, то они различаются тем, как учитывают контекст. Статистические модели создают эмбеддинги, опираясь на статистику совместного употребления слов, без учёта контекста. Нейросетевые модели строят контекстуализированные эмбеддинги, используя нейросетевые архитектуры.

Современные модели всё чаще основываются на нейросетях, особенно на архитектуре трансформеров. С момента появления модели Transformer, она стала стандартом для обработки текста.

Модели и инструменты преобразования текста в эмбеддинги

Рассмотрим, как различные методы решают эту задачу и чем они отличаются друг от друга.

  • Статические и динамические. Статические модели, такие как Word2Vec, создают фиксированные эмбеддинги для каждого слова, что ограничивает точность при обработке слов с множественными значениями. Динамические модели, такие как BERT, создают эмбеддинги, адаптированные к контексту, что позволяет точнее различать разные значения слов и учитывать взаимосвязи.
  • Учёт контекста помогает моделям точно различать слова с разными значениями. Например, слово «ключ» может означать как инструмент для открытия замка, так и источник воды. Контекстные модели, такие как BERT, анализируют окружение слова и создают различные числовые представления для каждого значения. Это важно для работы с полисемией — ситуации, когда одно слово имеет несколько значений.
  • Анализ структуры слов. Некоторые модели, например, FastText, анализируют внутреннюю структуру слов и используют части слов, что помогает работать с новыми или редкими словами. Это особенно важно для языков с развитой морфологией или при обработке текстов, где встречаются опечатки и неформальные слова.
  • Способность учитывать глобальные и локальные взаимосвязи. Влияет на способность модели учитывать смысл текста на уровне всего корпуса данных. Модели, такие как GloVe, фиксируют глобальные взаимосвязи между словами на уровне больших массивов текстов. Это позволяет им выявлять скрытые связи между словами и темами.
  • Назначение и масштаб. Модели для создания  универсальных эмбеддингов, такие как GTE и E5, разработаны для выполнения широкого круга задач, включая классификацию, поиск и кластеризацию, что позволяет эффективно использовать их в различных приложениях без необходимости дообучения на специализированных наборах данных.

Embeddings Models

1. Модели на основе подсчёта: «Мешок слов» (Bag of Words, BoW) и TF-IDF

BoW преобразует текст в векторы фиксированной длины. Это возможно путем подсчета количества раз, когда слово присутствует в тексте. Количество слов позволяет сравнивать разные тексты и оценивать их сходство. Название “Bag of Words” связана с тем, что алгоритм представляет предложение как набор отдельных слов. Он не учитывает порядок слов, а только проверяет, сколько раз появилось слово в тексте. В модели Bag of Words фразы «кошка спит на ковре» и «ковёр спит на кошке» интерпретируются одинаково, поскольку содержат одни и те же слова, несмотря на разный порядок.

В модели TF-IDF редкие слова, такие как «ковёр», получают больший вес, чем часто встречающиеся слова, такие как «на».

2. Статические плотные эмбеддинги (Word2Vec, GloVe, FastText)

Эти статитические модели создают числовые представления слов, учитывая контекст их использования. Они «обучаются» на больших объёмах текстов и фиксируют смысловые связи между словами на основе их совместного использования.

Ключевые характеристики:

  • Word2Vec формирует векторы, основываясь на окружающем слово контексте, что позволяет моделям располагать близкие по смыслу слова рядом.
  • GloVe сочетает методы, основанные на локальном контексте (например, Skipgram), с глобальной статистикой совпадений. Использует для этого взвешенную целевую функцию наименьших квадратов. Он строит матрицу совпадений слов из корпуса текстов и применяет методы матричной факторизации для создания вложений. Однако, как и Word2Vec, он не может корректно обрабатывать слова со многими значениями.
  • FastText анализирует структуру слов и части слов. Это позволяет обрабатывать редкие слова и опечатки.

3. Контекстные эмбеддинги (ELMo, BERT, GPT)

Эти динамические модели учитывают значение слов в зависимости от их окружения, создавая динамические представления. Это значит, что одно и то же слово может иметь разные значения в разных контекстах, и модель это учитывает.

Ключевые характеристики:

  • ELMo использует двунаправленные рекуррентные сети (LSTM), анализируя текст слева направо и справа налево.
  • BERT (Bidirectional Encoder Representations from Transformers) применяет архитектуру трансформеров, чтобы анализировать полный контекст слова в предложении. Он использует механизмы самоанализа для одновременного определения взаимосвязей между всеми словами в предложении. Это приводит к высокоточному внедрению, которое динамически изменяется в зависимости от контекста. Двунаправленный подход BERT позволяет достигать хороших результатов в многочисленных задачах NLP, включая ответы на вопросы, классификацию текста и логический вывод.
  • GPT (генеративный предварительно обученный Transformer) тоже использует архитектуру на основе трансформера, но обучаются слева направо (или авторегрессионным способом), фокусируясь на генерации текста с учетом контекста. Этот подход особенно эффективен в задачах, требующих генерации текста или моделирования диалога.

4. Универсальные контекстные эмбеддинги (GTE, BGE, E5)

Эти модели разработаны для работы с разнообразными задачами и языками. Они обучаются на обширных данных с различными типами текста, чтобы быть максимально универсальными.

Ключевые характеристики: модели используют архитектуры трансформеров и синтетические данные, что позволяет им решать задачи классификации, кластеризации и поиска.

 

Мы рассмотрели, какие модели есть для эмбеддинга. Давайте разберёмся, что внутри у этих решений и почему.

Зачем моделям искусственного интеллекта нужны векторные представления?

В основе векторных представлений лежит модель векторного пространства. В этом пространстве каждое измерение может представлять определённый семантический признак: различие между частями речи, временами, формами слов и т.д.

Почему именно векторы или повод вспомнить косинусы

В основе векторного поиска лежит концепция измерения сходства между векторами. Для этого используются косинусное сходство (путём оценки угла между векторами) и евклидово расстояние (путём вычисления прямого расстояния между точками в пространстве).

Это позволяет вычислить степень близости между двумя наборами чисел, чтобы определить, насколько они похожи или связаны между собой.

Получается, что если удаётся представить текстовые данные в виде векторов, то математические инструменты помогают измерить степень схожести между словами и находить взаимосвязи в текстах.

Вспомним школьные уроки геометрии: когда два вектора направлены в одном и том же направлении, угол между ними равен 0 градусов. Косинус такого угла равен 1. Это значит, что чем ближе значение косинуса угла к 1, тем больше векторы похожи. Самые похожие векторы на картинке — оранжевые.

embedding косинусное сходство

Пример с книгами. Представьте себе, что мы создаём эмбеддинги для описания книг. Каждый эмбеддинг представляет собой вектор, который кодирует ключевые характеристики текста. Чтобы сравнить векторы, модели используют косинусное сходство — метод, который измеряет угол между ними. Чем меньше угол между векторами, тем больше схожесть между книгами.

Что получается — математики победили лингвистов?

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

Почему плотные векторы, а не разреженные?

Плотные векторы содержат больше ненулевых значений, что помогает моделям фиксировать и обрабатывать больше информации. Разреженные векторы, наоборот, состоят преимущественно из нулей, что делает их менее эффективными для задач, где нужно учитывать сложные связи между данными.

Плотные векторы экономят память и ресурсы, что ускоряет работу алгоритмов и моделей, особенно в задачах, связанных с поиском, классификацией и анализом данных.

Пример: рекомендации товаров

Разреженный вектор. Представьте, что в разреженном векторе мы храним предпочтения пользователя для каждого товара в каталоге из 100,000 позиций. Если пользователь интересуется только 10–20 товарами, остальные 99980 элементов в векторе будут нулевыми. Это значит, что вычисления будут менее эффективными.

Плотный вектор. Вместо хранения каждого отдельного товара, плотный вектор описывает предпочтения пользователя более обобщёнными категориями, например, «спорт», «электроника» «активный отдых» В результате вектор становится короче, поскольку фиксирует общие интересы, а не конкретные товары. Это позволяет лучше анализировать предпочтения и быстрее обрабатывать данные.

Векторные базы данных

Векторные базы данных — это специализированные системы хранения, предназначенные для работы с векторными вложениями, которые представляют числовые характеристики неструктурированных данных, таких как текст, изображения или аудио.

Векторные базы данных используются для для хранения, индексирования и поиска похожих векторов на основе числовых представлений данных (эмбеддингов). Позволяют быстро находить и сопоставлять векторные представления эмбуддингов.

В векторных базах данных используется метрики подобия, чтобы найти вектор, наиболее похожий на вектор запроса.

embedding vector DB

Почему векторные базы данных лучше других подходят для работы с LLM?

Векторные базы данных оптимально подходят для работы с LLM (Large Language Models) благодаря тому, что они решают ключевую задачу — поиск и хранение данных в многомерных векторных представлениях, которые отражают смысловое содержание данных и структуру работы LLM.

Основные причины:

  1. Эффективность поиска по сходству. LLM создают векторные представления слов, фраз или текстов, что позволяет оценивать их сходство на основе расстояний между векторами (например, косинусного расстояния). Векторные базы данных специально разработаны для быстрого поиска по этим расстояниям, что позволяет находить данные, семантически близкие к исходным запросам.
  2. Масштабируемость и производительность. Работа с большими наборами данных и миллионами или даже миллиардами векторов требует использования специальных структур индексов. Векторные базы данных применяют алгоритмы индексации (например, HNSW, IVF), которые поддерживают высокую производительность и точность на больших объёмах данных.

Чем векторные базы данных отличаются от реляционных баз данных?

Реляционные базы данных оптимально подходят для задач, связанных с чётко структурированными данными и точными операциями, например, для финансовых систем или управления складскими запасами. В отличие от них, векторные базы данных предназначены для обработки данных с использованием поиска по сходству и работы с неструктурированными данными, такими как текст и изображения.

Структура данных

Реляционные базы данных (RDBMS). Данные организованы в виде таблиц, состоящих из строк и столбцов. Каждый столбец соответствует определённому типу данных (например, числа, строки, даты), а строки представляют отдельные записи. RDBMS используют схемы данных и связи между таблицами.

Векторные базы данных. Хранят данные в виде многомерных векторов, которые могут иметь сотни или тысячи измерений. Эти векторы представляют числовые значения, полученные с помощью алгоритмов машинного обучения (например, текстовые эмбеддинги). Векторные базы данных не требуют жёсткой схемы данных.

Методы поиска

Реляционные базы данных. Для поиска используются SQL-запросы для выбора записей, соответствующих конкретным условиям. Например, поиск значений в определённом диапазоне или точное совпадение значений.

Векторные базы данных. Поддерживают поиск по схожести, сравнивая вектора на основе расстояний (например, косинусного, евклидова). Это позволяет искать семантически похожие объекты.

Алгоритмы индексации

Реляционные базы данных. Используются индексы, такие как B-деревья и хэш-индексы, оптимизированные для точного поиска по значениям и фильтрации по ключевым значениям.

Векторные базы данных. Используются алгоритмы индексации, такие как HNSW, ANNOY и IVF, которые специально разработаны для поиска ближайших соседей в многомерных пространствах. Эти алгоритмы оптимизированы для работы с текстовыми эмбеддингами.

embedding vector db vs relational db

 

Категории баз данных для работы с векторами

Базы данных, работающие с векторными представлениями данных, можно разделить на две основные категории:

  1. Специализированные векторные базы данных
    Эти базы данных изначально разработаны для хранения и обработки векторных данных, таких как эмбеддинги текста, изображений или других видов неструктурированной информации. Они обеспечивают быстрый поиск ближайших соседей (ANN) и оптимизированы для работы с большими объёмами данных, требующих поиска по сходству. Примеры: Pinecone, Milvus, Weaviate, Chroma, Vespa
  2. Реляционные или NoSQL базы данных с поддержкой векторных операций
    Эти базы данных, такие как реляционные и NoSQL системы, изначально создавались для хранения структурированных данных или работы с документо-ориентированными коллекциями данных. Однако они были расширены для поддержки векторных представлений с помощью плагинов и модулей, что позволяет им тоже выполнять операции, такие как поиск ближайших соседей и сравнение по косинусному сходству. Примеры: PostgreSQL (с расширением pgvector), ElasticSearch, Redis (RedisAI), MongoDB (Atlas Search)

embedding vector DB and vector search

Как работает векторный поиск

Итак, мы разобрали все составляющие векторного поиска. Теперь посмотрим, как модели эмбеддингов и векторные базы работают вместе в процессе семантического поиска.

embedding semantic search vector

  • Создание эмбеддингов. Сначала текстовые данные (например, документы, описания товаров или запросы пользователей) преобразуются в числовые представления — эмбеддинги. Это преобразование выполняется с помощью моделей эмбеддинга.
  • Сохранение векторов. Полученные эмбеддинги сохраняются в векторной базе данных, которая оптимизирована для хранения и поиска многомерных векторов.
  • Индексация векторов. Векторная база данных выполняет индексацию для организации и структурирования векторов. Индексация помогает ускорить поиск. Для индексации используются методы, такие как HNSW (Hierarchical Navigable Small World) или IVF (Inverted File Index).
  • Преобразование запроса в вектор. Когда пользователь выполняет запрос, его текст также преобразуется в эмбеддинг с помощью той же модели, что была использована для векторизации исходных текстовых данных. Это позволяет запросу иметь такую же числовую форму, как и исходные данные.
  • Поиск по сходству. Вектор запроса сравнивается с индексированными векторами в базе данных с использованием метрик сходства, таких как косинусное сходство, евклидово расстояние или скалярное произведение. Эти метрики помогают определить, насколько близки по смыслу векторы запроса и исходных данных.
  • Извлечение похожих векторов. База данных возвращает векторы, которые наиболее близки к вектору запроса на основе выбранной метрики сходства и метода индексации.
  • Преобразование результатов в исходный формат. Найденные похожие векторы соответствуют исходным данным (например, текстам, документам или товарам). В результате система возвращает пользователю данные, которые наиболее похожи на запрос.

Зачем мне эмбеддинги? Почему просто не использовать ChatGPT или другие LLM?

Эмбеддинги — это числовое представление текстов, которое используется в широком спектре задач: от построения поисковых систем и кластеризации до рекомендаций и анализа тональности. Они не являются самостоятельным решением, а служат инструментами для более сложных моделей и алгоритмов.

LLM, такие как ChatGPT, используют эмбеддинги для генерации текста и выполнения сложных задач, где требуется гибкость в понимании и создании контента. Из-за вероятностного характера LLM могут генерировать нестабильные результаты, но они незаменимы для задач, требующих понимания контекста и адаптации.

1. Использование в системах с ограниченными ресурсами

Эмбеддинги позволяют заранее подготовить числовые представления текстов, а это снижает требования к оперативной памяти и вычислительной мощности.

Пример: Анализ отзывов или новостных заголовков на мобильных устройствах, где использование мощных LLM просто невозможно.

2. Устойчивость к атакам

Эмбеддинги устойчивы к атакам, таким как «инъекция промптов» (prompt injection), потому что они просто переводят текст в числа, не пытаясь его интерпретировать. Это означает:

  • Детерминированность: Embeddings всегда выдают одинаковые числа для одного и того же текста, что делает их предсказуемыми и защищёнными от манипуляций.
  • Отсутствие генерации: Embeddings не создают новые тексты, что исключает непредсказуемое поведение.

3. Отсутствие «галлюцинаций»

LLM иногда генерируют неверную или бессмысленную информацию, потому что они предсказывают следующий фрагмент текста на основе вероятностей. Если в данных были пробелы или контекст плохо распознан, модель может «придумать» что-то, что выглядит правдоподобно, но не имеет смысла. Эмбеддинги работают иначе — они преобразуют текст в числа, без попыток предсказывать  следующей слова в генерируемом тексте, поэтому результат более надёжный.

4. Зрелость технологии

Эмбеддинги появились раньше, чем большие языковые модели (LLM) и успешно используются с середины 2010-х годов. Они проверены временем и отлично справляются с такими задачами, как:

  • Поиск похожих документов (например, научных статей или новостей).
  • Определение эмоциональной окраски сообщений.
  • Анализ пользовательского поведения для создания рекомендаций.
  • Автоматическая классификация текстов.

Заключение

Эмбеддинги улучшают способность LLM анализировать текст, помогают учитывать контекст и зависимости между частями текста. Это повышает точность анализа и поиска и позволяет создавать более точные и полезные ИИ-приложения. Например, чат-боты начинают лучше понимать намерения пользователей, а системы рекомендаций подбирают контент с учетом смысла, а не просто ключевых слов. С развитием генеративных моделей эмбеддинги останутся основой для точного понимания запросов и подготовки наиболее подходящих ответов.

 

Статьи по теме

AI Agents And Agentic Reasoning

AI-агенты и Agentic Reasoning: Не рассуждай, не хлопочи — AI-агенты рассуждают

За последние несколько лет большие языковые модели (LLM) и мультимодальные модели (LMM) стали основой множества ИИ-приложений. Сегодня быстро развивается новая парадигма — AI-агенты и агентное мышление, которые предлагают ещё более эффективные способы создания ИИ-приложений. Неструктурированные данные — текст, изображения, видео и аудио — становятся важнейшим ресурсом, и AI-агенты уже показывают, как с ними работать проще и быстрее. Эти технологии не просто анализируют данные, а позволяют разрабатывать приложения, которые раньше казались невозможными. В статье мы разбираем, как AI-агенты меняют подход к разработке, как они работают с данными и почему растёт их влияние на автоматизацию.

graph RAG

Graph RAG: как RAG, только c графом знаний

Графы знаний отлично отражают взаимосвязи и контекст данных, что делает их идеальным дополнением к технологиям Retrieval-Augmented Generation (RAG). В этой статье мы разберём, как технология Graph RAG объединяет сильные стороны графов знаний и RAG, улучшает точность ответов и ускоряет разработку AI-приложений. Рассмотрим, где Graph RAG приносит наибольшую пользу и как внедрить эту технологию для улучшения контекста, который вы передаёте большим языковым моделям (LLM).

AI-агенты на основе LLM и мультиагентные системы

AI-агенты на основе LLM и мультиагентные системы

Текущие LLM генерируют текст или выполняют задачи только по запросу, но с появлением AI-агентов всё меняется. К 2028 году 33% корпоративного ПО будут использовать AI-агентов. AI-агенты не требуют явных запросов и не выдают предопределённые результаты. Вместо этого они принимают инструкции, самостоятельно строят планы, используют инструменты для их выполнения и адаптируются к изменениям. 

Запросить демонстрацию

Готовы увидеть, как это может работать для вашей организации?

Свяжитесь с нами