Amazon DynamoDB получил поддержку векторного поиска в реальном времени

Amazon объявила о доступности векторного поиска в Amazon DynamoDB. Теперь в DynamoDB можно хранить векторные представления данных (эмбеддинги) вместе с операционными данными и выполнять поиск по схожести напрямую в этой базе, без переноса информации в отдельное хранилище векторов.

Векторный поиск в DynamoDB работает с задержкой в единицы миллисекунд при показателе полноты поиска более 99% и рассчитан на масштабирование до триллионов векторов. Пользователям не нужно подготавливать серверы, устанавливать дополнительное ПО или заниматься его обслуживанием. Сервис работает без версий, окон технического обслуживания и простоев.

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

Поиск без отдельной векторной базы

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

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

Теперь векторные данные и операционные данные могут храниться в одной бессерверной инфраструктуре DynamoDB с той же моделью оплаты за запросы.

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

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

Эмбеддинги можно получить с помощью выбранной модели, например Amazon Bedrock Titan Text Embeddings, Cohere Embed или моделей создания текстовых эмбеддингов от OpenAI. После этого они сохраняются в таблице как список чисел с плавающей точкой с помощью стандартного вызова PutItem.

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

API SearchVectors принимает поисковый вектор, количество возвращаемых результатов (до 100) и дополнительные условия фильтрации. В ответ он возвращает результаты, отсортированные по степени сходства.

Ограничения и сценарии использования

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

Функция работает в полностью бессерверном режиме и автоматически масштабируется вместе с нагрузкой. Поддерживаются векторы размерностью до 4096 измерений, функции расстояния Euclidean, Cosine и Dot product, а также встроенная фильтрация результатов.

Как начать работу с векторным поиском в DynamoDB

Рассмотрим, как добавить векторный поиск в существующую таблицу через консоль DynamoDB.

В примере используется интернет-магазин спортивных товаров с таблицей каталога. Каждая запись содержит обычные атрибуты: productId, category, description, marketplace, name и price.

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

1. Подготовка таблицы DynamoDB

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

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

Эмбеддинги можно создать с помощью Amazon Bedrock Titan Text Embeddings или другой подходящей модели. Добавить их в таблицу можно через AWS Management Console, интерфейс командной строки AWS CLI, AWS SDK, AWS CloudFormation или другие инструменты управления инфраструктурой как кодом.

Для существующей таблицы ProductCatalog эмбеддинги добавляются к каждой записи как новый атрибут descriptionEmbedding с помощью вызова UpdateItem.

DynamoDB хранит векторы в стандартном типе данных List. Каждый элемент списка имеет тип Number и содержит одно значение вектора с плавающей точкой. Поэтому для хранения эмбеддингов рядом с существующими атрибутами не требуется новый тип данных или изменение схемы таблицы.

2. Создание векторного индекса

В консоли DynamoDB необходимо открыть таблицу ProductCatalog, перейти на вкладку Indexes и выбрать Create vector index.

На странице создания индекса указываются следующие параметры:

  • имя индекса — ProductDescriptionIndex;

  • атрибут с векторами — descriptionEmbedding.

Далее необходимо указать количество измерений в соответствии с размерностью векторов, создаваемых выбранной моделью, и выбрать функцию расстояния Cosine.

Косинусное расстояние учитывает угол между векторами, а не их длину, поэтому хорошо подходит для сравнения семантической близости текстовых эмбеддингов. DynamoDB также поддерживает функции Euclidean и Dot product.

  • Euclidean подходит для случаев, когда важна длина вектора, например при кластеризации объектов по числовому показателю — количеству покупок.

  • Dot product используется, когда имеют значение и направление, и длина вектора. Например, в рекомендательных системах, где одновременно учитываются совпадение интересов и частота взаимодействий.

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

В качестве ключа раздела (Partition key) указывается атрибут marketplace. Он определяет, как DynamoDB распределяет векторы между разделами индекса, и помогает масштабировать поиск с предсказуемой задержкой.

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

В разделе Inline filter attributes добавляется атрибут category. С его помощью результаты поиска можно ограничить определённой категорией товаров.

Фильтры поддерживают только точное совпадение значений. Условия диапазона, включая BETWEEN и BEGINS_WITH, недоступны.

Для параметра Attribute projections остаётся значение All, чтобы вместе с результатами поиска возвращались все атрибуты записей. После этого нужно выбрать Create vector index и дождаться, пока индекс получит статус Active.

3. Выполнение векторного поиска

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

В консоли DynamoDB необходимо открыть раздел Explore items и выбрать таблицу ProductCatalog.

Затем следует переключиться в режим векторного поиска с помощью кнопки Search и задать параметры запроса:

  • в поле Select a vector index выбрать ProductDescriptionIndex;

  • вставить поисковый вектор в поле Search vector;

  • установить Number of results (Top K) равным 5;

  • указать US в качестве значения ключа раздела, чтобы ограничить поиск американской торговой площадкой;

  • в разделе Inline filter attributes задать условие category = footwear, чтобы искать только среди обуви.

После выбора Run DynamoDB выполнит поиск и вернёт пять наиболее близких по смыслу товаров, соответствующих указанным условиям.

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

Интерпретация показателя сходства зависит от функции расстояния, выбранной для индекса:

  • для Cosine и Euclidean меньшие значения означают более высокое сходство; значение 0 соответствует идентичным векторам;

  • для Dot product более высокие значения означают более высокое сходство.

Для программной работы с векторным поиском, вызова API и поиска по документации AWS предлагает использовать AWS MCP Server и плагины для поддерживаемых ИИ-инструментов разработки. Подробности доступны в руководстве разработчика Amazon DynamoDB.

Доступность

Векторный поиск в Amazon DynamoDB уже доступен во всех коммерческих регионах AWS, включая AWS GovCloud (US).

Информацию о доступности по регионам и планах дальнейшего развития можно найти на странице AWS Capabilities by Region. Стоимость использования опубликована на странице тарифов Amazon DynamoDB.

Обратную связь AWS принимает через AWS re:Post для Amazon DynamoDB и стандартные каналы AWS Support.

Продолжить тему можно на открытых уроках — о качестве ИИ-ассистентов и архитектуре ML-систем в продакшене. Присоединятесь:

  • 18 августа, 19:00. «AI-ассистент на ваших документах: почему он врёт и что с этим делать». Записаться

  • 19 августа, 20:00. «Почему 90% ML-проектов не доходят до продакшена? Разбираем архитектуру настоящей ML-системы». Записаться

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев