Använda minnesintern anslutning (förhandsversion)
Varning
Funktionen Semantic Kernel Vector Store är i förhandsversion, och förbättringar som kräver icke-bakåtkompatibla ändringar kan fortfarande ske under begränsade omständigheter före lanseringen.
Översikt
Anslutningsappen för minnesintern vektorlagring är en Vector Store-implementering som tillhandahålls av semantisk kernel och som inte använder någon extern databas och lagrar data i minnet. Det här vektorarkivet är användbart för prototypscenarier eller där snabba minnesinterna åtgärder krävs.
Anslutningsappen har följande egenskaper.
Funktionsområde | Support |
---|---|
Samlingskartor till | Minnesintern ordlista |
Nyckelegenskapstyper som stöds | Alla typer som kan jämföras |
Dataegenskapstyper som stöds | Alla typer |
Egenskapstyper för vektorer som stöds | ReadOnlyMemory-flyttal<> |
Indextyper som stöds | Lägenhet |
Avståndsfunktioner som stöds |
|
Filtersatser som stöds |
|
Stöder flera vektorer i en post | Ja |
Stöds IsFilterable? | Ja |
Stöds IsFullTextSearchable? | Ja |
Stöds StoragePropertyName? | Nej, eftersom lagring är minnesinternt och återanvändning av data därför inte är möjligt är anpassad namngivning inte tillämpligt. |
Komma igång
Lägg till nuget-paketet Semantic Kernel Core i projektet.
dotnet add package Microsoft.SemanticKernel.Connectors.InMemory --prerelease
Du kan lägga till vektorlagret i den beroendeinmatningscontainer som är tillgänglig i containern KernelBuilder
eller till containern för IServiceCollection
beroendeinmatning med hjälp av tilläggsmetoder som tillhandahålls av semantisk kernel.
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder()
.AddInMemoryVectorStore();
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddInMemoryVectorStore();
Du kan skapa en InMemory Vector Store-instans direkt.
using Microsoft.SemanticKernel.Connectors.InMemory;
var vectorStore = new InMemoryVectorStore();
Det går att skapa en direktreferens till en namngiven samling.
using Microsoft.SemanticKernel.Connectors.InMemory;
var collection = new InMemoryVectorStoreRecordCollection<string, Hotel>("skhotels");
Nyckel- och vektoregenskapsökning
Som standard läser In-Memory Vector Store-anslutningsappen värdena för nycklar och vektorer med reflektion. Nycklarna och vektorerna antas vara direkta egenskaper för datamodellen.
Om en datamodell krävs som har en struktur där nycklar och vektorer inte är direkt egenskaper för datamodellen, är det möjligt att ange funktioner för att läsa värdena för dessa.
När du använder detta måste du också ange en VectorStoreRecordDefinition
så att information om vektordimensionens storlek och avståndsfunktionen kan kommuniceras till In-Memory vektorarkiv.
var collection = new InMemoryVectorStoreRecordCollection<string, MyDataModel>(
"mydata",
new()
{
VectorStoreRecordDefinition = vectorStoreRecordDefinition,
KeyResolver = (record) => record.Key,
VectorResolver = (vectorName, record) => record.Vectors[vectorName]
});
private class MyDataModel
{
public string Key { get; set; }
public Dictionary<string, ReadOnlyMemory<float>> Vectors { get; set; }
}
Översikt
Anslutningsappen för minnesintern vektorlagring är en Vector Store-implementering som tillhandahålls av semantisk kernel och som inte använder någon extern databas och lagrar data i minnet. Det här vektorarkivet är användbart för prototypscenarier eller där snabba minnesinterna åtgärder krävs.
Anslutningsappen har följande egenskaper.
Funktionsområde | Support |
---|---|
Samlingskartor till | Minnesintern ordlista |
Nyckelegenskapstyper som stöds | De som får användas som dict-nycklar, se Python-dokumentationen för detaljer här |
Dataegenskapstyper som stöds | Alla typer |
Egenskapstyper för vektorer som stöds | list[float | int] | numpy-matris |
Indextyper som stöds | Flat |
Avståndsfunktioner som stöds |
|
Stöder flera vektorer i en post | Ja |
is_filterable stöds? | Ja |
is_full_text_searchable stöds? | Ja |
Komma igång
Lägg till Semantic Kernel-paketet i projektet.
pip install semantic-kernel
Du kan skapa butiken och samlingarna därifrån eller skapa samlingarna direkt.
I kodfragmenten nedan antas det att du har en datamodellklass som har definierats med namnet "DataModel".
from semantic_kernel.connectors.memory.in_memory import InMemoryVectorStore
vector_store = InMemoryVectorStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)
Det går att skapa en direktreferens till en namngiven samling.
from semantic_kernel.connectors.memory.in_memory import InMemoryCollection
vector_collection = InMemoryCollection("collection_name", DataModel)
Kommer snart
Mer information kommer snart.