Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Совет
Последние примеры векторной базы данных и шаблонов RAG см. в коллекции примеров Azure Cosmos DB.
Векторные базы данных используются в многочисленных доменах и ситуациях в аналитических и генеривных ИИ, включая обработку естественного языка, распознавание видео и изображения, систему рекомендаций и поиск, среди прочего.
В 2023 году заметной тенденцией в программном обеспечении была интеграция усовершенствований ИИ, часто достигнутых путем включения специализированных автономных векторных баз данных в существующие технологические стеки. В этой статье объясняется, какие базы данных векторов представляют собой и представляют альтернативную архитектуру, которую вы можете рассмотреть: использование интегрированной векторной базы данных в NoSQL или реляционной базе данных, которую вы уже используете, особенно при работе с несколькими модальными данными. Этот подход позволяет не только сократить затраты, но и повысить согласованность данных, масштабируемость и производительность.
Совет
Согласованность данных, масштабируемость и производительность критически важны для приложений с большим объемом данных, поэтому OpenAI решил создать службу ChatGPT на основе Azure Cosmos DB. Вы также можете воспользоваться преимуществами интегрированной векторной базы данных, а также времени отклика в миллисекунда с одной цифрой, автоматической и мгновенной масштабируемости и гарантированной скорости в любом масштабе. Ознакомьтесь с примерами реализации и попробуйте бесплатно.
Что такое векторная база данных?
Векторная база данных — это база данных, предназначенная для хранения и управления векторными представлениями, которые являются математическими представлениями данных в многомерном пространстве. В этом пространстве каждое измерение соответствует признаку данных, а для представления сложных данных можно использовать десятки тысяч измерений. Позиция вектора в этом пространстве представляет свои характеристики. Слова, фразы или целые документы, изображения, аудио и другие типы данных могут быть векторизированы. Эти векторные внедрения используются в поиске сходства, многомодальном поиске, подсистемах рекомендаций, моделях больших языков (LLM) и т. д.
В векторной базе данных встраивания индексируются и запрашиваются с помощью алгоритмов векторного поиска на основе их векторного расстояния или сходства. Надежный механизм необходим для выявления наиболее релевантных данных. Некоторые известные алгоритмы поиска векторов включают иерархический навигационно-малый мир (HNSW), инвертированные файлы (IVF) и DiskANN.
Интегрированная векторная база данных и чистая векторная база данных
Существует два распространенных типа реализаций векторной базы данных: чистая векторная база данных и интегрированная векторная база данных в NoSQL или реляционная база данных.
Чистая векторная база данных предназначена для эффективного хранения векторных внедрений и управления ими, а также небольшого объема метаданных; он отделен от источника данных, от которого производные внедрения.
Векторная база данных, интегрированная в высокопроизводительную базу данных NoSQL или реляционную базу данных, предоставляет дополнительные возможности. Интегрированная векторная база данных, используемая с NoSQL или реляционной базой данных, может хранить, индексировать и осуществлять запросы на векторные представления вместе с соответствующими исходными данными. Этот подход устраняет дополнительные затраты на репликацию данных в отдельной базе данных чистого вектора. Кроме того, сохранение векторных внедрения и исходных данных лучше упрощает операции с много модальными данными и обеспечивает более высокую согласованность данных, масштабирование и производительность. Высокопроизводительная база данных с гибкостью схемы и интегрированной векторной базой данных особенно оптимальна для агентов ИИ.
Варианты использования векторной базы данных
Векторные базы данных используются в многочисленных доменах и ситуациях в аналитических и генеривных ИИ, включая обработку естественного языка, распознавание видео и изображения, систему рекомендаций и поиск. Например, можно использовать векторную базу данных для:
- Определение похожих изображений, документов и песен на основе их содержимого, тем, тональности и стилей
- Определение аналогичных продуктов на основе их характеристик, функций и групп пользователей
- Рекомендации по содержимому, продуктам или службам на основе предпочтений отдельных лиц
- Рекомендации по содержимому, продуктам или службам на основе сходств групп пользователей
- Определение наиболее подходящих потенциальных вариантов из большого пула вариантов для удовлетворения сложных требований
- Определение аномалий данных или мошеннических действий, которые отличаются от преобладающих или нормальных шаблонов
- Реализация постоянной памяти для агентов ИИ
Совет
Помимо этих типичных вариантов использования для векторных баз данных, наша интегрированная векторная база данных также является идеальным решением для кэширования LLM на уровне рабочей среды благодаря низкой задержке, высокой масштабируемости и высокой доступности.
Векторные базы данных особенно популярны для реализации генеративного создания с возвратом (RAG), которое использует модели машинного обучения (LLM), а также пользовательские данные и информацию, специфичную для домена. Такой подход позволяет:
- Создание контекстно релевантных и точных ответов на запросы пользователей из моделей ИИ
- Преодоление ограничений токенов LLMs
- Сокращение затрат на частое уточнение обновленных данных
Этот процесс включает извлечение соответствующих сведений из пользовательского источника данных и интеграцию их в запрос модели с помощью инженерии подсказок. Перед отправкой запроса в LLM ввод пользователя/запрос преобразуется в векторное представление, и методы векторного поиска применяются для поиска наиболее похожих векторных представлений в базе данных. Этот метод позволяет выявить наиболее релевантные записи данных в базе данных. Затем эти извлеченные записи предоставляются в качестве входных данных для запроса LLM с помощью конструктора запросов.
Замечание
Заинтересованы в возможностях поиска векторов с ультра высокой пропускной способностью? Azure Cosmos DB разрабатывает расширенные функции поиска векторов, предназначенные для больших векторных наборов данных, в сочетании с вставками и поисками с высокой пропускной способностью. Он может обрабатывать миллионы запросов в секунду (QPS) с прогнозируемой низкой задержкой и непревзойденной экономичностью. Зарегистрируйтесь, чтобы узнать больше о возможностях раннего доступа и получать уведомления, когда эти возможности становятся доступными.
Зарегистрируйтесь для расширенной частной предварительной версии.
Основные понятия, связанные с векторной базой данных
Эмбеддинги
Внедрение — это специальный формат представления данных, который модели машинного обучения и алгоритмы могут легко использовать. Внедрение — это информационно-плотное представление семантического значения фрагмента текста. Каждое внедрение является вектором чисел с плавающей запятой, таким образом, расстояние между двумя внедрениями в векторное пространство сопоставляется с семантическим сходством между двумя входными данными в исходном формате. Например, если два текста похожи, их векторные представления также должны быть похожи. Расширение векторной базы данных, позволяющее хранить внедренные данные с исходными данными, обеспечивает согласованность данных, масштабирование и производительность.
Векторный поиск
Векторный поиск — это метод, который помогает находить аналогичные элементы на основе их характеристик данных, а не по точным совпадениям в поле свойства. Этот метод полезен в таких приложениях, как поиск аналогичного текста, поиск связанных изображений, рекомендации или даже обнаружение аномалий.
Он работает, используя векторные представления (наборы чисел) данных, которые вы создаете с помощью модели машинного обучения, используя API для встраивания, такие как Azure OpenAI Embeddings или Hugging Face на Azure. Затем он измеряет расстояние между векторами данных и вектором запроса. Векторы данных, близкие к вектору запросов, являются наиболее похожими семантикой.
Использование функции собственного векторного поиска обеспечивает эффективный способ хранения, индексирования и поиска высокомерных векторных данных непосредственно рядом с другими данными приложения. Этот подход устраняет необходимость переноса данных в дорогостоящие альтернативные векторные базы данных и обеспечивает простую интеграцию приложений, управляемых ИИ.
Запросы и проектирование запросов
Подсказка относится к определенному тексту или информации, которые могут служить инструкцией для LLM или служить в качестве контекстных данных, на основе которых LLM может строить. Запрос может принимать различные формы, такие как вопрос, оператор или даже фрагмент кода. Запросы могут служить как:
- Инструкции, которые предоставляют указания для LLM
- Основное содержимое, которое предоставляет сведения LLM для обработки
- Примеры, помогающие настроить модель на определённую задачу или процесс.
- Подсказки для корректировки результатов LLM в нужном направлении
- Вспомогательное содержимое, представляющее дополнительные сведения, которые LLM может использовать для создания выходных данных
Процесс разработки хороших запросов для сценария называется инжинирингом запросов. Дополнительные сведения о запросах и рекомендациях по проектированию запросов см. в разделе "Проектирование системных сообщений".
Токены
Маркеры представляют собой небольшие фрагменты текста, созданные путем разделения входного текста на меньшие сегменты. Эти сегменты могут быть словами или группами символов, в зависимости от длины от одного символа до всего слова. Например, слово "гамбургер" будет разделено на токены, такие как "хам," "бур" и "гер," в то время как короткое и общее слово, такое как "груша," будет считаться одним токеном. LLMs, такие как ChatGPT, GPT-3.5 или GPT-4, разбивают слова на токены для обработки. [Вернуться]
Генерация, дополненная извлечением информации
Улучшенная за счёт извлечения генерация (RAG) — это архитектура, которая улучшает возможности LLM, таких как ChatGPT, GPT-3.5 или GPT-4, добавляя систему извлечения информации, например, векторный поиск, предоставляющий дополнительные данные, такие как хранящиеся в векторной базе данных. Этот подход позволяет вашему LLM создавать контекстно релевантные и точные ответы на основе ваших пользовательских данных, полученных из векторизованных документов, изображений, аудио, видео и т. д.
Простой шаблон RAG с помощью Azure Cosmos DB для NoSQL может:
- Включение векторного индекса NoSQL в Azure Cosmos DB
- Настройка базы данных и контейнера с помощью политики вектора контейнера и векторного индекса
- Вставка данных в базу данных и контейнер Azure Cosmos DB для NoSQL
- Создание эмбеддингов из свойства данных с помощью Azure OpenAI Embeddings
- Свяжите Azure Cosmos DB для NoSQL.
- Создание векторного индекса по свойствам встраивания
- Создание функции для поиска сходства векторов на основе запроса пользователя
- Выполнение ответов на вопросы по данным с помощью модели завершения Azure OpenAI
Шаблон RAG с инженерией запросов имеет целью повышение качества ответа, предоставляя более контекстуальную информацию модели. RAG позволяет модели применять более широкие база знаний путем включения соответствующих внешних источников в процесс создания, что приводит к более всеобъемлющим и информированным ответам. Для получения дополнительной информации см. в разделе Заземление LLMов.
Реализация интегрированных функций векторной базы данных
Вы можете реализовать интегрированные функции векторной базы данных для Azure Cosmos DB и различных API совместимости.
API NoSQL
Azure Cosmos DB для NoSQL — это первая в мире бессерверная векторная база данных NoSQL. Храните векторы и данные вместе в Azure Cosmos DB для NoSQL с интегрированными возможностями векторной базы данных , где можно создать векторный индекс на основе DiskANN, набор высокопроизводительных алгоритмов индексирования векторов, разработанных Microsoft Research.
DiskANN позволяет вам выполнять запросы с высокой точностью и низкой задержкой в любом масштабе, используя все преимущества Azure Cosmos DB для NoSQL, такие как SLA 99,999% (с поддержкой высокой доступности), георепликация и плавный переход от серверлесного к выделенному пропускному объему (RU) — все это в одном хранилище данных.
Ссылки и примеры
- Что такое база данных за ChatGPT? — Microsoft Mechanics
- Индексирование векторов в Azure Cosmos DB для NoSQL
- Запросы к системной функции VectorDistance NoSQL
- Поиск векторов в Azure Cosmos DB для NoSQL
- Python — учебник по Jupyter Notebook
- C# — создание собственного акселератора решений Copilot с помощью AKS и семантического ядра
- C# — создание собственного примера приложения Copilot и мастер-класса
- Python — чат-бот для обсуждения фильмов
Примеры кода
- Записная книжка Python — интеграция с векторной базой данных с использованием руководства по LangChain
- Записная книжка Python — учебное руководство по интеграции кэширования LLM с помощью LangChain
- Python — интеграция LlamaIndex
- Python — интеграция семантической памяти ядра
- Блокнот Python — чат-бот для фильмов
API для PostgreSQL
Используйте встроенную векторную базу данных в Azure Cosmos DB для PostgreSQL, которая предлагает эффективный способ хранения, индексирования и поиска высокомерных векторных данных непосредственно рядом с другими данными приложения. Этот подход устраняет необходимость переноса данных в дорогостоящие альтернативные векторные базы данных и обеспечивает простую интеграцию приложений, управляемых ИИ.