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


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

Совет

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

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

В 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 может использовать для создания выходных данных.

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

Токены

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

Генерация, дополненная извлечением информации

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

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

  1. Включите векторный индекс Azure Cosmos DB NoSQL.
  2. Настройка базы данных и контейнера с помощью политики вектора контейнера и векторного индекса.
  3. Вставка данных в базу данных и контейнер Azure Cosmos DB для NoSQL
  4. Создание эмбеддингов из свойства данных с помощью Azure OpenAI Embeddings
  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 для MongoDB

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

Примеры кода

API для PostgreSQL

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

Пример кода

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

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

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