ExpandVectorStore.Qdrant
1.0.3
dotnet add package ExpandVectorStore.Qdrant --version 1.0.3
NuGet\Install-Package ExpandVectorStore.Qdrant -Version 1.0.3
<PackageReference Include="ExpandVectorStore.Qdrant" Version="1.0.3" />
<PackageVersion Include="ExpandVectorStore.Qdrant" Version="1.0.3" />
<PackageReference Include="ExpandVectorStore.Qdrant" />
paket add ExpandVectorStore.Qdrant --version 1.0.3
#r "nuget: ExpandVectorStore.Qdrant, 1.0.3"
#:package ExpandVectorStore.Qdrant@1.0.3
#addin nuget:?package=ExpandVectorStore.Qdrant&version=1.0.3
#tool nuget:?package=ExpandVectorStore.Qdrant&version=1.0.3
ExpandVectorStore.Qdrant
Qdrant vector store provider for Microsoft.Extensions.VectorData.
This package lets you use Qdrant through the standard VectorStore and VectorStoreCollection<TKey, TRecord> abstractions. It is intended for RAG, semantic search, and applications that already use Microsoft.Extensions.AI embeddings.
Features
- Create, delete, list, and open Qdrant collections.
- Upsert, retrieve, delete, scroll, and vector search records.
- Translate common LINQ filters to Qdrant filters for scroll and vector search.
- Map records from
VectorStoreKey,VectorStoreData, andVectorStoreVectorattributes. - Use dynamic dictionary records with
VectorStoreCollectionDefinition. - Serialize common payload values, including strings, numbers, booleans,
Guid,DateTime,DateTimeOffset,DateOnly, arrays, and lists. - Use
ReadOnlyMemory<float>,float[], orEmbedding<float>for vectors.
Install
dotnet add package ExpandVectorStore.Qdrant
Quick start
using ExpandVectorStore.Qdrant;
using Microsoft.Extensions.VectorData;
var store = new QdrantVectorStore("localhost");
var collection = store.GetCollection<ulong, Product>("products");
await collection.EnsureCollectionExistsAsync();
await collection.UpsertAsync(new Product
{
Id = 1,
Name = "Notebook",
Description = "A compact notebook for meeting notes.",
Vector = embedding.Vector
});
await foreach (var result in collection.SearchAsync(queryEmbedding.Vector, top: 3))
{
Console.WriteLine($"{result.Record.Name}: {result.Score}");
}
string[] ids = ["1", "2", "3"];
Product[] selected = await collection
.GetAsync(product => ids.Contains(product.DataId), top: 100)
.ToArrayAsync();
public sealed class Product
{
[VectorStoreKey]
public ulong Id { get; set; }
[VectorStoreData]
public string DataId { get; set; } = string.Empty;
[VectorStoreData]
public string Name { get; set; } = string.Empty;
[VectorStoreData]
public string Description { get; set; } = string.Empty;
[VectorStoreVector(1536, DistanceFunction = DistanceFunction.CosineSimilarity)]
public ReadOnlyMemory<float> Vector { get; set; }
}
LINQ filters
The provider translates common expressions into Qdrant filters:
- Boolean logic:
&&,||, and!. - Comparisons:
==,!=,>,>=,<, and<=. - Batch membership:
ids.Contains(record.DataId). - Point id membership when the filtered property is
[VectorStoreKey]. - Text matching:
record.Description.Contains("notebook"). - Null checks:
record.OptionalValue == nullandrecord.OptionalValue != null.
The same filter translation is used by GetAsync(filter, top, ...) and SearchAsync(vector, top, new VectorSearchOptions<TRecord> { Filter = ... }).
Connection options
Use an existing Qdrant.Client.QdrantClient when your application owns client configuration:
using ExpandVectorStore.Qdrant;
using Qdrant.Client;
var qdrantClient = new QdrantClient("localhost", port: 6334);
var store = new QdrantVectorStore(qdrantClient);
Or let the store create and own the client:
var store = new QdrantVectorStore(
host: "localhost",
port: 6334,
https: false,
apiKey: "<api-key>");
Current limitations
- One unnamed vector property per record is supported.
OrderByexpression translation is not implemented yet.- Filters cannot be applied to vector properties.
- Qdrant point keys support
Guid, GUID strings, and non-negative integer key types.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.AI.OpenAI (>= 10.7.0)
- Microsoft.Extensions.VectorData.Abstractions (>= 10.7.0)
- Qdrant.Client (>= 1.18.1)
-
.NETStandard 2.1
- Microsoft.Extensions.AI.OpenAI (>= 10.7.0)
- Microsoft.Extensions.VectorData.Abstractions (>= 10.7.0)
- Qdrant.Client (>= 1.18.1)
-
net10.0
- Microsoft.Extensions.AI.OpenAI (>= 10.7.0)
- Microsoft.Extensions.VectorData.Abstractions (>= 10.7.0)
- Qdrant.Client (>= 1.18.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.