Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поиск сходства векторов (VSS) стал популярной технологией для интеллектуальных приложений, основанных на искусственном интеллекте. Кэш Azure для Redis можно использовать в качестве векторной базы данных в сочетании с моделями, такими как Azure OpenAI для генеративного ИИ с дополненным поиском и других сценариев анализа. В этой статье представлено высокоуровневое введение в концепцию векторных встраиваний, поиск по сходству векторов и то, как Redis можно использовать в качестве векторной базы данных для интеллектуальных приложений.
Руководства и примеры приложений по использованию уровня Enterprise или Azure Managed Redis с Azure OpenAI см. в следующих статьях:
- Учебник: выполнение векторного сходства с встраиваниями OpenAI при помощи Azure Managed Redis и LangChain
- Пример: использование Redis в качестве семантического кеша в галерее изображений Dall-E с Redis OM для .NET
Область доступности
Для возможностей поиска векторов в Redis требуется стек Redis, в частности модуль RediSearch . Эта возможность доступна только на уровнях Enterprise Кэш Azure для Redis и Azure Managed Redis.
Эта таблица содержит сведения о доступности векторного поиска на разных уровнях.
| Уровень | Базовый или стандартный | Премия | Предприятие | Корпоративная флэш-память | Управляемый Azure Redis |
|---|---|---|---|---|---|
| В наличии | нет | нет | Да | Да (предварительная версия) | Да |
Что такое векторные внедрения?
Внедрение векторов — это основная концепция в машинном обучении и обработке естественного языка, которая обеспечивает представление данных, таких как слова, документы или изображения, как числовые векторы в пространстве векторов высокого измерения. Основная идея внедрения векторов заключается в захвате базовых связей и семантики данных путем сопоставления их с точками в этом векторном пространстве. Это означает преобразование текста или изображений в последовательность чисел, представляющих данные, а затем сравнивая различные последовательности чисел. Это позволяет управлять и анализировать сложные данные математически, что упрощает выполнение таких задач, как сравнение сходства, рекомендации и классификация.
Каждая модель машинного обучения классифицирует данные и создает вектор по-разному. Кроме того, обычно невозможно определить, какой семантический смысл представляет каждое векторное измерение. Но поскольку модель согласована между каждым блоком входных данных, аналогичные слова, документы или изображения имеют векторы, которые также похожи. Например, вектора вложений слов basketball и baseball находятся значительно ближе друг к другу, чем вектор слова rainforest.
Сравнение векторов
Векторы можно сравнить с помощью различных метрик. Наиболее популярным способом сравнения векторов является использование косинуса сходства, которое измеряет косинус угла между двумя векторами в многомерном пространстве. Чем ближе векторы, тем меньше угол. Другие распространенные метрики расстояния включают Евклидеан расстояние и внутренний продукт.
Генерация эмбеддингов
Многие модели машинного обучения поддерживают api внедрения. Для примера создания векторных внедрений с помощью Служба Azure OpenAI см. статью Узнайте, как создавать внедрения с помощью Azure OpenAI.
Что такое векторная база данных?
Векторная база данных — это база данных, которая может хранить, управлять, извлекать и сравнивать векторы. Базы данных векторов должны иметь возможность эффективно хранить высокомерный вектор и извлекать его с минимальной задержкой и высокой пропускной способностью. Нереляционные хранилища данных чаще всего используются в качестве векторных баз данных, хотя можно использовать реляционные базы данных, такие как PostgreSQL, например с расширением pgvector .
Метод индексирования и поиска
Векторные базы данных должны индексировать данные для быстрого поиска и извлечения. Кроме того, векторная база данных должна поддерживать встроенные поисковые запросы для упрощенного программирования.
Существует несколько методов индексирования, таких как:
- FLAT — индекс подбора
- HNSW — эффективный и надежный приблизительный поиск ближайших соседей с помощью иерархически навигабельных графов Small World
Существует несколько распространенных методов поиска, в том числе:
- K-Ближайшие соседи (KNN) — исчерпывающий метод, который обеспечивает большую точность, но с более высокой вычислительной стоимостью.
- Приблизительные ближайшие соседи (ANN) — более эффективно работают, жертвуя точностью ради повышения скорости и снижения затрат на обработку.
Возможности поиска
Наконец, векторные базы данных выполняют векторные поиски с помощью выбранного метода сравнения векторов для возврата наиболее похожих векторов. Некоторые векторные базы данных также могут выполнять гибридные поиски, сначала сужая результаты на основе характеристик или метаданных, которые также хранятся в базе данных перед проведением векторного поиска. Это способ сделать векторный поиск более эффективным и настраиваемым. Например, поиск векторов может быть ограничен только векторами с определенным тегом в базе данных или векторами с данными географического расположения в определенном регионе.
Сценарии ключей поиска в векторов
Поиск сходства векторов можно использовать в нескольких приложениях. Ниже приведены некоторые распространенные варианты использования:
- Семантическое Q&A. Создайте чат-бот, который может отвечать на вопросы о собственных данных. Например, чат-бот, который может отвечать на вопросы сотрудников по их медицинскому охвату. Сотни страниц детализированной документации по охвату здравоохранения можно разделить на блоки, преобразовать в вектора эмбеддингов и искать на основе сходства векторов. Затем полученные документы можно свести в сводку для сотрудников с помощью другой крупной языковой модели (LLM). Пример семантического Q&A
- Извлечение документов. Используйте более глубокое семантическое понимание текста, предоставляемое языковыми моделями (LLMs), чтобы обеспечить более богатый опыт поиска документов, когда традиционный поиск на основе ключевых слов оказывается недостаточным. Пример извлечения документов
- Рекомендация по продукту. Найдите аналогичные продукты или службы, чтобы рекомендовать на основе прошлых действий пользователей, таких как журнал поиска или предыдущие покупки. Пример рекомендации по продукту
- Визуальный поиск. Ищите продукты, похожие на изображение, сделанное пользователем, или на изображение другого продукта. Пример визуального поиска
- Семантическое кэширование. Уменьшите затраты и задержку LLM путем кэширования завершения LLM. Запросы LLM сравниваются с помощью сходства векторов. Если новый запрос достаточно похож на ранее кэшированный запрос, возвращается кэшированный запрос. Пример семантического кэширования с помощью LangChain
- Память LLM беседы Сохраняйте журнал бесед с помощью LLM в качестве внедрения в векторной базы данных. Приложение может использовать векторный поиск для извлечения соответствующих историй или "воспоминаний" в состав ответа от LLM. Пример использования памяти беседы в LLM
Зачем выбирать Кэш Azure для Redis для хранения и поиска векторов?
Кэш Azure для Redis можно эффективно использовать в качестве векторной базы данных для хранения векторов встраивания и выполнения поиска по сходству векторов. Поддержка хранилища векторов и поиска доступна во многих ключевых платформах машинного обучения, таких как:
Эти платформы предоставляют широкие возможности интеграции с Redis. Например, интеграция Redis LangChain автоматически создает схему индекса для метаданных, передаваемых при использовании Redis в качестве векторного хранилища. Это упрощает фильтрацию результатов на основе метаданных.
Redis имеет широкий спектр возможностей поиска через модуль RediSearch, который доступен на уровне Enterprise Кэш Azure для Redis. К ним относятся:
- Несколько метрик расстояния, включая
Euclidean,CosineиInternal Product. - Поддержка методов индексирования KNN (с помощью
FLAT) и ANN (с помощьюHNSW). - Хранилище векторов в структурах хэш-данных или JSON
- Топ K запросов
- Запросы диапазона векторов (т. е. поиск всех элементов в пределах определенного векторного расстояния)
- Гибридный поиск с мощными функциями запросов, такими как:
- Геопространственный фильтр
- Числовые и текстовые фильтры
- Префикс и нечеткое сопоставление
- Фонетическое сопоставление
- Логические запросы
Кроме того, Redis часто является экономичным выбором, так как он уже так часто используется для кэширования или приложений хранилища сеансов. В этих сценариях он может выполнять двойную функцию, выполняя типичную роль кэширования и одновременно обрабатывая векторный поиск.
Каковы другие варианты хранения и поиска векторов?
Существует несколько других решений для Azure хранения векторов и поиска. К другим решениям относятся:
- Поиск с использованием ИИ Azure
- Azure Cosmos DB с помощью API виртуальных ядер MongoDB
-
База данных Azure для PostgreSQL — гибкий сервер с помощью
pgvector
Связанный контент
Лучший способ начать работу с эмбеддингами и поиском с использованием векторов — попробовать это самостоятельно!