Sdílet prostřednictvím


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
  • KosineSimilarita
  • KosineDistance
  • DotProductSimilarity
  • EuclideanDistance
Podporované klauzule filtru
  • AnyTagEqualTo
  • EqualTo
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
  • Kosinusová podobnost
  • Kosinusová vzdálenost
  • Podobnost skalárního součinu
  • Euklidská vzdálenost
  • Euklidovská čtvercová vzdálenost
  • Manhattan Vzdálenost
  • Hamming Vzdálenost
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.