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.