Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Varning
Funktionen In-Memory 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 innan de släpps.
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.
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 | Stöd |
|---|---|
| Kartläggning av samlingar | 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 |
|
| 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 IsIndexed-funktionen? | Ja |
| Stöds fulltextindexerad? | Ja |
| Stöds StorageName? | Nej, eftersom lagring är minnesinternt och återanvändning av data därför inte är möjligt är anpassad namngivning inte tillämpligt. |
| Stöds HybridSearch? | Nej |
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.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder();
kernelBuilder.Services
.AddInMemoryVectorStore();
using Microsoft.Extensions.DependencyInjection;
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 InMemoryCollection<string, Hotel>("skhotels");
Översikt
Varning
In-Memory Vector Store har stöd för anpassade filter som kan uttryckas som Python lambda-funktioner, dessa funktioner körs i samma process som huvudprogrammet och kan därför köra godtycklig kod. Vi filtrerar efter vissa tillåtna åtgärder, men du bör inte låta filter anges av ej betrodda källor, inklusive av LLM-indata. Mer information finns i avsnittet Filtrering .
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 | Stöd |
|---|---|
| Kartläggning av samlingar | 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 | Lägenhet |
| Avståndsfunktioner som stöds |
|
| Stöder flera vektorer i en post | Ja |
| is_filterable stöds? | Ja |
| Stöds "is_full_text_searchable"? | 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.in_memory import InMemoryVectorStore
vector_store = InMemoryVectorStore()
vector_collection = vector_store.get_collection(record_type=DataModel, collection_name="collection_name")
Det går att skapa en direktreferens till en namngiven samling.
from semantic_kernel.connectors.in_memory import InMemoryCollection
vector_collection = InMemoryCollection(record_type=DataModel, collection_name="collection_name")
Filtering
Varning
In-Memory Vector Store har stöd för anpassade filter som kan uttryckas som Python lambda-funktioner, dessa funktioner körs i samma process som huvudprogrammet och kan därför köra godtycklig kod. Vi filtrerar efter vissa tillåtna åtgärder, men du bör inte låta filter anges av ej betrodda källor, inklusive av LLM-indata.
In-Memory-anslutningsappen använder en metod för tillåtna listor för filtersäkerhet. Endast följande åtgärder tillåts i filteruttryck:
Tillåtna åtgärder
| Kategori | Tillåtna åtgärder |
|---|---|
| Jämförelser |
==, !=, <, <=, >, >=, , in, not in, , isis not |
| Booleska åtgärder |
and, ornot |
| Dataåtkomst | Attributåtkomst (t.ex. x.field), indexåtkomst (t.ex. x['field']), skivning |
| literaler | Konstanter, listor, tupplar, uppsättningar, ordlistor |
| Grundläggande aritmetik |
+, -, *, /, %// |
Tillåtna funktioner
Följande inbyggda funktioner och metoder kan användas i filteruttryck:
-
Typkonvertering:
str,int,float,bool -
Sammansättning:
len,abs,min,max,sum,any,all -
Strängmetoder:
lower,upper,strip,startswith, ,endswithcontains -
Ordlistemetoder:
get,keys,values,items
Examples
# Simple equality filter
results = await collection.search(vector, filter="lambda x: x.category == 'electronics'")
# Numeric comparison
results = await collection.search(vector, filter="lambda x: x.price < 100")
# Boolean combination
results = await collection.search(vector, filter="lambda x: x.in_stock and x.rating >= 4.0")
# String method
results = await collection.search(vector, filter="lambda x: x.name.startswith('A')")
# Membership test
results = await collection.search(vector, filter="lambda x: x.status in ['active', 'pending']")
Kommer snart
Mer information kommer snart.