интеграция базы данных .NET AspireMilvus
Включает:,,интеграцию хостинга, а также
,,Client интеграцию
Milvus — это система базы данных с открытым исходным кодом, которая эффективно хранит, индексы и выполняет поиск крупномасштабных векторных данных. Он часто используется в машинном обучении, искусственном интеллекте и приложениях для обработки и анализа данных.
Векторные данные кодируют сведения в виде математических векторов, которые являются массивами чисел или координат. Системы машинного обучения и искусственного интеллекта часто используют векторы для представления неструктурированных объектов, таких как изображения, текст, звук или видео. Каждое измерение в векторе описывает определенную характеристику объекта. Сравнивая их, системы могут классифицировать, искать и определять кластеры объектов.
Из этой статьи вы узнаете, как использовать интеграцию .NET AspireMilvus базы данных. Интеграция .NET AspireMilvus базы данных позволяет подключаться к существующим базам данных Milvus или создавать новые экземпляры с помощью образа контейнера milvusdb/milvus
.
Интеграция хостинга
Интеграция размещения базы данных Milvus моделирует сервер как тип MilvusServerResource, а базу данных как тип MilvusDatabaseResource. Чтобы получить доступ к этим типам и API, добавьте пакет NuGet 📦Aspire.Hosting.Milvus в проект узла приложения .
dotnet add package Aspire.Hosting.Milvus
Дополнительные сведения см. в статье dotnet add package или Управление зависимостями пакетов в приложениях .NET.
Добавление ресурсов сервера и базы данных Milvus
В проекте узла приложения вызовите AddMilvus, чтобы добавить и вернуть построитель ресурсов Milvus. Свяжите вызов конструктора возвращаемого ресурса с AddDatabase, чтобы добавить ресурс базы данных Milvus.
var builder = DistributedApplication.CreateBuilder(args);
var milvus = builder.AddMilvus("milvus")
.WithLifetime(ContainerLifetime.Persistent);
var milvusdb = milvus.AddDatabase("milvusdb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(milvusdb)
.WaitFor(milvusdb);
// After adding all resources, run the app...
Заметка
Контейнер Milvus может быть медленным, поэтому рекомендуется использовать постоянное время существования, чтобы избежать ненужных перезапусков. Для получения дополнительной информации см. Срок службы ресурса контейнера.
Когда .NET.NET Aspire добавляет контейнерный образ в узел приложения, как показано в предыдущем примере с контейнерным образом milvusdb/milvus
, он создает новый экземпляр Milvus на локальном компьютере. Ссылка на построитель ресурсов Milvus (переменная milvus
) используется для добавления базы данных. База данных называется milvusdb
, а затем добавляется в ExampleProject
.
Метод WithReference настраивает подключение в ExampleProject
с именем milvusdb
.
Совет
Если вы хотите подключиться к существующему серверу Milvus, вызовите AddConnectionString вместо этого. Дополнительные сведения см. в статье Справочник по существующим ресурсам.
Обработка учетных данных и передача других параметров для ресурса Milvus
Ресурс Milvus включает учетные данные по умолчанию с username
root
и паролем Milvus
.
Milvus поддерживает пароли по умолчанию на основе конфигурации с помощью переменной среды COMMON_SECURITY_DEFAULTROOTPASSWORD
. Чтобы изменить пароль по умолчанию в контейнере, передайте параметр apiKey
при вызове API размещения AddMilvus
:
var apiKey = builder.AddParameter("apiKey", secret: true);
var milvus = builder.AddMilvus("milvus", apiKey);
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(milvus);
Приведенный выше код получает параметр для передачи в API AddMilvus
и внутренне назначает параметр переменной среды COMMON_SECURITY_DEFAULTROOTPASSWORD
контейнера Milvus. Параметр apiKey
обычно указывается как секрет пользователя:
{
"Parameters": {
"apiKey": "Non-default-P@ssw0rd"
}
}
Дополнительные сведения см. в разделе Внешние параметры.
Добавьте ресурс Milvus с томом данных
Чтобы добавить том данных в ресурс службы Milvus, вызовите метод WithDataVolume в ресурсе Milvus:
var builder = DistributedApplication.CreateBuilder(args);
var milvus = builder.AddMilvus("milvus")
.WithDataVolume();
var milvusdb = milvus.AddDatabase("milvusdb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(milvusdb)
.WaitFor(milvusdb);
// After adding all resources, run the app...
Том данных используется для сохранения Milvus данных за пределами жизненного цикла контейнера. Том данных подключается по пути /var/lib/milvus
в контейнере SQL Server, а если параметр name
не указан, имя генерируется случайным образом. Дополнительные сведения об объемах данных и о том, почему они предпочтительнее привязки, см. документацию Docker о томах.
Добавление ресурса Milvus с подключением привязки данных
Чтобы добавить привязку данных к ресурсу Milvus, вызовите метод WithDataBindMount:
var builder = DistributedApplication.CreateBuilder(args);
var milvus = builder.AddMilvus("milvus")
.WithDataBindMount(source: @"C:\Milvus\Data");
var milvusdb = milvus.AddDatabase("milvusdb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(milvusdb)
.WaitFor(milvusdb);
// After adding all resources, run the app...
Важный
Подключения привязки данных имеют ограниченные функциональные возможности по сравнению с томами, которые обеспечивают более высокую производительность, переносимость и безопасность, что делает их более подходящими для рабочих сред. Однако привязываемые подключения позволяют напрямую получать доступ и изменять файлы в хост-системе, что идеально подходят для разработки и тестирования, в которых требуется внесение изменений в режиме реального времени.
Монтажи данных зависят от файловой системы хост-компьютера для сохранения данных Milvus между перезагрузками контейнера. Подключение монтирования данных выполняется в C:\Milvus\Data
в Windows (или /Milvus/Data
на Unix) пути на хост-компьютере внутри контейнера Milvus. Дополнительные сведения о подключениях привязки данных см. в документации по Docker: привязка подключений.
Создание ресурса Attu
Attu — это графический пользовательский интерфейс (GUI) и средство управления, предназначенное для взаимодействия с Milvus и ее базами данных. Он включает широкие возможности визуализации, которые помогут вам изучить и понять векторные данные.
Если вы хотите использовать Attu для управления Milvus в решении .NET Aspire, вызовите метод расширения WithAttu в ресурсе Milvus. Метод создает контейнер из образа zilliz/attu
:
var builder = DistributedApplication.CreateBuilder(args);
var milvus = builder.AddMilvus("milvus")
.WithAttu()
.WithLifetime(ContainerLifetime.Persistent);
var milvusdb = milvus.AddDatabase("milvusdb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(milvusdb)
.WaitFor(milvusdb);
// After adding all resources, run the app...
При отладке решения .NET.NET Aspire вы увидите контейнер Attu, указанный в ресурсах решения. Выберите конечную точку ресурса, чтобы открыть графический интерфейс и начать управление базами данных.
интеграция Client
Чтобы приступить к работе с интеграцией клиента .NET AspireMilvus, установите пакет NuGet 📦Aspire.Milvus.Client в проекте, использующем клиент, который является проектом для приложения, использующего клиент базы данных Milvus. Интеграция клиента Milvus регистрирует экземпляр Milvus.Client.МilvusClient, который можно использовать для взаимодействия с базами данных Milvus.
dotnet add package Aspire.Milvus.Client
Добавление клиента Milvus
В файле Program.cs проекта, используемого клиентом, вызовите метод расширения AddMilvusClient для любой IHostApplicationBuilder, чтобы зарегистрировать MilvusClient
для использования с помощью контейнера внедрения зависимостей. Метод принимает параметр имени подключения.
builder.AddMilvusClient("milvusdb");
Совет
Параметр connectionName
должен соответствовать имени, используемому при добавлении ресурса базы данных Milvus в проект узла приложения. Другими словами, при вызове AddDatabase
и указании имени milvusdb
то же имя следует использовать при вызове AddMilvusClient
. Дополнительные сведения см. в Добавить ресурс сервера Milvus и ресурс базы данных.
Затем можно получить экземпляр MilvusClient
с помощью внедрения зависимостей. Например, чтобы получить подключение из примера сервиса:
public class ExampleService(MilvusClient client)
{
// Use the Milvus Client...
}
Дополнительные сведения о внедрении зависимостей см. в .NET внедрение зависимостей.
Добавить клиент с идентификатором Milvus
Могут возникнуть ситуации, когда требуется зарегистрировать несколько экземпляров MilvusClient
с различными именами подключений. Чтобы зарегистрировать клиентов с ключами Milvus, вызовите метод AddKeyedMilvusClient.
builder.AddKeyedMilvusClient(name: "mainDb");
builder.AddKeyedMilvusClient(name: "loggingDb");
Важный
При использовании ключевых служб ожидается, что ресурс Milvus настраивает две именованные базы данных, одну для mainDb
и одну для loggingDb
.
Затем вы можете извлечь экземпляры MilvusClient
с помощью внедрения зависимостей. Например, чтобы получить подключение из примера сервиса:
public class ExampleService(
[FromKeyedServices("mainDb")] MilvusClient mainDbClient,
[FromKeyedServices("loggingDb")] MilvusClient loggingDbClient)
{
// Use clients...
}
Дополнительные сведения о ключевых службах см. в разделе .NET внедрение зависимостей: ключевые службы.
Конфигурация
Интеграция клиента .NET AspireMilvus предоставляет несколько вариантов настройки подключения к Milvus на основе требований и соглашений проекта.
Совет
Используется по умолчанию root
, а пароль по умолчанию — Milvus
. Для настройки другого пароля в контейнере Milvus см. раздел Обработка учетных данных и передача других параметров для ресурса Milvus. Используйте следующие методы, чтобы настроить использование клиентских приложений в решении .NET.NET Aspire с тем же паролем или другими параметрами.
Используйте строку подключения
При использовании строки подключения из раздела конфигурации ConnectionStrings
можно указать имя строки подключения при вызове builder.AddMilvusClient()
:
builder.AddMilvusClient("milvus");
Затем строка подключения будет извлечена из раздела конфигурации ConnectionStrings
:
{
"ConnectionStrings": {
"milvus": "Endpoint=http://localhost:19530/;Key=root:Non-default-P@ssw0rd"
}
}
По умолчанию MilvusClient
использует конечную точку API gRPC.
Использование поставщиков конфигураций
Интеграция клиента .NET AspireMilvus поддерживает Microsoft.Extensions.Configuration. Он загружает MilvusClientSettings из конфигурации, используя ключ Aspire:Milvus:Client
. Следующий фрагмент кода является примером appsettings.json, который настраивает некоторые параметры:
{
"Aspire": {
"Milvus": {
"Client": {
"Endpoint": "http://localhost:19530/",
"Database": "milvusdb",
"Key": "root:Non-default-P@ssw0rd",
"DisableHealthChecks": false
}
}
}
}
Для полной схемы интеграции клиента MilvusJSON смотрите Aspire.Milvus.Client/ConfigurationSchema.json.
Использование встроенных делегатов
Кроме того, можно передать делегат Action<MilvusSettings> configureSettings
, чтобы настроить некоторые или все встроенные параметры, например задать ключ API из кода:
builder.AddMilvusClient(
"milvus",
static settings => settings.Key = "root:Non-default-P@ssw0rd");
Client проверки работоспособности интеграции
По умолчанию .NET.NET Aspire интеграции позволяют проверки работоспособности для всех служб. Дополнительные сведения см. в обзоре интеграции .NET.NET Aspire.
Интеграция базы данных .NET AspireMilvus:
- Добавляет проверку работоспособности, когда MilvusClientSettings.DisableHealthChecks равен
false
, которая пытается подключиться к серверу Milvus. - Использует настроенный клиент для выполнения
HealthAsync
. Если результат является положительным, проверка состояния считается успешной, в противном случае она считается неуспешной. Аналогичным образом, если существует исключение, проверка работоспособности считается неработоспособной с ошибкой, распространяющейся через сбой проверки работоспособности.
Наблюдаемость и телеметрия
.NET
.NET Aspire интеграции автоматически настраивают конфигурации логирования, трассировки и метрик, которые иногда называются столпами наблюдаемости. Дополнительные сведения об наблюдаемости интеграции и телеметрии см. в .NET.NET Aspire обзоре интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации
Лесозаготовка
Интеграция базы данных .NET AspireMilvus использует стандартное ведение журнала .NET, и вы увидите записи журнала из следующей категории:
Milvus.Client
Трассировка
Интеграция базы данных .NET AspireMilvus в настоящее время не осуществляет трассировку, так как она не поддерживается библиотекой Milvus.Client
.
Метрика
Интеграция базы данных .NET AspireMilvus в настоящее время не выдает метрики, так как они не поддерживаются библиотекой Milvus.Client
.
См. также
.NET Aspire