Поделиться через


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

Совет

Посетите новую коллекцию примеров для последних примеров векторной базы данных и примеров шаблонов RAG

Область применения: Nosql Виртуальные ядра MongoDB PostgreSQL

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

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

Совет

Согласованность данных, масштабируемость и производительность критически важны для приложений с большим объемом данных, поэтому OpenAI решил создать службу ChatGPT на основе Azure Cosmos DB. Вы также можете воспользоваться преимуществами интегрированной векторной базы данных, а также времени отклика в миллисекунда с одной цифрой, автоматической и мгновенной масштабируемости и гарантированной скорости в любом масштабе. Ознакомьтесь с примерами реализации и попробуйте бесплатно.

Что такое векторная база данных?

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

В векторной базе данных внедрение индексируется и запрашивается с помощью алгоритмов векторного поиска на основе их векторного расстояния или сходства. Надежный механизм необходим для выявления наиболее релевантных данных. Некоторые известные алгоритмы поиска векторов включают иерархический навигационно-небольшой мир (HNSW), инвертированные файлы (IVF), DiskANN и т. д.

Интегрированная векторная база данных и чистая векторная база данных

Существует два распространенных типа реализаций векторных баз данных — чистой векторной базы данных и интегрированной векторной базы данных в NoSQL или реляционной базе данных.

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

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

Варианты использования векторной базы данных

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

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

Совет

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

Особенно популярно использовать векторные базы данных, чтобы обеспечить получение дополненного поколения (RAG), которое использует LLM и пользовательские данные или сведения, относящиеся к домену. Такой подход позволяет:

  • Создание контекстно релевантных и точных ответов на запросы пользователей из моделей ИИ
  • Преодоление ограничений маркеров LLMs
  • Сокращение затрат на частое уточнение обновленных данных

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

Внедрение

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

Векторный поиск — это метод, который помогает находить аналогичные элементы на основе их характеристик данных, а не по точным совпадениям в поле свойства. Этот метод полезен в таких приложениях, как поиск аналогичного текста, поиск связанных изображений, рекомендации или даже обнаружение аномалий. Он работает путем создания векторных представлений (списков чисел) данных, созданных с помощью модели машинного обучения с помощью API внедрения, например внедрения Azure OpenAI Embeddings или Hugging Face в Azure. Затем он измеряет расстояние между векторами данных и вектором запроса. Векторы данных, близкие к вектору запросов, являются наиболее похожими семантикой. Использование функции собственного векторного поиска обеспечивает эффективный способ хранения, индексирования и поиска высокомерных векторных данных непосредственно рядом с другими данными приложения. Этот подход устраняет необходимость переноса данных в дорогостоящие альтернативные векторные базы данных и обеспечивает простую интеграцию приложений, управляемых ИИ. [Вернуться]

Запросы и проектирование запросов

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

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

Процесс создания хороших запросов для сценария называется проектированием запросов. Дополнительные сведения о запросах и рекомендациях по проектированию запросов см. в статье о методах разработки запросов в Службе OpenAI. [Вернуться]

Токены

Маркеры представляют собой небольшие фрагменты текста, созданные путем разделения входного текста на меньшие сегменты. Эти сегменты могут быть словами или группами символов, в зависимости от длины от одного символа до всего слова. Например, слово гамбургер будет разделен на токены, такие как ветчина, бур и гер, в то время как короткое и общее слово, как груша, будет считаться одним токеном. LLMs, такие как ChatGPT, GPT-3.5 или GPT-4, разбивают слова на маркеры для обработки. [Вернуться]

Получение дополненного поколения

Повторное увеличение поколения (RAG) — это архитектура, которая расширяет возможности LLM, таких как ChatGPT, GPT-3.5 или GPT-4, добавив систему извлечения информации, например векторный поиск, который предоставляет данные о заземления, например хранящиеся в векторной базе данных. Этот подход позволяет LLM создавать контекстно релевантные и точные ответы на основе пользовательских источников данных из векторизованных документов, изображений, аудио, видео и т. д.

Простой шаблон RAG с помощью Azure Cosmos DB для NoSQL может быть следующим:

  1. Регистрация в предварительной версии индекса вектора NoSQL в Azure Cosmos DB
  2. Настройка базы данных и контейнера с помощью политики вектора контейнера и векторного индекса.
  3. Вставка данных в базу данных и контейнер Azure Cosmos DB для NoSQL
  4. Создание внедренных данных из свойства данных с помощью Внедрения Azure OpenAI
  5. Связывание Azure Cosmos DB для NoSQL.
  6. Создание векторного индекса по свойствам внедрения
  7. Создание функции для поиска сходства векторов на основе запроса пользователя
  8. Выполнение ответов на вопросы по данным с помощью модели завершения Azure OpenAI

Шаблон RAG с проектированием запросов служит целью повышения качества отклика, предлагая более контекстную информацию модели. RAG позволяет модели применять более широкие база знаний путем включения соответствующих внешних источников в процесс создания, что приводит к более всеобъемлющим и информированным ответам. Дополнительные сведения о "заземления" LLM см. в разделе "Заземление" LLM. [Вернуться]

Ниже приведено несколько способов реализации RAG для данных с помощью наших интегрированных функций векторной базы данных:

Реализация интегрированных функций векторной базы данных

Вы можете реализовать интегрированные функции базы данных векторов для следующих API Azure Cosmos DB:

API NoSQL

Azure Cosmos DB для NoSQL — это первая в мире бессерверная векторная база данных NoSQL. Храните векторы и данные вместе в Azure Cosmos DB для NoSQL с интегрированными возможностями векторной базы данных, где можно создать векторный индекс на основе DiskANN, набор алгоритмов индексирования векторов высокой производительности, разработанных Microsoft Research.

DiskANN позволяет выполнять высокоточную, низкую задержку запросов в любом масштабе при использовании всех преимуществ Azure Cosmos DB для NoSQL, таких как соглашение об уровне обслуживания 99,999 % (с поддержкой высокой доступности), георепликация, простой переход от бессерверной к подготовленной пропускной способности (ЕЗ) в одном хранилище данных.

Azure Cosmos DB for MongoDB

Используйте встроенную векторную базу данных в Azure Cosmos DB для MongoDB (архитектура виртуальных ядер), которая обеспечивает эффективный способ хранения, индексирования и поиска высокомерных векторных данных непосредственно рядом с другими данными приложения. Этот подход устраняет необходимость переноса данных в дорогостоящие альтернативные векторные базы данных и обеспечивает простую интеграцию приложений, управляемых ИИ.

Примеры кода

API для PostgreSQL

Используйте встроенную векторную базу данных в Azure Cosmos DB для PostgreSQL, которая предлагает эффективный способ хранения, индексирования и поиска высокомерных векторных данных непосредственно рядом с другими данными приложения. Этот подход устраняет необходимость переноса данных в дорогостоящие альтернативные векторные базы данных и обеспечивает простую интеграцию приложений, управляемых ИИ.

Пример кода

Следующий шаг

30-дневная бесплатная пробная версия без подписки Azure

90-дневная бесплатная пробная версия и до $ 6000 в кредиты пропускной способности с преимуществом ИИ Azure

Дополнительные решения для векторной базы данных

Схема служб индексирования векторов.