Použití konektoru v paměti (Preview)
Upozorňující
Funkce sémantického úložiště vektorů jádra je ve verzi Preview a vylepšení, která vyžadují zásadní změny, se můžou vyskytovat za omezených okolností před vydáním.
Přehled
Konektor In-Memory Vector Store je implementace vektorového úložiště, kterou poskytuje sémantické jádro, které nepoužívá žádnou externí databázi a ukládá data do paměti. Toto úložiště vektorů je užitečné pro scénáře vytváření prototypů nebo pro vysokorychlostní operace v paměti.
Konektor má následující charakteristiky.
Oblast funkcí | Technická podpora |
---|---|
Kolekce map na | Slovník v paměti |
Podporované typy vlastností klíče | Libovolný typ, který lze porovnat |
Podporované typy datových vlastností | Libovolný typ |
Podporované typy vektorových vlastností | ReadOnlyMemory<float> |
Podporované typy indexů | Byt |
Podporované funkce vzdálenosti |
|
Podporované klauzule filtru |
|
Podporuje více vektorů v záznamu. | Ano |
Je podporováno Filtrování? | Ano |
Podporuje se IsFullTextSearchable? | Ano |
StoragePropertyName se podporuje? | Ne, protože úložiště je v paměti a opakované použití dat proto není možné, vlastní pojmenování se nedá použít. |
Začínáme
Přidejte do projektu balíček NuGet Jádra Semantic Core.
dotnet add package Microsoft.SemanticKernel.Connectors.InMemory --prerelease
Vektorové úložiště můžete přidat do kontejneru injektáže závislostí dostupného KernelBuilder
v IServiceCollection
kontejneru injektáže závislostí nebo do kontejneru injektáže závislostí pomocí rozšiřujících metod poskytovaných sémantickým jádrem.
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();
Instanci InMemory Vector Store můžete vytvořit přímo.
using Microsoft.SemanticKernel.Connectors.InMemory;
var vectorStore = new InMemoryVectorStore();
Je možné vytvořit přímý odkaz na pojmenovanou kolekci.
using Microsoft.SemanticKernel.Connectors.InMemory;
var collection = new InMemoryVectorStoreRecordCollection<string, Hotel>("skhotels");
Vyhledávání vlastností klíče a vektoru
Ve výchozím nastavení konektor In-Memory Vector Store přečte hodnoty klíčů a vektorů pomocí reflexe. Klíče a vektory se předpokládají jako přímé vlastnosti datového modelu.
Pokud je datový model povinný, který má strukturu, kde klíče a vektory nejsou přímými vlastnostmi datového modelu, je možné zadat funkce pro čtení hodnot těchto.
Při použití je také nutné zadat VectorStoreRecordDefinition
, aby informace o velikosti vektorové dimenze a funkci vzdálenosti mohly být předány do In-Memory vektorového úložiště.
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; }
}
Přehled
Konektor In-Memory Vector Store je implementace vektorového úložiště, kterou poskytuje sémantické jádro, které nepoužívá žádnou externí databázi a ukládá data do paměti. Toto úložiště vektorů je užitečné pro scénáře vytváření prototypů nebo pro vysokorychlostní operace v paměti.
Konektor má následující charakteristiky.
Oblast funkcí | Technická podpora |
---|---|
Kolekce map na | Slovník v paměti |
Podporované typy vlastností klíče | Všechny, které mohou být klíčem diktování, najdete v dokumentaci k Pythonu, kde najdete podrobnosti tady |
Podporované typy datových vlastností | Libovolný typ |
Podporované typy vektorových vlastností | list[float | int] | numpy array |
Podporované typy indexů | (Only if context supports "flat" as shape) Plochý |
Podporované funkce vzdálenosti |
|
Podporuje více vektorů v záznamu. | Ano |
Je funkce filtrování podporována? | Ano |
Je "is_full_text_searchable" podporováno? | Ano |
Začínáme
Přidejte do projektu balíček sémantického jádra.
pip install semantic-kernel
Tam můžete vytvořit úložiště a kolekce nebo přímo vytvořit kolekce.
V následujících fragmentech kódu se předpokládá, že máte třídu datového modelu definovanou s názvem DataModel.
from semantic_kernel.connectors.memory.in_memory import InMemoryVectorStore
vector_store = InMemoryVectorStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)
Je možné vytvořit přímý odkaz na pojmenovanou kolekci.
from semantic_kernel.connectors.memory.in_memory import InMemoryCollection
vector_collection = InMemoryCollection("collection_name", DataModel)
Již brzy
Další informace budou brzy k dispozici.