Использование моделей эмбеддингов для поиска на базе ИИ
По мере того как ИИ продолжает развиваться, способы поиска и извлечения информации изменились, особенно при работе с огромными объемами неструктурированных данных. Традиционные методы поиска на основе ключевых слов с трудом справляются со сложностью современных наборов данных — особенно когда речь идет о понимании смысла и контекста. Именно здесь в игру вступают модели эмбеддингов и векторные эмбеддинги, позволяя системам улавливать связи между словами, изображениями и другими типами данных.
На недавней встрече Unstructured Data Meetup Aamir Shakir, сооснователь Mixedbread, поделился идеями о том, как создавать и обучать модели эмбеддингов для построения высокопроизводительных ИИ-систем, особенно Retrieval Augmented Generation (RAG) в масштабе. В этом блоге мы подведем итоги ключевых моментов его выступления и рассмотрим роль моделей эмбеддингов в работе продвинутых поисковых систем. Мы также охватим техники обучения, масштабирования и эффективного хранения эмбеддингов, включая использование методов сжатия и векторных баз данных, таких как Milvus и Zilliz Cloud (управляемый Milvus).
Aamir Shakir выступает на августовской встрече SF Unstructured Data Meetup
Если вы хотите узнать больше об этой теме, рекомендуем посмотреть выступление Aamir на YouTube.
Что такое модели эмбеддингов и почему они важны для неструктурированных данных?
В мире, основанном на данных, организации перегружены огромными объемами неструктурированных данных — журналами, внутренними документами, аудио, видео и многим другим. Извлечение значимых инсайтов из таких разнообразных данных может быть серьезной задачей. Именно здесь в игру вступают модели эмбеддингов и векторные эмбеддинги.
Модели эмбеддингов — это тип моделей машинного обучения, предназначенных для преобразования неструктурированных данных в числовые представления и проецирования их в многомерное пространство. Эти представления называются векторными эмбеддингами. Они отражают связи и смыслы внутри данных, позволяя компьютерам эффективнее понимать, обрабатывать и анализировать их. Чем ближе эти векторы расположены в векторном пространстве, тем более семантически похожими они являются.
Модели эмбеддингов являются фундаментальными инструментами в широком спектре задач, от обработки естественного языка (NLP) до компьютерного зрения и далее.
Семантическое понимание
Модели эмбеддингов кодируют значение слов, предложений или документов в векторы, фиксируя их семантические связи. Представляя данные таким образом, эти модели позволяют машинам понимать контекст и смысл, обеспечивая выполнение более сложных задач, таких как ответы на вопросы, перевод и суммаризация.
Многоязычные и мультимодальные возможности
Продвинутые модели эмбеддингов могут работать с несколькими языками и типами данных (модальностями), такими как текст, изображения и аудио. Эта возможность обеспечивает сравнение и извлечение информации на разных языках или в разных форматах данных. Например, одна модель может извлекать похожий контент из текста и изображений или переводить и сопоставлять текст на нескольких языках — все в одном и том же векторном пространстве.
Переносимость
Предобученные модели эмбеддингов часто можно адаптировать (с помощью таких техник, как fine-tuning) для различных последующих задач. Вместо обучения модели с нуля вы можете использовать предобученную модель и модифицировать её под конкретные задачи, экономя время и вычислительные ресурсы. Такая переносимость делает модели эмбеддингов очень эффективными для создания AI-приложений — будь то классификация, рекомендательные системы или другие сценарии использования.
Проблемы классических подходов к поиску
До появления эмбеддингов для поиска информации использовались традиционные методы, такие как частота термина — обратная частота документа (TF-IDF) или сопоставление на основе ключевых слов. Однако эти подходы хорошо работают для простых сценариев, но не способны улавливать семантические связи между словами. У них также есть существенные ограничения при решении более сложных информационных потребностей сегодняшнего дня. Существует несколько ограничений:
Сложность работы с неоднозначностью
Одна из основных проблем традиционных методов — их сложность в обработке неоднозначности.
Слова с несколькими значениями (полисемия) и разные слова с одинаковым значением (синонимия) создают сложности для традиционных методов и приводят к неточным результатам. Рассмотрим слово «bank». Поиск по слову «bank» может вернуть результаты о финансовых учреждениях, тогда как на самом деле пользователь искал информацию о берегах рек.
Эмбеддинги решают эту проблему, учитывая контекст, в котором появляется слово. Слово «bank» в финансовой сфере будет иметь иное векторное представление, чем «bank» в контексте природы. Это помогает поисковым системам возвращать результаты, которые не просто релевантны, но и контекстуально точны.
Фиксированные представления
Ещё одно ограничение традиционных методов — использование фиксированных представлений для слов или документов. Эти представления не меняются в зависимости от различных контекстов с течением времени, что может ограничивать их использование в динамическом поиске информации.
Ограниченная масштабируемость
Традиционным методам сложно сохранять производительность и эффективность по мере того, как данные становятся больше и сложнее, главным образом при работе с задачами поиска информации веб-масштаба. С другой стороны, системы семантического поиска, работающие с векторными эмбеддингами, спроектированы для масштабирования. После того как данные преобразованы в векторы и сохранены в векторной базе данных, такой как Milvus, даже векторные данные миллиардного масштаба можно эффективно обрабатывать и использовать для быстрого и точного поиска. Это делает эмбеддинги важными для таких систем, как рекомендательные системы и RAG.
Эти ограничения показывают необходимость эмбеддингов при создании современных поисковых систем, которые могут понимать и извлекать релевантный контент на основе смысла, а не ключевых слов.
Модели эмбеддингов и проблемы их обобщения
Модели эмбеддингов стали краеугольным камнем AI-приложений — от RAG до рекомендательных систем и многих других. Хотя эти модели очень эффективны в кодировании данных и выполнении таких задач, как поиск и классификация, они не лишены ограничений — особенно когда речь идёт об обобщении.
Обработка терминов вне словаря (OOV): Многие модели эмбеддингов имеют фиксированный словарь, что вызывает проблемы при встрече с новыми словами, которые не входили в обучающие данные.
Производительность на длинном хвосте: Хотя модели эмбеддингов обычно хорошо справляются с распространёнными словами и понятиями, у них могут возникать сложности с узкоспециализированными терминами.
Предметная специфика: Модели эмбеддингов, обученные на данных из одной предметной области, могут работать плохо при применении к другой предметной области. Это ограничение связано с тем, что эмбеддинги содержат статистические закономерности обучающих данных, которые могут быть неэффективны для новых типов данных. Поэтому модели эмбеддингов обычно требуют дообучения на предметно-специфических данных, чтобы достичь наилучшей производительности.
Смещение в эмбеддингах: Модели эмбеддингов также чувствительны к смещениям. Они обучаются на больших, иногда неотобранных наборах данных. Поэтому они могут ошибочно усваивать социальные предубеждения, присутствующие в данных.
Контекстные вариации: Статические модели эмбеддингов присваивают слову один и тот же вектор независимо от контекста. Это может быть проблемой для слов, которые могут иметь более одного значения.
Как создать и обучить современную модель эмбеддингов
Создание высококачественной модели эмбеддингов, особенно для сложных систем, таких как RAG, требует продуманного подхода для обеспечения масштабируемости, точности и эффективности. Модели эмбеддингов обычно строятся с использованием нейронных сетей, а качество генерируемых ими эмбеддингов в значительной степени зависит от процесса обучения. Чтобы достичь производительности современного уровня (SOTA), необходимо выполнить несколько ключевых шагов:
Предварительное обучение на больших разнообразных наборах данных
Критически важным первым шагом в создании надежной модели эмбеддингов является предварительное обучение на больших разнообразных наборах данных. Это предварительное обучение знакомит модель с широким спектром языковых паттернов, структур и контекстов, позволяя ей изучать обобщаемые признаки, которые можно применять к различным последующим задачам. Идея состоит в том, чтобы дать модели широкое понимание данных, позволяя ей хорошо работать не только на знакомых входных данных, но и на новых, ранее не встречавшихся данных.
Существуют разные типы эмбеддингов, включая:
Векторные представления слов — это низкоразмерные плотные векторы, которые проецируют слова в непрерывное векторное пространство. Они полезны для фиксации семантических и синтаксических отношений.
Концептуальные эмбеддинги — это векторные представления концептов в семантическом пространстве, которые фиксируют их отношения и атрибуты, часто получаемые из крупномасштабных графов знаний.
Контекстные эмбеддинги — это динамические представления слов, генерируемые такими моделями, как BERT и GPT. Они учитывают окружающий контекст каждого слова во фразе для создания контекстно-чувствительных эмбеддингов.
Следующая иллюстрация поможет вам понять процесс обучения моделей эмбеддингов:
Этап обучения модели эмбеддингов
Токенизация разбивает входные данные на более мелкие единицы (токены), такие как слова или подслова, создавая словарь для модели. Словарь — это набор уникальных токенов, которые модель будет использовать для понимания и представления данных во время обучения.
Инициализация эмбеддингов инициализирует матрицу, в которой каждый токен в наборе данных представлен вектором эмбеддинга. Эта матрица обобщает отношения и значения между токенами, при этом размерность векторов обычно варьируется от 50 до 1 000.
Обучение корректирует параметры модели, чтобы минимизировать расстояние между семантически похожими словами и максимизировать расстояние между непохожими словами.
Дообучение для оптимизации под конкретные задачи
После предварительного обучения тонкая настройка важна для оптимизации модели под конкретные задачи. Например, если RAG-система используется в юридическом контексте, мы выполняем тонкую настройку модели эмбеддингов на юридических документах. Благодаря этому эмбеддинги сохраняют предметно-специфическую лексику, что повышает производительность RAG-системы. На этом этапе мы также выполняем тонкую настройку модели для обработки структурированных и неструктурированных данных, подходящих для задач мультимодального и многоязычного поиска.
Хранение векторных эмбеддингов в масштабе
По мере того как модели эмбеддингов становятся более продвинутыми, создаваемые ими векторы могут становиться все более сложными. Хотя сложность модели не всегда означает более высокоразмерные векторы, более крупные модели часто генерируют эмбеддинги с более детализированными представлениями, иногда достигающими тысяч измерений. Это создает проблемы как с точки зрения хранения, так и извлечения, особенно при работе с большими наборами данных или приложениями реального времени.
Для решения этих проблем крайне важны эффективные методы хранения и извлечения. Такие техники, как векторные базы данных, поиск приближенного ближайшего соседа (ANN) и оптимизированные структуры индексирования, широко используются, чтобы гарантировать, что эмбеддинги могут быть быстро извлечены без ущерба для производительности. Кроме того, методы сжатия также необходимы для уменьшения размера этих высокоразмерных векторов без потери их семантического смысла.
Векторные базы данных
Векторные базы данных, такие как Milvus и Zilliz Cloud (управляемая версия Milvus), специально разработаны для эффективного управления и извлечения неструктурированных данных в форме векторных эмбеддингов. Milvus — это векторная база данных с открытым исходным кодом, оптимизированная для хранения и поиска векторов в мегамасштабе. Она использует поиск приближенного ближайшего соседа (ANN), чтобы быстро извлекать релевантные эмбеддинги даже при работе с базами данных, содержащими миллиарды векторов. Zilliz Cloud предлагает более продвинутые возможности в виде управляемого сервиса, снижая операционные накладные расходы на управление векторными базами данных в масштабе.
Методы сжатия
Хотя эмбеддинги можно хранить напрямую в векторных базах данных, их хранение в масштабе может быть дорогостоящим. Именно здесь помогают методы сжатия. Основная идея сжатия — снизить требования к памяти и повысить скорость запросов. Один тип — это бинарное квантование, а другой — скалярное квантование.
Бинарное квантование сводит каждый признак заданного эмбеддинга к двоичной цифре, тогда как скалярное квантование уменьшает общий размер измерений до меньшего типа данных, например 2-байтового числа с плавающей точкой или 1-байтового целого числа.
Например, если изображение представлено тремя различными признаками, где каждый признак имеет значение в диапазоне единицы хранения FLOAT-32, выполнение бинарного квантования для этого вектора приведет к тому, что каждый из трех признаков будет независимо представлен одной двоичной цифрой. Таким образом, вектор, содержащий три значения FLOAT-32, будет преобразован в вектор из трех двоичных цифр, например [1, 0, 1].
Понимание бинарного квантования
Бинарное квантование очень эффективно для выполнения векторного поиска по большим наборам данных благодаря эффективным и менее сложным вычислениям. В случае Milvus и бинарных векторов Milvus использует расстояние Хэмминга как метрику сходства. Эта метрика может быстро вычислять расстояние между двумя сохраненными бинарными векторами. Вот пример того, как работает метод расстояния Хэмминга.
Как работает метод расстояния Хэмминга
Теперь мы будем использовать технику скалярного квантования, чтобы преобразовать эмбеддинги float32 в формат int8. Этот подход отображает непрерывный диапазон значений float32 в дискретный набор из 256 различных значений int8 в диапазоне от -127 до 127.
Чтобы выполнить скалярное квантование:
Вычислите диапазон: Определите минимальные и максимальные значения для каждого измерения эмбеддинга.
Определите шаг квантования: Рассчитайте размер шага, необходимый для равномерного распределения значений float32 по диапазону int8.
Квантуйте: Округлите каждое значение float32 до ближайшего значения int8, используя рассчитанный размер шага.
Значения от -1.0 до 1.0 в дискретные значения int8
При скалярном квантовании в int8 мы уменьшаем точность исходных эмбеддингов float32 так, чтобы каждое значение было представлено 8-битным целым числом (в 4 раза меньше), тем самым снижая объем памяти, необходимый для их хранения, при этом стремясь сохранить как можно больше информации.
Экономика сжатия
Резюме
Модели эмбеддингов, которые обеспечивают гибкий, масштабируемый и семантически насыщенный подход к поиску информации, помогают определять направление развития поиска по сходству. От улучшения кластеризации и майнинга двуязычных текстов до поддержки мультимодального и многоязычного поиска — эмбеддинги предоставляют множество возможностей, недоступных традиционным методам.
Создание современных моделей эмбеддингов для высококачественных RAG-систем требует внимательного подхода к предварительному обучению, дообучению и масштабируемости. Zilliz Cloud и Milvus помогают управлять эмбеддингами в масштабе и создавать более интеллектуальные и отзывчивые системы нейронного поиска.
Дополнительные ресурсы
Читать далее

A Developer's Guide to Exploring Milvus 2.6 Features on Zilliz Cloud
Milvus 2.6 marks a shift from “vector search + glue code” to a more advanced retrieval engine, and it is now Generally Available (GA) on Zilliz Cloud (a managed Milvus service).

Why I’m Against Claude Code’s Grep-Only Retrieval? It Just Burns Too Many Tokens
Learn how vector-based code retrieval cuts Claude Code token consumption by 40%. Open-source solution with easy MCP integration. Try claude-context today.

How to Use Anthropic MCP Server with Milvus
MCP + Milvus: Streamline AI agent development with standardized data access, eliminating integration hassles while enhancing context and flexibility.



