Aracılığıyla paylaş


Qdrant tümleştirmesi .NET.NET Aspire

Içerir: Barındırma tümleştirmesi ve Client tümleştirmesi

Qdrant, büyük ölçekli vektör verilerini verimli bir şekilde depolayan, dizinleyen ve arayan açık kaynak vektör benzerliği arama altyapısıdır. Makine öğrenmesi, yapay zeka ve veri bilimi uygulamalarında yaygın olarak kullanılır.

Vektör verileri, bilgileri sayı dizileri veya koordinatlar olan matematiksel vektörler olarak kodlar. Makine öğrenmesi ve yapay zeka sistemleri genellikle görüntüler, metin, ses veya video gibi yapılandırılmamış nesneleri temsil etmek için vektörleri kullanır. Vektördeki her boyut nesnenin belirli bir özelliğini açıklar. Sistemler bunları karşılaştırarak nesne kümelerini sınıflandırabilir, arayabilir ve tanımlayabilir.

Bu makalede, .NET.NET Aspire Qdrant tümleştirmesini kullanmayı öğreneceksiniz. .NET .NET Aspire Qdrant tümleştirmesi, mevcut Qdrant veritabanlarına bağlanmanıza veya qdrant/qdrant kapsayıcı görüntüsüyeni örnekler oluşturmanıza olanak tanır.

Barındırma entegrasyonu

Qdrant barındırma entegrasyonu, sunucuyu QdrantServerResource türü olarak modeller. Bu türe ve API'lere erişmek için, 📦 projesinde Aspire.Hosting.Qdrant NuGet paketini ekleyin.

dotnet add package Aspire.Hosting.Qdrant

Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.

Qdrant kaynağı ekleme

Uygulama ana bilgisayar projenizde, Qdrant kaynak oluşturucuyu eklemek ve geri döndürmek için AddQdrant fonksiyonunu çağırın.

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...

Not

Qdrant kapsayıcısının başlatılması yavaş olabilir, bu nedenle gereksiz yeniden başlatmaları önlemek için kalıcı ömrü kullanmak en iyisidir. Daha fazla bilgi için bkz. kapsayıcı kaynak ömrü.

.NET .NET Aspire, qdrant/qdrant görüntüsüyle önceki örnekte gösterildiği gibi uygulama konağına bir kapsayıcı görüntüsü eklediğinde, yerel makinenizde yeni bir Qdrant örneği oluşturur. Kaynağa qdrant adı verilir ve ExampleProject'e eklenir.

WithReference yöntemi, ExampleProject'de qdrantadlı bir bağlantı yapılandırıyor.

Bahşiş

Mevcut bir Qdrant sunucusuna bağlanmayı tercih ederseniz bunun yerine AddConnectionString'ı çağırın. Daha fazla bilgi için bkz. Var olan kaynaklara başvurma.

Bahşiş

qdrant/qdrant kapsayıcı görüntüsü, vektörlerinizi keşfetmek ve veritabanını yönetmek için kullanabileceğiniz bir web kullanıcı arabirimi içerir. Bu aracýya erişmek için .NET Aspire çözümünüzü başlatın ve .NET Aspire panosunda Qdrant kaynağının uç noktasını seçin. Tarayıcınızın adres çubuğuna /dashboard ekleyin ve Entertuşuna basın.

API anahtarlarını işleme ve Qdrant kaynağı için diğer parametreleri geçirme

Qdrant'a bağlanmak için bir istemcinin doğru API anahtarını geçirmesi gerekir. Yukarıdaki kodda, .NET.NET Aspire çözümünüze bir Qdrant kaynağı eklediğinde API anahtarını rastgele bir dizeye ayarlar. Bunun yerine belirli bir API anahtarı kullanmak istiyorsanız, bunu bir apiKey parametresi olarak geçirebilirsiniz:

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

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

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

Qdrant, QDRANT__SERVICE__API_KEYortam değişkenini kullanarak yapılandırma tabanlı varsayılan API anahtarlarını destekler.

Yukarıdaki kod, AddQdrant API'sine geçirmek için bir parametre alır ve parametresini dahili olarak Qdrant kapsayıcısının QDRANT__SERVICE__API_KEY ortam değişkenine atar. apiKey parametresi genellikle kullanıcı gizli dizisiolarak belirtilir:

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

Daha fazla bilgi için bkz. dış parametreleri.

Qdrant kaynağını veri hacmiyle ekle

Qdrant kaynağına veri birimi eklemek için WithDataVolume uzantısı yöntemini çağırın:

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...

Veri hacmi, Qdrant verilerini kapsayıcısının yaşam döngüsü dışında kalıcı hale getirmek için kullanılır. Veri birimi, Qdrant kapsayıcısının /qdrant/storage yoluna bağlanır ve name parametresi sağlanmazsa ad rastgele oluşturulur. Veri hacimleri ve bağlama noktalarına neden tercih edildiklerine ilişkin ayrıntılar hakkında daha fazla bilgi için bkz.: belgeler: Hacimler.

Veri bağlama noktası ile Qdrant kaynağı ekleme

Qdrant kaynağına veri bağlaması noktası eklemek için WithDataBindMount yöntemini çağırın.

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...

Önemli

Veri bağlama bağlamaları, daha iyi performans, taşınabilirlik ve güvenlik sunanbirimleriyle karşılaştırıldığında sınırlı işlevselliğe sahiptir ve bu da üretim ortamları için daha uygun olmasını sağlar. Ancak bağlantı bağlamaları, gerçek zamanlı değişikliklerin gerekli olduğu geliştirme ve test için ideal olan ana bilgisayar sistemindeki dosyalara doğrudan erişim ve değişiklik yapılmasına olanak tanır.

Veri bağlama noktaları, kapsayıcı yeniden başlatıldığında Qdrant verilerini kalıcı hale getirmek için konak makine dosya sistemini kullanır. Veri bağlama yuvası, Qdrant kapsayıcısında konak makinede Windows üzerindeki C:\Qdrant\Data klasörüne (veya /Qdrant/Data üzerindeki Unix'ye) bağlanır. Veri bağlama montajları hakkında daha fazla bilgi için bkz. Docker belgeleri: Bağlama montajları.

Barındırma entegrasyonu sağlık kontrolleri

Qdrant barındırma tümleştirmesi, Qdrant kaynağı için otomatik olarak bir sistem durumu denetimi ekler. Sistem durumu denetimi Qdrant'ın çalıştığını ve bağlantı kurulabileceğini doğrular.

Client tümleştirmesi

.NET .NET Aspire Qdrant istemci tümleştirmesine başlamak için, Qdrant istemcisini kullanan uygulama projenize 📦AspireQdrantClient NuGet paketini yükleyin. Qdrant istemci tümleştirmesi bir Qdrant veClientQdrantClient örneğini kaydeder, bu sayede Qdrant vektör verileriyle etkileşime geçebilirsiniz.

dotnet add package Aspire.Qdrant.Client

Qdrant istemcisi ekleyin

İstemci kullanan projenizin Program.cs dosyasında, bir AddQdrantClient'ü bağımlılık enjeksiyon kapsayıcısı aracılığıyla kullanıma almak için herhangi bir IHostApplicationBuilder üzerindeki QdrantClient genişletme yöntemini çağırın. yöntemi bir bağlantı adı parametresi alır.

builder.AddQdrantClient("qdrant");

Bahşiş

connectionName parametresi, uygulama ana bilgisayar projesine Qdrant kaynağı eklenirken kullanılan adla eşleşmelidir. Başka bir deyişle, AddQdrant çağrıldığında, sağladığınız qdrant adı, AddQdrantClient çağrıldığında da aynı şekilde kullanılmalıdır. Daha fazla bilgi için bkz: Qdrant kaynağını ekleyin.

Daha sonra bağımlılık ekleme kullanarak QdrantClient örneğini alabilirsiniz. Örneğin, bağlantıyı örnek bir hizmetten almak için:

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

Bağımlılık ekleme hakkında daha fazla bilgi için bkz. .NET bağımlılık ekleme.

Anahtarlı Qdrant istemcisi ekleme

Farklı bağlantı adlarına sahip birden çok QdrantClient örneğini kaydetmek istediğiniz durumlar olabilir. Anahtarlı Qdrant istemcilerini kaydetmek için AddKeyedQdrantClient yöntemini çağırın:

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

Daha sonra bağımlılık ekleme kullanarak QdrantClient örneklerini alabilirsiniz. Örneğin, örnek bir hizmetten bağlantıları almak için:

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

Anahtarlı hizmetler hakkında daha fazla bilgi için bkz. .NET bağımlılık ekleme: Anahtarlı hizmetler.

Konfigürasyon

.NET .NET Aspire Qdrant istemci tümleştirmesi, projenizin gereksinimlerine ve kurallarına göre Qdrant bağlantısını yapılandırmak için birden çok seçenek sağlar.

Bağlantı dizesi kullanma

ConnectionStrings yapılandırma bölümünden bir bağlantı dizesi kullanırken, builder.AddQdrantClient()çağırırken bağlantı dizesinin adını sağlayabilirsiniz:

builder.AddQdrantClient("qdrant");

Ardından .NET.NET Aspire bağlantı dizesini ConnectionStrings yapılandırma bölümünden alır:

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

varsayılan olarak QdrantClient gRPC API uç noktasını kullanır.

Yapılandırma sağlayıcılarını kullanma

.NET .NET Aspire Qdrant istemci tümleştirmesi, Microsoft.Extensions.Configuration'yi destekler. QdrantClientSettings öğesini Aspire:Qdrant:Client anahtarını kullanarak yapılandırmadan yükler. Aşağıda, bazı seçenekleri yapılandıran bir appsettings.json örneği verilmiştir:

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

Qdrant istemci tümleştirmesi JSON şeması için bkz. Aspire. Qdrant.Client/ConfigurationSchema.json.

Satır içi temsilcileri kullanın

Ayrıca, bazı veya tüm ayarları satır içinde yapabilmek için Action<QdrantClientSettings> configureSettings temsilcisini de kullanabilirsiniz; örneğin, koddan API anahtarını ayarlamak için.

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

Client entegrasyon sağlık kontrolleri

Varsayılan olarak, .NET.NET Aspire tümleştirmeleri tüm hizmetler için sistem durumu denetimleri etkinleştirir. Daha fazla bilgi için bkz. .NET.NET Aspire tümleştirmelere genel bakış.

Gözlemlenebilirlik ve telemetri

.NET .NET Aspire tümleştirmeleri, bazen gözlemlenebilirliğin temel unsurları olarak bilinen Günlük, İzleme ve Ölçümleme yapılandırmalarını otomatik olarak ayarlar. Tümleştirme gözlemlenebilirliği ve telemetri hakkında daha fazla bilgi için bkz. tümleştirmelere genel bakış. Yedekleme hizmetine bağlı olarak, bazı tümleştirmeler bu özelliklerden yalnızca bazılarını destekleyemeyebilir. Örneğin, bazı tümleştirmeler günlüğe kaydetmeyi ve takip etmeyi destekler, ancak ölçümleri desteklemez. Telemetri özellikleri, Yapılandırma bölümünde sunulan teknikler kullanılarak da devre dışı bırakılabilir.

Kayıt tutma

.NET Aspire Qdrant tümleştirmesi standart .NET günlüğü kullanır ve aşağıdaki kategorideki günlük girdilerini görürsünüz:

  • Qdrant.Client

İzleme

.NET .NET Aspire Qdrant tümleştirmesi, şu an için Qdrant.Client kitaplığı tarafından desteklenmediğinden izleme etkinlikleri yaymaz.

Ölçüm

.NET .NET Aspire Qdrant tümleştirmesi, şu anda Qdrant.Client kitaplığı tarafından desteklenmediğinden ölçümleri iletmez.

Ayrıca bkz.