Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Qdrant är en sökmotor för vektorlikhet med öppen källkod som effektivt lagrar, indexerar och söker efter storskaliga vektordata. Det används ofta i maskininlärning, artificiell intelligens och datavetenskapsprogram.
Vektordata kodar information som matematiska vektorer, som är matriser med tal eller koordinater. Maskininlärnings- och AI-system använder ofta vektorer för att representera ostrukturerade objekt som bilder, text, ljud eller video. Varje dimension i vektorn beskriver en specifik egenskap hos objektet. Genom att jämföra dem kan system klassificera, söka efter och identifiera kluster av objekt.
I den här artikeln får du lära dig hur du använder Qdrant-integreringen Aspire . Med Aspire Qdrant-integreringen kan du ansluta till befintliga Qdrant-databaser eller skapa nya instanser med containeravbildningenqdrant/qdrant.
Värdintegrering
Qdrant-värdintegrering modellerar servern som QdrantServerResource-typ. Om du vill komma åt den här typen och API:er lägger du till 📦Aspire. Hosting.Qdrant NuGet-paketet i AppHost-projektet .
dotnet add package Aspire.Hosting.Qdrant
Mer information finns i dotnet add package eller Hantera paketberoenden i .NET-applikationer.
Lägg till Qdrant-resurs
I ditt AppHost-projekt anropar du AddQdrant för att lägga till och returnera en Qdrant-resursbyggare.
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...
Anteckning
Qdrant-containern kan vara långsam att starta, så det är bäst att använda en beständig livslängd för att undvika onödiga omstarter. Mer information finns i Containerresursens livslängd.
När Aspire lägger till en containeravbildning i AppHost, enligt föregående exempel med avbildningen qdrant/qdrant, skapas en ny Qdrant-instans på den lokala datorn. Resursen heter qdrant och läggs sedan till i ExampleProject.
Metoden WithReference konfigurerar en anslutning i ExampleProject med namnet qdrant.
Tips
Om du hellre vill ansluta till en befintlig Qdrant-server anropar du AddConnectionString i stället. Mer information finns i Referera till befintliga resurser.
Tips
Den qdrant/qdrant containeravbildningen innehåller ett webbgränssnitt som du kan använda för att utforska dina vektorer och administrera databasen. Om du vill komma åt det här verktyget startar du din Aspire-lösning och väljer sedan slutpunkten för Qdrant-resursen i Aspire instrumentpanel. I webbläsarens adressfält lägger du till /instrumentpanelen och trycker på Retur.
Hantera API-nycklar och skicka andra parametrar för Qdrant-resursen
För att ansluta till Qdrant måste en klient skicka rätt API-nyckel. I koden ovan, när Aspire du lägger till en Qdrant-resurs i din lösning, anger den API-nyckeln till en slumpmässig sträng. Om du vill använda en specifik API-nyckel i stället kan du skicka den som en apiKey parameter:
var apiKey = builder.AddParameter("apiKey", secret: true);
var qdrant = builder.AddQdrant("qdrant", apiKey);
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant);
Qdrant stöder konfigurationsbaserade standard-API-nycklar med hjälp av miljövariabeln QDRANT__SERVICE__API_KEY.
Föregående kod hämtar en parameter för att skicka till AddQdrant-API:et och tilldelar internt parametern till QDRANT__SERVICE__API_KEY miljövariabeln för Qdrant-containern. Parametern apiKey anges vanligtvis som en användarhemlighet:
{
"Parameters": {
"apiKey": "Non-default-P@ssw0rd"
}
}
Mer information finns i externa parametrar.
Lägga till Qdrant-resurs med datavolym
Om du vill lägga till en datavolym i Qdrant-resursen anropar du metoden WithDataVolume-tillägg:
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...
Datavolymen används för att bevara Qdrant-data utanför livscykeln för containern. Datamängden monteras på sökvägen /qdrant/storage i Qdrant-containern och när en name-parameter inte anges genereras namnet slumpmässigt. För mer information om datavolymer och varför de föredras framför bindningsmonteringar , se dokumentationen Docker: Volymer.
Lägg till Qdrant-resurs med databindningsmontering
Om du vill lägga till en databindningsmontering till Qdrant-resursen anropar du metoden 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...
Viktig
Data bind mounts har begränsade funktioner jämfört med volymer, som ger bättre prestanda, portabilitet och säkerhet, därför är de mer lämpliga för produktionsmiljöer. Bindningsmonteringar tillåter dock direkt åtkomst och ändring av filer i värdsystemet, perfekt för utveckling och testning där realtidsändringar behövs.
Databindningar förlitar sig på värdmaskinens filsystem för att bevara Qdrant-data vid omstart av container. Databindningsmonteringen monteras i mappen C:\Qdrant\Data i Windows (eller /Qdrant/Data på Unix) på värddatorn i Qdrant-containern. För mer information om databindningar, se Docker dokumentation: Bindmonteringar.
Genomförande av hälsokontroller för integration
Integrering av värdtjänst med Qdrant lägger automatiskt till en hälsokontroll för Qdrant-resursen. Hälsokontrollen verifierar att Qdrant körs och att en anslutning kan upprättas till den.
Client integration
Kom igång med Aspire Qdrant-klientintegrering genom att 📦Aspireinstallera . Qdrant.Client NuGet-paketet i det klientkrävande projektet, dvs. projektet för programmet som använder Qdrant-klienten. Qdrant-klientintegrering registrerar en Qdrant.Client. QdrantClient instans som du kan använda för att interagera med Qdrant-vektordata.
dotnet add package Aspire.Qdrant.Client
Lägga till en Qdrant-klient
I den Program.cs filen för ditt klientkrävande projekt anropar du AddQdrantClient-tilläggsmetoden på alla IHostApplicationBuilder för att registrera en QdrantClient för användning via containern för beroendeinmatning. Metoden tar en parameter för anslutningsnamn.
builder.AddQdrantClient("qdrant");
Tips
Parametern connectionName måste matcha namnet som användes när du lägger till Qdrant-resursen i AppHost-projektet. Med andra ord, när du anropar AddQdrant och anger ett namn på qdrant ska samma namn användas när du anropar AddQdrantClient. För mer information, se Lägg till Qdrant-resurs.
Du kan sedan hämta QdrantClient-instansen med hjälp av beroendeinjektion. Om du till exempel vill hämta anslutningen från en exempeltjänst:
public class ExampleService(QdrantClient client)
{
// Use client...
}
Mer information om beroendeinmatning finns i .NET beroendeinmatning.
Lägg till nyckelad Qdrant-klient
Det kan finnas situationer där du vill registrera flera QdrantClient instanser med olika anslutningsnamn. Om du vill registrera nyckelade Qdrant-klienter anropar du metoden AddKeyedQdrantClient:
builder.AddKeyedQdrantClient(name: "mainQdrant");
builder.AddKeyedQdrantClient(name: "loggingQdrant");
Sedan kan du hämta QdrantClient-instanser genom att använda beroendeinjektion. Om du till exempel vill hämta anslutningarna från en exempeltjänst:
public class ExampleService(
[FromKeyedServices("mainQdrant")] QdrantClient mainQdrantClient,
[FromKeyedServices("loggingQdrant")] QdrantClient loggingQdrantClient)
{
// Use clients...
}
Mer information om nyckelade tjänster finns i .NET beroendeinmatning: Nyckelade tjänster.
Konfiguration
Qdrant-klientintegrering Aspire innehåller flera alternativ för att konfigurera anslutningen till Qdrant baserat på kraven och konventionerna i ditt projekt.
Använda en anslutningssträng
När du använder en anslutningssträng från ConnectionStrings konfigurationsavsnittet kan du ange namnet på anslutningssträngen när du anropar builder.AddQdrantClient():
builder.AddQdrantClient("qdrant");
Hämtar sedan Aspire anslutningssträngen från konfigurationsavsnittet ConnectionStrings :
{
"ConnectionStrings": {
"qdrant": "Endpoint=http://localhost:6334;Key=123456!@#$%"
}
}
Som standard använder QdrantClient gRPC API-slutpunkten.
Använda konfigurationsprovidrar
Aspire Qdrant-klientintegrering stöder Microsoft.Extensions.Configuration. Den läser in QdrantClientSettings från konfigurationen med hjälp av Aspire:Qdrant:Client-nyckeln. Följande är ett exempel på en appsettings.json som konfigurerar några av alternativen:
{
"Aspire": {
"Qdrant": {
"Client": {
"Endpoint": "http://localhost:6334/",
"Key": "123456!@#$%"
}
}
}
}
Det fullständiga Qdrant-klientintegreringsschemat JSON finns i Aspire. Qdrant.Client/ConfigurationSchema.json.
Använd inline-delegater
Du kan också skicka Action<QdrantClientSettings> configureSettings delegering för att konfigurera några eller alla alternativ direkt, till exempel för att ange API-nyckeln i koden.
builder.AddQdrantClient(
"qdrant",
settings => settings.Key = "12345!@#$%");
Client hälsokontroller för integrering
Integreringar aktiverar som standard Aspirehälsokontroller för alla tjänster. Mer information finns i Aspire översikten över integreringar.
Observerbarhet och telemetri
Aspire integreringar konfigurerar automatiskt konfigurationer för loggning, spårning och mått, som ibland kallas grundpelarna för observerbarhet. Mer information om integreringsobservabilitet och telemetri finns i Aspire översikten över integreringar. Beroende på säkerhetskopieringstjänsten kanske vissa integreringar bara stöder vissa av dessa funktioner. Vissa integreringar stöder till exempel loggning och spårning, men inte mått. Telemetrifunktioner kan också inaktiveras med hjälp av de tekniker som visas i avsnittet Configuration.
Skogsavverkning
Aspire Qdrant-integreringen använder standardloggning .NET och du kommer att se loggningar från följande kategori:
Qdrant.Client
Spårning
Qdrant-integreringen Aspire genererar för närvarande inte spårningsaktiviteter eftersom de inte stöds av Qdrant.Client biblioteket.
Mått
Qdrant-integreringen Aspire genererar för närvarande inte mått eftersom de inte stöds av Qdrant.Client biblioteket.