Korzystanie z łącznika w pamięci (wersja zapoznawcza)
Ostrzeżenie
Funkcja semantycznego magazynu wektorów jądra jest dostępna w wersji zapoznawczej, a ulepszenia wymagające zmian powodujących niezgodność mogą nadal występować w ograniczonych okolicznościach przed wydaniem.
Omówienie
Łącznik magazynu wektorów w pamięci jest implementacją magazynu wektorów zapewnianą przez jądro semantyczne, które nie używa zewnętrznej bazy danych i przechowuje dane w pamięci. Ten magazyn wektorów jest przydatny w przypadku scenariuszy tworzenia prototypów lub gdy wymagane są szybkie operacje w pamięci.
Łącznik ma następujące cechy.
Obszar funkcji | Pomoc techniczna |
---|---|
Mapowania kolekcji na | Słownik w pamięci |
Obsługiwane typy właściwości kluczy | Dowolny typ, który można porównać |
Obsługiwane typy właściwości danych | Dowolny typ |
Obsługiwane typy właściwości wektorów | ReadOnlyMemory<float> |
Obsługiwane typy indeksów | Płaski |
Obsługiwane funkcje odległości |
|
Obsługiwane klauzule filtru |
|
Obsługuje wiele wektorów w rekordzie | Tak |
Czy filtrowanie jest obsługiwane? | Tak |
Czy jest obsługiwany element IsFullTextSearchable? | Tak |
Obsługiwana nazwa_właściwości_magazynu? | Nie, ponieważ magazyn jest w pamięci, a ponowne użycie danych nie jest możliwe, niestandardowe nazewnictwo nie ma zastosowania. |
Wprowadzenie
Dodaj pakiet nuget jądra semantycznego core do projektu.
dotnet add package Microsoft.SemanticKernel.Connectors.InMemory --prerelease
Magazyn wektorów można dodać do kontenera iniekcji zależności dostępnego w KernelBuilder
kontenerze iniekcji zależności lub IServiceCollection
przy użyciu metod rozszerzeń udostępnianych przez jądro semantyczne.
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();
Wystąpienie magazynu wektorów inmemory można utworzyć bezpośrednio.
using Microsoft.SemanticKernel.Connectors.InMemory;
var vectorStore = new InMemoryVectorStore();
Istnieje możliwość utworzenia bezpośredniego odwołania do nazwanej kolekcji.
using Microsoft.SemanticKernel.Connectors.InMemory;
var collection = new InMemoryVectorStoreRecordCollection<string, Hotel>("skhotels");
Wyszukiwanie właściwości klucza i wektora
Domyślnie łącznik In-Memory Vector Store odczytuje wartości kluczy i wektorów przy użyciu odbicia. Przyjmuje się, że klucze i wektory są bezpośrednimi właściwościami modelu danych.
Jeśli wymagany jest model danych, który ma strukturę, w której klucze i wektory nie są bezpośrednimi właściwościami modelu danych, można podać funkcje w celu odczytania tych wartości.
W takim przypadku wymagane jest również podanie VectorStoreRecordDefinition
, dzięki czemu informacje o rozmiarze i funkcji odległości wektora mogą być przekazywane do magazynu wektorów In-Memory.
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; }
}
Omówienie
Łącznik magazynu wektorów w pamięci jest implementacją magazynu wektorów zapewnianą przez jądro semantyczne, które nie używa zewnętrznej bazy danych i przechowuje dane w pamięci. Ten magazyn wektorów jest przydatny w przypadku scenariuszy tworzenia prototypów lub gdy wymagane są szybkie operacje w pamięci.
Łącznik ma następujące cechy.
Obszar funkcji | Pomoc techniczna |
---|---|
Mapowania kolekcji na | Słownik w pamięci |
Obsługiwane typy właściwości kluczy | Każdy element, który może być kluczem słownika, zobacz dokumentację Pythona, aby uzyskać szczegóły tutaj |
Obsługiwane typy właściwości danych | Dowolny typ |
Obsługiwane typy właściwości wektorów | list[float | int] | tablica numpy |
Obsługiwane typy indeksów | Płaski |
Obsługiwane funkcje odległości |
|
Obsługuje wiele wektorów w rekordzie | Tak |
Czy „is_filterable” jest obsługiwane? | Tak |
Czy pełnotekstowe wyszukiwanie jest obsługiwane? | Tak |
Wprowadzenie
Dodaj pakiet Semantic Kernel do projektu.
pip install semantic-kernel
Możesz tam utworzyć magazyn i kolekcje lub utworzyć kolekcje bezpośrednio.
W poniższych fragmentach kodu przyjęto założenie, że masz klasę modelu danych zdefiniowaną pod nazwą "DataModel".
from semantic_kernel.connectors.memory.in_memory import InMemoryVectorStore
vector_store = InMemoryVectorStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)
Istnieje możliwość utworzenia bezpośredniego odwołania do nazwanej kolekcji.
from semantic_kernel.connectors.memory.in_memory import InMemoryCollection
vector_collection = InMemoryCollection("collection_name", DataModel)
Wkrótce
Więcej informacji wkrótce.