Bagikan melalui


.NET .NET Aspire integrasi Qdrant

Meliputi: integrasi hosting dan integrasi Client

Qdrant adalah mesin pencari kesamaan vektor sumber terbuka yang secara efisien menyimpan, mengindeks, dan mencari data vektor skala besar. Ini umumnya digunakan dalam pembelajaran mesin, kecerdasan buatan, dan aplikasi ilmu data.

Data vektor mengodekan informasi sebagai vektor matematika, yang merupakan array angka atau koordinat. Pembelajaran mesin dan sistem AI sering menggunakan vektor untuk mewakili objek yang tidak terstruktur seperti gambar, teks, audio, atau video. Setiap dimensi dalam vektor menjelaskan karakteristik objek tertentu. Dengan membandingkannya, sistem dapat mengklasifikasikan, mencari, dan mengidentifikasi kluster objek.

Dalam artikel ini, Anda mempelajari cara menggunakan integrasi Qdrant .NET.NET Aspire. Integrasi Qdrant .NET.NET Aspire memungkinkan Anda menyambungkan ke database Qdrant yang ada atau membuat instans baru dengan gambar kontainer qdrant/qdrant.

Integrasi hosting

Integrasi hosting Qdrant memodelkan server sebagai jenis QdrantServerResource. Untuk mengakses jenis dan API ini, tambahkan 📦Aspire.Hosting.Qdrant paket NuGet dalam proyek host aplikasi .

dotnet add package Aspire.Hosting.Qdrant

Untuk informasi selengkapnya, lihat dotnet menambahkan paket atau Mengelola dependensi paket di aplikasi .NET.

Menambahkan sumber daya Qdrant

Di proyek host aplikasi Anda, panggil AddQdrant untuk menambahkan dan mengembalikan pembangun sumber daya 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...

Nota

Kontainer Qdrant bisa lambat saat memulai, jadi lebih baik menggunakan waktu aktif yang persisten untuk menghindari restart yang tidak perlu. Untuk informasi selengkapnya, lihat masa pakai sumber daya Kontainer.

Saat .NET.NET Aspire menambahkan gambar kontainer ke host aplikasi, seperti yang ditunjukkan dalam contoh sebelumnya dengan gambar qdrant/qdrant, gambar tersebut membuat instans Qdrant baru di komputer lokal Anda. Sumber daya diberi nama qdrant lalu ditambahkan ke ExampleProject.

Metode WithReference mengonfigurasi koneksi di ExampleProject bernama qdrant.

Kiat

Jika Anda lebih suka menyambungkan ke server Qdrant yang sudah ada, panggil AddConnectionString sebagai gantinya. Untuk informasi lebih lanjut, lihat referensi sumber daya yang tersedia.

Kiat

Gambar kontainer qdrant/qdrant menyertakan UI web yang dapat Anda gunakan untuk menjelajahi vektor Anda dan mengelola database. Untuk mengakses alat ini, mulai solusi .NET Aspire Anda lalu, di dasbor .NET Aspire, pilih titik akhir untuk sumber daya Qdrant. Di bilah alamat browser Anda, tambahkan /dashboard dan tekan Enter.

Menangani kunci API dan meneruskan parameter lain untuk sumber daya Qdrant

Untuk menyambungkan ke Qdrant, klien harus meneruskan kunci API yang tepat. Dalam kode di atas, ketika .NET.NET Aspire menambahkan sumber daya Qdrant ke solusi Anda, kode tersebut mengatur kunci API ke string acak. Jika Anda ingin menggunakan kunci API tertentu, Anda dapat meneruskannya sebagai parameter apiKey:

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

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

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

Qdrant mendukung kunci API default berbasis konfigurasi dengan menggunakan variabel lingkungan QDRANT__SERVICE__API_KEY.

Kode sebelumnya mendapatkan parameter untuk diteruskan ke API AddQdrant, dan secara internal menetapkan parameter ke variabel lingkungan QDRANT__SERVICE__API_KEY kontainer Qdrant. Parameter apiKey biasanya ditentukan sebagai rahasia pengguna :

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

Untuk informasi selengkapnya, lihat Parameter eksternal.

Tambahkan sumber daya Qdrant dengan volume data

Untuk menambahkan volume data ke sumber daya Qdrant, panggil metode ekstensi 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...

Volume data digunakan untuk mempertahankan data Qdrant di luar siklus hidup kontainernya. Volume data dipasang di jalur /qdrant/storage dalam kontainer Qdrant dan ketika parameter name tidak disediakan, nama dihasilkan secara acak. Untuk informasi lebih lanjut tentang volume data dan alasan mengapa volume lebih disukai dibandingkan pemasangan ikat , lihat dokumen : Volume.

Menambahkan sumber daya Qdrant dengan pemasangan ikatan data

Untuk menambah data bind mount ke dalam sumber daya Qdrant, panggil metode 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...

Penting

Pemasangan bind data memiliki fungsionalitas terbatas dibandingkan dengan volume, yang menawarkan performa, portabilitas, dan keamanan yang lebih baik, sehingga lebih cocok untuk lingkungan produksi. Namun, pemasangan ikat memungkinkan akses langsung dan modifikasi file pada sistem induk, ideal untuk pengembangan dan pengujian di mana perubahan waktu nyata diperlukan.

Data bind mount mengandalkan sistem file mesin host untuk mempertahankan data Qdrant selama restart kontainer. Pemasangan ikatan data dipasang di folder C:\Qdrant\Data di Windows (atau /Qdrant/Data pada Unix) pada komputer host di kontainer Qdrant. Untuk informasi selengkapnya tentang pemasangan ikatan data, lihat dokumen Docker: Pemasangan ikatan.

Menjalankan pemeriksaan kesehatan integrasi

Integrasi hosting Qdrant secara otomatis menambahkan pemeriksaan kesehatan untuk sumber daya Qdrant. Pemeriksaan kesehatan memverifikasi bahwa Qdrant berjalan dan bahwa koneksi dapat terjalin dengannya.

integrasi Client

Untuk mulai menggunakan integrasi klien Qdrant .NET.NET Aspire, instal 📦Aspire. Qdrant.Client paket NuGet dalam proyek yang mengonsumsi klien, yaitu proyek untuk aplikasi yang menggunakan klien Qdrant. Integrasi klien Qdrant mendaftarkan instans Qdrant.Client.QdrantClient yang dapat Anda gunakan untuk berinteraksi dengan data vektor Qdrant.

dotnet add package Aspire.Qdrant.Client

Menambahkan klien Qdrant

Dalam file Program.cs dari proyek yang menggunakan klien Anda, panggil metode ekstensi AddQdrantClient pada IHostApplicationBuilder apa pun untuk mendaftarkan QdrantClient agar dapat digunakan melalui kontainer injeksi dependensi. Metode ini mengambil parameter nama koneksi.

builder.AddQdrantClient("qdrant");

Kiat

Parameter connectionName harus cocok dengan nama yang digunakan saat menambahkan sumber daya Qdrant di proyek host aplikasi. Dengan kata lain, ketika Anda memanggil AddQdrant dan memberikan nama qdrant nama yang sama harus digunakan saat memanggil AddQdrantClient. Untuk informasi selengkapnya, lihat Tambah sumber daya Qdrant.

Anda kemudian dapat mengakses instans QdrantClient menggunakan teknik injeksi dependensi. Misalnya, untuk mengambil koneksi dari layanan contoh:

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

Untuk informasi lebih lanjut mengenai injeksi dependensi, lihat .NET injeksi dependensi.

Tambahkan klien Qdrant dengan kata kunci

Mungkin ada situasi di mana Anda ingin mendaftarkan beberapa instans QdrantClient dengan nama koneksi yang berbeda. Untuk mendaftarkan klien Qdrant yang telah diberi kunci, panggil metode AddKeyedQdrantClient:

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

Kemudian Anda dapat mengambil kembali instans QdrantClient menggunakan dependency injection. Misalnya, untuk mengambil koneksi dari layanan contoh:

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

Untuk informasi selengkapnya tentang layanan dengan kunci, lihat .NET injeksi dependensi: Layanan dengan kunci.

Konfigurasi

Integrasi klien .NET.NET Aspire Qdrant menyediakan beberapa opsi untuk mengonfigurasi koneksi ke Qdrant berdasarkan persyaratan dan konvensi proyek Anda.

Menggunakan string koneksi

Saat menggunakan string koneksi dari bagian konfigurasi ConnectionStrings, Anda dapat memberikan nama string koneksi saat memanggil builder.AddQdrantClient():

builder.AddQdrantClient("qdrant");

Kemudian .NET.NET Aspire mengambil string koneksi dari bagian konfigurasi ConnectionStrings:

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

Secara default, QdrantClient menggunakan titik akhir API gRPC.

Menggunakan penyedia konfigurasi

Integrasi klien .NET.NET Aspire Qdrant mendukung Microsoft.Extensions.Configuration. Ini memuat QdrantClientSettings dari konfigurasi dengan menggunakan kunci Aspire:Qdrant:Client. Berikut ini adalah contoh appsettings.json yang mengonfigurasi beberapa opsi:

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

Untuk skema JSON integrasi klien Qdrant lengkap, lihat Aspire. Qdrant.Client/ConfigurationSchema.json.

Menggunakan delegasi sebaris

Anda juga dapat meneruskan delegasi Action<QdrantClientSettings> configureSettings untuk menyiapkan beberapa atau semua opsi secara langsung. Misalnya, untuk mengatur kunci API dari dalam kode:

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

Client pemeriksaan kesehatan integrasi

Secara default, integrasi .NET.NET Aspire memungkinkan pemeriksaan kesehatan untuk semua layanan. Untuk informasi selengkapnya, lihat gambaran umum integrasi .NET.NET Aspire.

Pengamatan dan telemetri

.NET .NET Aspire integrasi secara otomatis menyiapkan konfigurasi Pengelogan, Pelacakan, dan Metrik, yang terkadang dikenal sebagai pilar pengamatan. Untuk informasi selengkapnya tentang pengamatan integrasi dan telemetri, lihat gambaran umum integrasi .NET.NET Aspire. Bergantung pada layanan pendukung, beberapa integrasi mungkin hanya mendukung beberapa fitur ini. Misalnya, beberapa integrasi mendukung pengelogan dan pelacakan, tetapi bukan metrik. Fitur telemetri juga dapat dinonaktifkan menggunakan teknik yang disajikan di bagian Konfigurasi .

Perekaman

Integrasi Qdrant .NET Aspire menggunakan pengelogan .NET standar, dan Anda akan melihat entri log dari kategori berikut:

  • Qdrant.Client

Menelusuri

Integrasi .NET.NET Aspire Qdrant saat ini tidak menghasilkan aktivitas pelacakan karena tidak didukung oleh pustaka Qdrant.Client.

Metrik

Integrasi Qdrant .NET.NET Aspire saat ini tidak memancarkan metrik karena tidak didukung oleh pustaka Qdrant.Client.

Lihat juga