Delen via


De in-memory connector gebruiken (preview)

Waarschuwing

De Semantische Kernel Vector Store-functionaliteit is in preview en verbeteringen waarvoor wijzigingen die fouten veroorzaken, kunnen nog steeds in beperkte omstandigheden optreden voordat ze worden uitgebracht.

Overzicht

De In-Memory Vector Store-connector is een Vector Store-implementatie die wordt geleverd door Semantische kernel die geen externe database gebruikt en gegevens in het geheugen opslaat. Deze Vector Store is handig voor het maken van prototypen van scenario's of waar snelle in-memory bewerkingen vereist zijn.

De verbindingslijn heeft de volgende kenmerken.

Functiegebied Ondersteuning
Verzamelingstoewijzingen aan Woordenlijst in het geheugen
Ondersteunde sleuteleigenschapstypen Elk type dat kan worden vergeleken
Ondersteunde gegevenseigenschapstypen Elk type
Ondersteunde vectoreigenschappentypen ReadOnlyMemory<float>
Ondersteunde indextypen Plat
Ondersteunde afstandsfuncties
  • CosineSimilariteit
  • CosineDistance
  • DotProductSimilariteit
  • EuclideanDistance
Ondersteunde filterclausules
  • AnyTagEqualTo
  • EqualTo
Ondersteunt meerdere vectoren in een record Ja
Wordt Filterable ondersteund? Ja
WordtFullTextSearchable ondersteund? Ja
Ondersteunde StoragePropertyName? Nee, omdat opslag in het geheugen is en gegevens hergebruiken daarom niet mogelijk is, is aangepaste naamgeving niet van toepassing.

Aan de slag

Voeg het nuget-pakket Semantic Kernel Core toe aan uw project.

dotnet add package Microsoft.SemanticKernel.Connectors.InMemory --prerelease

U kunt het vectorarchief toevoegen aan de container voor afhankelijkheidsinjectie die beschikbaar is op of KernelBuilder aan de IServiceCollection container voor afhankelijkheidsinjectie met behulp van extensiemethoden die worden geleverd door Semantische 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();

U kunt rechtstreeks een Exemplaar van InMemory Vector Store maken.

using Microsoft.SemanticKernel.Connectors.InMemory;

var vectorStore = new InMemoryVectorStore();

Het is mogelijk om een directe verwijzing naar een benoemde verzameling te maken.

using Microsoft.SemanticKernel.Connectors.InMemory;

var collection = new InMemoryVectorStoreRecordCollection<string, Hotel>("skhotels");

Opzoeken van sleutel- en vectoreigenschappen

De In-Memory Vector Store-connector leest standaard de waarden van sleutels en vectoren met behulp van weerspiegeling. De sleutels en vectoren worden verondersteld directe eigenschappen van het gegevensmodel te zijn.

Als een gegevensmodel vereist is dat een structuur heeft waarin sleutels en vectoren geen directe eigenschappen van het gegevensmodel zijn, is het mogelijk om functies te leveren om de waarden van dit model te lezen.

Wanneer u dit gebruikt, is het ook vereist om een VectorStoreRecordDefinition op te geven, zodat de informatie over de grootte van de vectordimensie en de afstandsfunctie kan worden gecommuniceerd naar de In-Memory vectoropslag.

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; }
}

Overzicht

De In-Memory Vector Store-connector is een Vector Store-implementatie die wordt geleverd door Semantische kernel die geen externe database gebruikt en gegevens in het geheugen opslaat. Deze Vector Store is handig voor het maken van prototypen van scenario's of waar snelle in-memory bewerkingen vereist zijn.

De verbindingslijn heeft de volgende kenmerken.

Functiegebied Ondersteuning
Verzamelingstoewijzingen aan Woordenlijst in het geheugen
Ondersteunde sleuteleigenschapstypen Alles dat als dictsleutel mag worden gebruikt. Zie de Python-documentatie voor meer details hier
Ondersteunde gegevenseigenschapstypen Elk type
Ondersteunde vectoreigenschappentypen list[float | int] | numpy-array
Ondersteunde indextypen Plat
Ondersteunde afstandsfuncties
  • Cosinus-gelijkenis
  • Cosinus Afstand
  • Gelijkenis van dot-product
  • Euclidische afstand
  • Euclidische kwadraatafstand
  • Manhattan Distance
  • Hammingafstand
Ondersteunt meerdere vectoren in een record Ja
is_filterable ondersteund? Ja
Wordt 'is_full_text_searchable' ondersteund? Ja

Aan de slag

Voeg het Semantic Kernel-pakket toe aan uw project.

pip install semantic-kernel

U kunt de winkel en verzamelingen daar maken of de verzamelingen rechtstreeks maken.

In de onderstaande fragmenten wordt ervan uitgegaan dat u een gegevensmodelklasse hebt gedefinieerd met de naam DataModel.

from semantic_kernel.connectors.memory.in_memory import InMemoryVectorStore

vector_store = InMemoryVectorStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)

Het is mogelijk om een directe verwijzing naar een benoemde verzameling te maken.

from semantic_kernel.connectors.memory.in_memory import InMemoryCollection

vector_collection = InMemoryCollection("collection_name", DataModel)

Binnenkort beschikbaar

Binnenkort meer informatie.