Dela via


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
  • CosineSimilarity
  • CosineDistance
  • DotProductSimilarity
  • EuclideanDistance
Filtersatser som stöds
  • AnyTagEqualTo
  • EqualTo
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
  • Cosinélikhet
  • Cosinnavstånd
  • Skalärproduktlikhet
  • Euklidiska avstånd
  • Euklidiska kvadratavstånd
  • Manhattan Avstånd
  • Hamringsavstånd
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.