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

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

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

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

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

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

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

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

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

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

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

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

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

программный интерфейс 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-системы». Записаться

Читают сейчас

Техдиректор Microsoft Azure с помощью ИИ за два дня портировал на macOS старую утилиту для Windows

2 часа назад

Техдиректор Microsoft Azure с помощью ИИ за два дня портировал на macOS старую утилиту для Windows

Программист Microsoft Марк Руссинович, который в настоящее время является техническим директором Microsoft Azure, использовал искусственный интеллект, чтобы перенести инструмент Windows ZoomIt, которы

FAA запустило ИИ‑платформу для предиктивного управления воздушным движением

2 часа назад

FAA запустило ИИ‑платформу для предиктивного управления воздушным движением

Федеральное управление гражданской авиации США (FAA) запускает облачную ИИ‑платформу под названием SMART (Strategic Management of Airspace, Routes, and Trajectories) стоимостью $875 млн для предиктивн

Lenovo представила мобильный экран L16a

2 часа назад

Lenovo представила мобильный экран L16a

Lenovo представила новый 16-дюймовый мобильный монитор ThinkVision L16a. Он оснащён двумя портами USB‑C, поддерживает технологию Power Delivery и комплектуется регулируемой подставкой. Читать далее

Claude Code научился ознакомиться AGENTS.md

3 часа назад

Claude Code научился ознакомиться AGENTS.md

Anthropic добавили поддержку AGENTS.md в Claude Code 2.1.277. Теперь инструмент может применять совокупный файл с инструкциями для coding-агентов вместо отдельного CLAUDE.md. Ознакомиться далее

Asetek совместно с MSI и MouseComputer представила жидкостное охлаждение для GeForce RTX 5070

4 часа назад

Asetek совместно с MSI и MouseComputer представила жидкостное охлаждение для GeForce RTX 5070

Asetek совместно с MSI и MouseComputer представила систему жидкостного охлаждения для GeForce RTX 5070 — Mouse Original NVIDIA GeForce RTX 5070 Liquid‑Cooled Overclocked Edition. Демонстрация состояла