Integrace .NET.NET Aspire Qdrant
zahrnuje: integraci hostování a
Client integraci
Qdrant je opensourcový vyhledávací modul pro vektorové podobnosti, který efektivně ukládá, indexuje a prohledává rozsáhlá vektorová data. Běžně se používá v aplikacích strojového učení, umělé inteligence a datových věd.
Vektorová data kódují informace jako matematické vektory, což jsou pole čísel nebo souřadnic. Systémy strojového učení a umělé inteligence často používají vektory k reprezentaci nestrukturovaných objektů, jako jsou obrázky, text, zvuk nebo video. Každá dimenze vektoru popisuje specifickou charakteristiku objektu. Díky jejich porovnání můžou systémy klasifikovat, vyhledávat a identifikovat clustery objektů.
V tomto článku se dozvíte, jak používat integraci .NET.NET Aspire Qdrant. Integrace .NET.NET Aspire Qdrant umožňuje připojit se k existujícím databázím Qdrant nebo vytvořit nové instance s qdrant/qdrant
obrazem kontejneru.
Integrace hostování
Integrace hostování Qdrant modeluje server jako typ QdrantServerResource. Pokud chcete získat přístup k tomuto typu a rozhraním API, přidejte balíček NuGet 📦Aspire.Hosting.Qdrant do projektu hostování aplikace .
dotnet add package Aspire.Hosting.Qdrant
Další informace najdete v tématu dotnet add package nebo Správa závislostí balíčků v aplikacích .NET.
Přidejte prostředek Qdrant
V projektu hostitele aplikace zavolejte AddQdrant, abyste přidali a vrátili nástroj pro tvorbu prostředků 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...
Poznámka
Kontejner Qdrant může být pomalý, takže je nejlepší použít trvalou dobu životnosti, abyste se vyhnuli zbytečným restartům. Další informace najdete v části Životnost prostředků kontejneru.
Když .NET.NET Aspire přidá do hostitele aplikace obraz kontejneru, jak je znázorněno v předchozím příkladu s obrazem qdrant/qdrant
, vytvoří to novou instanci Qdrantu na vašem místním počítači. Prostředek je pojmenován qdrant
a poté přidán do ExampleProject
.
Metoda WithReference nakonfiguruje připojení v ExampleProject
s názvem qdrant
.
Tip
Pokud byste se raději připojili k existujícímu serveru Qdrant, volejte místo toho AddConnectionString. Další informace naleznete v tématu Odkaz na existující prostředky.
Spropitné
Image kontejneru qdrant/qdrant
obsahuje webové uživatelské rozhraní, které můžete použít k prozkoumání vektorů a správě databáze. Pokud chcete získat přístup k tomuto nástroji, spusťte řešení .NET Aspire a potom na řídicím panelu .NET Aspire vyberte koncový bod prostředku Qdrant. V adresní řádku prohlížeče připojte /dashboard a stiskněte Enter.
Zpracování klíčů rozhraní API a předávání dalších parametrů pro prostředek Qdrant
Pokud se chcete připojit ke Qdrantu, musí klient předat správný klíč rozhraní API. Když ve výše uvedeném kódu .NET.NET Aspire přidá do vašeho řešení prostředek Qdrant, nastaví klíč rozhraní API na náhodný řetězec. Pokud chcete místo toho použít konkrétní klíč rozhraní API, můžete ho předat jako parametr apiKey
:
var apiKey = builder.AddParameter("apiKey", secret: true);
var qdrant = builder.AddQdrant("qdrant", apiKey);
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant);
Qdrant podporuje nastavení výchozích klíčů API na základě konfigurace pomocí proměnné prostředí QDRANT__SERVICE__API_KEY
.
Předchozí kód získá parametr, který se předá rozhraní API AddQdrant
, a interně přiřadí tento parametr proměnné prostředí QDRANT__SERVICE__API_KEY
v kontejneru Qdrant. Parametr apiKey
je obvykle určen jako tajný kód uživatele:
{
"Parameters": {
"apiKey": "Non-default-P@ssw0rd"
}
}
Další informace naleznete v tématu Externí parametry.
Přidejte zdroj Qdrant s datovým svazkem
Pokud chcete přidat datový objem do zdroje Qdrant, zavolejte rozšiřující metodu 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...
Objem dat se používá k uchování dat Qdrant mimo životní cyklus kontejneru. Datový svazek se připojí k cestě /qdrant/storage
v kontejneru Qdrant a pokud není zadaný parametr name
, název se náhodně vygeneruje. Další informace o datových svazcích a podrobnostech o tom, proč se upřednostňují před bind mounts, najdete v Docker dokumentaci: Svazky.
Přidejte prostředek Qdrant s připojením pro vazbu dat
Pokud chcete k prostředku Qdrant přidat datovou vazbu, zavolejte metodu 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...
Důležitý
Připojení vazby dat mají v porovnání s svazkyomezené funkce, které nabízejí lepší výkon, přenositelnost a zabezpečení, což je vhodnější pro produkční prostředí. Bind mounty umožňují přímý přístup a úpravy souborů na hostiteli, což je ideální pro vývoj a testování, kde jsou potřeba změny v reálném čase.
Datová přiřazení využívají systém souborů hostitelského počítače k zachování dat Qdrant při restartu kontejneru. Připojení datového úložiště je namontováno ve složce C:\Qdrant\Data
ve Windows (nebo ve složce /Qdrant/Data
na Unix) na hostitelském počítači v kontejneru Qdrant. Další informace o připojeních datových vazeb najdete v dokumentaci Docker: Připojení vazby.
Hostování kontrol stavu integrace
Integrace hostování Qdrant automaticky přidává kontrolu stavu pro prostředek Qdrant. Kontrola stavu ověřuje, že je Qdrant spuštěný a že se k němu dá navázat připojení.
Client integrace
Pokud chcete začít s integrací klienta .NET.NET Aspire Qdrant, nainstalujte balíček NuGet 📦Aspire.Qdrant.Client v projektu spotřebovávajícího klienta, tj. projektu aplikace, která využívá klienta Qdrant. Integrace klienta Qdrant zaregistruje Qdrant.Client. QdrantClient instanci, kterou můžete použít k interakci s daty vektoru Qdrant.
dotnet add package Aspire.Qdrant.Client
Přidání klienta Qdrant
V souboru Program.cs projektu, který využívá klienta, zavolejte rozšiřující metodu AddQdrantClient na libovolné IHostApplicationBuilder a zaregistrujte QdrantClient
pro použití prostřednictvím kontejneru pro vkládání závislostí. Metoda přebírá parametr názvu připojení.
builder.AddQdrantClient("qdrant");
Rada
Parametr connectionName
se musí shodovat s názvem použitým při přidávání prostředku Qdrant do hostitelského projektu aplikace. Jinými slovy, když voláte AddQdrant
a zadáte název qdrant
, ten samý název by měl být použit při volání AddQdrantClient
. Další informace najdete v části Přidat prostředek Qdrant.
Poté můžete načíst instanci QdrantClient
pomocí injektování závislostí. Například pro načtení připojení z ukázkové služby:
public class ExampleService(QdrantClient client)
{
// Use client...
}
Další informace o injektáži závislostí najdete v tématu .NET injektáž závislostí.
Přidání klienta Qdrantu s klíči
Mohou nastat situace, kdy chcete zaregistrovat více instancí QdrantClient
s různými názvy připojení. Pokud chcete zaregistrovat klienty Qdrantu s klíči, zavolejte metodu AddKeyedQdrantClient:
builder.AddKeyedQdrantClient(name: "mainQdrant");
builder.AddKeyedQdrantClient(name: "loggingQdrant");
Pak můžete instance QdrantClient
načíst pomocí injektování závislostí. Chcete-li například získat spojení z ukázkové služby:
public class ExampleService(
[FromKeyedServices("mainQdrant")] QdrantClient mainQdrantClient,
[FromKeyedServices("loggingQdrant")] QdrantClient loggingQdrantClient)
{
// Use clients...
}
Další informace o klíčovaných službách najdete v tématu .NET injektování závislostí: Klíčované služby.
Konfigurace
Integrace klienta .NET.NET Aspire Qdrant nabízí několik možností konfigurace připojení k Qdrantu na základě požadavků a konvencí projektu.
Použijte připojovací řetězec
Při použití připojovacího řetězce z oddílu konfigurace ConnectionStrings
můžete při volání builder.AddQdrantClient()
zadat název připojovacího řetězce:
builder.AddQdrantClient("qdrant");
Potom .NET.NET Aspire načte připojovací řetězec z konfigurační sekce ConnectionStrings
.
{
"ConnectionStrings": {
"qdrant": "Endpoint=http://localhost:6334;Key=123456!@#$%"
}
}
Ve výchozím nastavení QdrantClient
používá koncový bod rozhraní API gRPC.
Použití zprostředkovatelů konfigurace
Integrace klienta .NET.NET Aspire Qdrant podporuje Microsoft.Extensions.Configuration. Načte QdrantClientSettings z konfigurace pomocí klíče Aspire:Qdrant:Client
. Následuje příklad appsettings.json, který konfiguruje některé z možností:
{
"Aspire": {
"Qdrant": {
"Client": {
"Endpoint": "http://localhost:6334/",
"Key": "123456!@#$%"
}
}
}
}
Kompletní schéma integrace klienta Qdrant JSON viz Aspire. Qdrant.Client/ConfigurationSchema.json.
Použití vložených delegátů
Můžete také předat delegáta Action<QdrantClientSettings> configureSettings
pro nastavení některých nebo všech možností přímo, například nastavit klíč rozhraní API přímo v kódu.
builder.AddQdrantClient(
"qdrant",
settings => settings.Key = "12345!@#$%");
Client kontroly stavu integrace
Integrace .NET.NET Aspire umožňují ve výchozím nastavení kontroly stavu pro všechny služby. Další informace naleznete v tématu o přehledu integrací .NET.NET Aspire.
Pozorovatelnost a telemetrie
.NET .NET Aspire integrace automaticky nastaví konfigurace pro protokolování, trasování a metriky, které se někdy označují jako pilíře pozorovatelnosti. Další informace o pozorovatelnosti a telemetrii integrace najdete v přehledu integrace .NET.NET Aspire. V závislosti na zálohovací službě můžou některé integrace podporovat pouze některé z těchto funkcí. Například některé integrace podporují protokolování a trasování, ale ne metriky. Funkce telemetrie je také možné zakázat pomocí technik uvedených v části Konfigurace.
Protokolování
Integrace .NET Aspire Qdrant používá standardní protokolování .NET a uvidíte položky protokolu z následující kategorie:
Qdrant.Client
Trasování
Integrace .NET.NET Aspire Qdrant v současné době negeneruje aktivity trasování, protože je knihovna Qdrant.Client
nepodporuje.
Metriky
Integrace .NET.NET Aspire Qdrant v současné době negeneruje metriky, protože je knihovna Qdrant.Client
nepodporuje.