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


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

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

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

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

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

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

Qdrant, в котором размещается интеграция, моделирует server в качестве типа 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 server, вместо этого вызовите AddConnectionString. Дополнительные сведения см. в статье Справочник по существующим ресурсам.

Совет

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

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

Чтобы подключиться к Qdrant client, необходимо передать правильный ключ 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 при перезапусках контейнера. Точка монтирования данных закреплена в папке C:\Qdrant\Data на Windows (или /Qdrant/Data на Unix) на хост-компьютере в контейнере Qdrant. Дополнительные сведения о монтировании привязки данных см. в документации Docker: Привязка монтирования.

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

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

интеграция Client

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

dotnet add package Aspire.Qdrant.Client

Добавить Qdrant client

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

builder.AddQdrantClient("qdrant");

Совет

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

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

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

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

Добавить ключевой Qdrant client

Могут возникнуть ситуации, когда требуется зарегистрировать несколько экземпляров 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 внедрение зависимостей: служба с ключами.

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

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

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

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

builder.AddQdrantClient("qdrant");

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

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

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

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

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

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

Полный JSON схемы интеграции client Qdrant см. в 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.

См. также