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


Векторные базы данных для приложений .NET AI

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

Например, можно использовать векторную базу данных для:

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

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

Некоторые службы, такие как Azure Cosmos DB для виртуальных ядер MongoDB, предоставляют собственные возможности поиска векторов для данных. Другие базы данных можно улучшить с помощью векторного поиска, индексируя сохраненные данные с помощью службы, такой как поиск ИИ Azure, которая может проверять и индексировать данные для предоставления возможностей векторного поиска.

Рабочие процессы поиска векторов с помощью .NET и OpenAI

Векторные базы данных и их функции поиска особенно полезны в рабочих процессах шаблонов RAG с помощью Azure OpenAI. Этот шаблон позволяет расширить модель ИИ с помощью дополнительных семантически богатых знаний о данных. Общий рабочий процесс ИИ с использованием векторных баз данных включает следующие действия.

  1. Создайте эмбеддинги для ваших данных с помощью модели OpenAI.
  2. Храните и индексируйте векторные представления в векторных базах данных или в службе поиска.
  3. Преобразуйте запросы пользователей из приложения в эмбеддинги.
  4. Выполните векторный поиск по вашим данным, сравнивая эмбеддинг пользовательского запроса с эмбеддингами в вашей базе данных.
  5. Используйте языковую модель, например gpt-4o, чтобы собрать понятное завершение из результатов векторного поиска.

Чтобы получить практический пример этого процесса, обратитесь к руководству по внедрению Azure OpenAI с использованием векторного поиска в приложении .NET.

К другим преимуществам шаблона RAG относятся следующие:

  • Создавайте контекстно релевантные и точные ответы на запросы пользователей из моделей ИИ.
  • Преодолеть ограничения токенов LLM — основная работа выполняется с помощью векторного поиска в базе данных.
  • Уменьшите затраты на частое уточнение обновленных данных.

Библиотека Microsoft.Extensions.VectorData

Пакет 📦 Microsoft.Extensions.VectorData.Abstractions предоставляет единый слой абстракций для взаимодействия с хранилищами векторов в .NET. Эти абстракции позволяют создавать код для одного API и переключать базовое хранилище векторов с минимальными изменениями в приложении.

Библиотека предоставляет следующие ключевые возможности:

  • Единая модель данных: определите модель данных после использования атрибутов .NET и используйте ее в любом поддерживаемом хранилище векторов.
  • Операции CRUD: создание, чтение, обновление и удаление записей в векторном хранилище.
  • Векторный и текстовый поиск: запрос записей по семантическому сходству с помощью векторного поиска или ключевого слова с помощью текстового поиска.
  • Управление коллекциями: создание, перечисление и удаление коллекций (таблиц или индексов) в векторном хранилище.

Ключевые абстракции

Библиотека Microsoft.Extensions.VectorData.Abstractions предоставляет следующие основные абстрактные классы:

  • VectorStore: класс верхнего уровня для векторной базы данных. Используйте его для получения коллекций и управления ими.
  • VectorStoreCollection<TKey,TRecord>: представляет именованную коллекцию записей в хранилище векторов. Используйте его для выполнения операций CRUD и поиска. Также реализуется IVectorSearchable<TRecord>.
  • IKeywordHybridSearchable<TRecord>: реализованы коллекциями, поддерживающими гибридный поиск, сочетая сходство векторов с сопоставлением ключевых слов.

Пошаговое руководство по определению модели данных, операциям CRUD, векторным поиском, фильтрацией, гибридным поиском и внедрением см. в разделе "Использование векторных хранилищ в приложениях .NET AI".

Поставщики хранилища векторов

Пакет Microsoft.Extensions.VectorData.Abstractions определяет абстракции и отдельные пакеты поставщиков предоставляют реализации для конкретных векторных баз данных. Выберите поставщик, соответствующий векторной базе данных, например Microsoft.SemanticKernel.Connectors.AzureAISearch.

Замечание

Несмотря на включение "SemanticKernel" в имена пакетов, эти провайдеры не имеют ничего общего с семантическим ядром и могут использоваться в любой части .NET, включая Agent Framework.

Все поставщики реализуют одинаковые VectorStore и VectorStoreCollection<TKey,TRecord> абстрактные классы, поэтому вы можете переключаться между ними, не изменяя логику приложения.

Подсказка

Используйте поставщик данных в памяти (Microsoft.SemanticKernel.Connectors.InMemory) во время разработки и тестирования. Он не требует какой-либо внешней службы или конфигурации, и его можно переключить на поставщика рабочей среды позже.