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 |
|
Ondersteunde filterclausules |
|
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 |
|
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.