Бөлісу құралы:


интеграция Qdrant .NET.NET Aspire

включает в себя: интеграцию хостинга и Client интеграцию

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

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

Из этой статьи вы узнаете, как использовать интеграцию .NET.NET Aspire Qdrant. Интеграция Qdrant .NET.NET Aspire позволяет подключаться к существующим базам данных Qdrant или создавать новые экземпляры с помощью qdrant/qdrant образа контейнера.

Интеграция хостинга

Интеграция хостинга Qdrant моделирует сервер как тип QdrantServerResource. Чтобы получить доступ к этому типу и API, добавьте пакет NuGet 📦Aspire.Hosting.Qdrant в проект хоста приложения .

dotnet add package Aspire.Hosting.Qdrant

Дополнительные сведения см. в статье dotnet add package или Управление зависимостями пакетов в приложениях .NET.

Добавление ресурса Qdrant

В вашем хост-проекте приложения вызовите AddQdrant, чтобы добавить и вернуть генератор ресурсов Qdrant.

var builder = DistributedApplication.CreateBuilder(args);

var qdrant = builder.AddQdrant("qdrant")
                    .WithLifetime(ContainerLifetime.Persistent);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(qdrant)
       .WaitFor(qdrant);

// After adding all resources, run the app...

Заметка

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

Когда .NET.NET Aspire добавляет образ контейнера на хост приложения, как показано в предыдущем примере с образом qdrant/qdrant, он создает новый экземпляр Qdrant на локальном компьютере. Ресурс называется qdrant, а затем добавляется в ExampleProject.

Метод WithReference настраивает подключение в ExampleProject с именем qdrant.

Совет

Если вы хотите подключиться к существующему серверу Qdrant, вызовите AddConnectionString вместо этого. Дополнительные сведения см. в статье Справочник по существующим ресурсам.

Совет

Образ контейнера qdrant/qdrant включает в себя веб-интерфейс, который можно использовать для изучения векторов и администрирования базы данных. Чтобы получить доступ к этому средству, запустите решение .NET Aspire, а затем на панели мониторинга .NET Aspire выберите конечную точку для ресурса Qdrant. В адресной строке браузера добавьте /dashboard и нажмите Enter.

Обработка ключей API и передача других параметров для ресурса Qdrant

Чтобы подключиться к Qdrant, клиенту необходимо передать правильный ключ API. В приведенном выше коде, когда .NET.NET Aspire добавляет ресурс Qdrant в решение, он задает ключ API случайной строке. Если вы хотите использовать определенный ключ API, его можно передать в качестве параметра apiKey:

var apiKey = builder.AddParameter("apiKey", secret: true);

var qdrant = builder.AddQdrant("qdrant", apiKey);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(qdrant);

Qdrant поддерживает ключи API по умолчанию на основе конфигурации с помощью переменной среды QDRANT__SERVICE__API_KEY.

Приведенный выше код получает параметр для передачи в API AddQdrant и внутренне назначает параметр переменной среды QDRANT__SERVICE__API_KEY контейнера Qdrant. Параметр apiKey обычно указывается как секрет пользователя:

{
  "Parameters": {
    "apiKey": "Non-default-P@ssw0rd"
  }
}

Дополнительные сведения см. в разделе Внешние параметры.

Добавьте ресурс Qdrant с объемом данных

Чтобы добавить том данных в ресурс Qdrant, вызовите метод расширения WithDataVolume:

var builder = DistributedApplication.CreateBuilder(args);

var qdrant = builder.AddQdrant("qdrant")
                    .WithLifetime(ContainerLifetime.Persistent)
                    .WithDataVolume();

builder.AddProject<Projects.ExampleProject>()
       .WithReference(qdrant)
       .WaitFor(qdrant);

// After adding all resources, run the app...

Том данных используется для сохранения данных Qdrant за пределами жизненного цикла контейнера. Данный том монтируется на путь /qdrant/storage в контейнере Qdrant, и если параметр name не указан, имя генерируется случайным образом. Для получения дополнительной информации о томах данных и о том, почему они предпочтительнее привязок, см. документацию: Docker тома.

Добавление ресурса Qdrant с подключением привязки данных

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

var builder = DistributedApplication.CreateBuilder(args);

var qdrant = builder.AddQdrant("qdrant")
                    .WithLifetime(ContainerLifetime.Persistent)
                    .WithDataBindMount(source: @"C:\Qdrant\Data");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(qdrant)
       .WaitFor(qdrant);

// After adding all resources, run the app...

Важный

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

Маунты привязки данных используют файловую систему хост-компьютера для сохранения данных Qdrant при перезапусках контейнера. Точка крепления данных bind смонтирована в каталоге C:\Qdrant\Data на Windows (или /Qdrant/Data на Unix) в контейнере Qdrant на хост-компьютере. Дополнительные сведения о монтировании привязок данных см. в документации Docker: Монтирование привязок.

Проверка работоспособности интеграции хостинга

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

интеграция Client

Чтобы приступить к работе с интеграцией клиента Qdrant .NET.NET Aspire, установите 📦Aspire. Qdrant.Client пакет NuGet в проекте, использующем клиент, то есть в проекте приложения, использующего клиент Qdrant. Интеграция клиента Qdrant регистрирует Qdrant.Client. Экземпляр QdrantClient, который можно использовать для взаимодействия с данными вектора Qdrant.

dotnet add package Aspire.Qdrant.Client

Добавление клиента Qdrant

В файле Program.cs проекта, используемого клиентом, вызовите метод расширения AddQdrantClient для любой IHostApplicationBuilder, чтобы зарегистрировать QdrantClient для использования с помощью контейнера внедрения зависимостей. Метод принимает параметр имени подключения.

builder.AddQdrantClient("qdrant");

Совет

Параметр connectionName должен соответствовать имени, используемому при добавлении ресурса Qdrant в проект узла приложения. Другими словами, при вызове AddQdrant и указании имени qdrant то же имя следует использовать при вызове AddQdrantClient. Дополнительные сведения см. в разделе Добавление ресурсов Qdrant.

Затем можно извлечь экземпляр QdrantClient с помощью инъекции зависимостей. Например, чтобы получить подключение из примера сервиса:

public class ExampleService(QdrantClient client)
{
    // Use client...
}

Для получения дополнительных сведений о внедрении зависимостей см. .NET внедрение зависимостей.

Добавить клиента Qdrant с ключом

Могут возникнуть ситуации, когда требуется зарегистрировать несколько экземпляров QdrantClient с различными именами подключений. Чтобы зарегистрировать ключи клиентов Qdrant, вызовите метод AddKeyedQdrantClient:

builder.AddKeyedQdrantClient(name: "mainQdrant");
builder.AddKeyedQdrantClient(name: "loggingQdrant");

Затем можно получить экземпляры QdrantClient с помощью инъекции зависимостей. Например, чтобы получить подключения из службы-примера:

public class ExampleService(
    [FromKeyedServices("mainQdrant")] QdrantClient mainQdrantClient,
    [FromKeyedServices("loggingQdrant")] QdrantClient loggingQdrantClient)
{
    // Use clients...
}

Дополнительные сведения о ключевых службах см. в разделе .NET внедрение зависимостей: служба с ключами.

Конфигурация

Интеграция клиента Qdrant .NET.NET Aspire предоставляет несколько вариантов настройки подключения к Qdrant на основе требований и соглашений проекта.

Используйте строку подключения

При использовании строки подключения из раздела конфигурации ConnectionStrings можно указать имя строки подключения при вызове builder.AddQdrantClient():

builder.AddQdrantClient("qdrant");

Затем .NET.NET Aspire извлекает строку подключения из раздела конфигурации ConnectionStrings:

{
  "ConnectionStrings": {
    "qdrant": "Endpoint=http://localhost:6334;Key=123456!@#$%"
  }
}

По умолчанию QdrantClient использует конечную точку API gRPC.

Использование поставщиков конфигураций

Интеграция клиента Qdrant .NET.NET Aspire поддерживает Microsoft.Extensions.Configuration. Он загружает QdrantClientSettings из конфигурации, используя ключ Aspire:Qdrant:Client. Ниже приведен пример appsettings.json, который настраивает некоторые параметры:

{
  "Aspire": {
    "Qdrant": {
      "Client": {
        "Endpoint": "http://localhost:6334/",
        "Key": "123456!@#$%"
      }
    }
  }
}

Полную схему интеграции клиента Qdrant JSON см. в Aspire. Qdrant.Client/ConfigurationSchema.json.

Использование встроенных делегатов

Вы также можете передать делегат Action<QdrantClientSettings> configureSettings для настройки некоторых или всех встроенных параметров, например, чтобы задать ключ API из кода:

builder.AddQdrantClient(
    "qdrant", 
    settings => settings.Key = "12345!@#$%");

Client проверка состояния интеграции

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

Наблюдаемость и телеметрия

.NET .NET Aspire интеграции автоматически настраивают конфигурации журналов, трассировки и метрик, которые иногда называются основами наблюдаемости. Дополнительные сведения об наблюдаемости интеграции и телеметрии см. в .NET.NET Aspire обзоре интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации .

Лесозаготовка

Интеграция Qdrant .NET Aspire использует стандартное ведение журнала .NET, и вы увидите записи журнала из следующей категории:

  • Qdrant.Client

Отслеживание

В настоящее время интеграция Qdrant .NET.NET Aspire не выполняет действий трассировки, так как они не поддерживаются библиотекой Qdrant.Client.

Метрика

Интеграция .NET.NET Aspire Qdrant в настоящее время не выдает метрики, так как они не поддерживаются библиотекой Qdrant.Client.

См. также