Sdílet prostřednictvím


Použití abstrakcí služby Vector Store bez definování vlastního datového modelu (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

Konektory sémantického úložiště vektorů jádra používají první přístup modelu k interakci s databázemi. Díky tomu je používání konektorů snadné a jednoduché, protože datový model odráží schéma záznamů databáze a k přidání dalších požadovaných informací o schématu, můžete jednoduše přidat atributy do vlastností datového modelu.

Existují ale případy, kdy není žádoucí nebo je možné definovat vlastní datový model. Řekněme například, že v době kompilace nevíte, jak vypadá schéma databáze, a schéma je poskytováno pouze prostřednictvím konfigurace. Vytvoření datového modelu, který odráží schéma, by v tomto případě nebylo možné.

Pro tento scénář poskytujeme obecný datový model.

Obecný datový model

Obecný datový model je třída s názvem VectorStoreGenericDataModel a je k dispozici v Microsoft.Extensions.VectorData.Abstractions balíčku.

Pro podporu libovolného typu databáze je typ klíče VectorStoreGenericDataModel zadaného prostřednictvím obecného parametru.

Všechny ostatní vlastnosti jsou rozděleny do Data a Vector vlastnosti. Každá vlastnost, která není vektorem nebo klíčem, se považuje za datovou vlastnost. Data a Vector sady vlastností jsou uloženy jako slovníky s klíči řetězce objektů.

Zadávání informací o schématu při použití obecného datového modelu

Pokud používáte obecný datový model, konektory stále potřebují vědět, jak schéma databáze vypadá. Bez informací o schématu by konektor nemohl vytvořit kolekci nebo vědět, jak namapovat a z reprezentace úložiště, kterou každá databáze používá.

Definici záznamu lze použít k poskytnutí informací o schématu. Na rozdíl od datového modelu lze definici záznamu vytvořit z konfigurace za běhu a poskytnout řešení, pokud informace o schématu nejsou v době kompilace známé.

Tip

Pokud chcete zjistit, jak vytvořit definici záznamu, přečtěte si, jak definovat schéma pomocí definice záznamu.

Příklad

Pokud chcete použít obecný datový model s konektorem, jednoduše ho zadejte jako datový model při vytváření kolekce a současně zadejte definici záznamu.

// Create the definition to define the schema.
VectorStoreRecordDefinition vectorStoreRecordDefinition = new()
{
    Properties = new List<VectorStoreRecordProperty>
    {
        new VectorStoreRecordKeyProperty("Key", typeof(string)),
        new VectorStoreRecordDataProperty("Term", typeof(string)),
        new VectorStoreRecordDataProperty("Definition", typeof(string)),
        new VectorStoreRecordVectorProperty("DefinitionEmbedding", typeof(ReadOnlyMemory<float>)) { Dimensions = 1536 }
    }
};

// When getting your collection instance from a vector store instance
// specify the generic data model, using the appropriate key type for your database
// and also pass your record definition.
var genericDataModelCollection = vectorStore.GetCollection<string, VectorStoreGenericDataModel<string>>(
    "glossary",
    vectorStoreRecordDefinition);

// Since we have schema information available from the record definition
// it's possible to create a collection with the right vectors, dimensions,
// indexes and distance functions.
await genericDataModelCollection.CreateCollectionIfNotExistsAsync();

// When retrieving a record from the collection, data and vectors can
// now be accessed via the Data and Vector dictionaries respectively.
var record = await genericDataModelCollection.GetAsync("SK");
Console.WriteLine(record.Data["Definition"])

Při přímé vytváření instance kolekce se definice záznamu předává jako možnost. Tady je příklad vytvoření instance kolekce Azure AI Search pomocí obecného datového modelu.

new AzureAISearchVectorStoreRecordCollection<VectorStoreGenericDataModel<string>>(
    searchIndexClient,
    "glossary",
    new() { VectorStoreRecordDefinition = vectorStoreRecordDefinition });

Již brzy

Další informace budou brzy k dispozici.

Již brzy

Další informace budou brzy k dispozici.