Używanie abstrakcji magazynu wektorów bez definiowania własnego modelu danych (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
Łączniki semantycznego magazynu wektorów jądra używają modelu pierwszego podejścia do interakcji z bazami danych. Dzięki temu użycie łączników jest łatwe i proste, ponieważ model danych odzwierciedla schemat rekordów bazy danych i dodaje dodatkowe wymagane informacje o schemacie, możesz po prostu dodać atrybuty do właściwości modelu danych.
Istnieją przypadki, w których nie jest pożądane lub można zdefiniować własny model danych. Załóżmy na przykład, że nie wiesz w czasie kompilacji, jak wygląda schemat bazy danych, a schemat jest udostępniany tylko za pośrednictwem konfiguracji. Utworzenie modelu danych, który odzwierciedla schemat, byłoby niemożliwe w tym przypadku.
Aby zaspokoić ten scenariusz, udostępniamy ogólny model danych.
Ogólny model danych
Ogólny model danych to klasa o nazwie VectorStoreGenericDataModel
i jest dostępna w pakiecie Microsoft.Extensions.VectorData.Abstractions
.
Aby obsługiwać dowolny typ bazy danych, typ klucza elementu VectorStoreGenericDataModel
jest określony za pośrednictwem parametru ogólnego.
Wszystkie inne właściwości są podzielone na Data
właściwości i .Vector
Każda właściwość, która nie jest wektorem lub kluczem, jest traktowana jako właściwość danych.
Data
zestawy właściwości i Vector
są przechowywane jako słowniki ciągów obiektów.
Dostarczanie informacji o schemacie podczas korzystania z ogólnego modelu danych
W przypadku korzystania z ogólnego modelu danych łączniki nadal muszą wiedzieć, jak wygląda schemat bazy danych. Bez informacji o schemacie łącznik nie będzie mógł utworzyć kolekcji lub wiedzieć, jak mapować na i z reprezentacji magazynu używanej przez każdą bazę danych.
Definicję rekordu można użyć do podania informacji o schemacie. W przeciwieństwie do modelu danych definicję rekordu można utworzyć na podstawie konfiguracji w czasie wykonywania, zapewniając rozwiązanie, gdy informacje o schemacie nie są znane w czasie kompilacji.
Napiwek
Aby zobaczyć, jak utworzyć definicję rekordu, zapoznaj się z definiowaniem schematu przy użyciu definicji rekordu.
Przykład
Aby użyć ogólnego modelu danych z łącznikiem, po prostu określ go jako model danych podczas tworzenia kolekcji i jednocześnie podaj definicję rekordu.
// 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"])
Podczas bezpośredniego konstruowania wystąpienia kolekcji definicja rekordu jest przekazywana jako opcja. Na przykład poniżej przedstawiono przykład konstruowania wystąpienia kolekcji usługi Azure AI Search z ogólnym modelem danych.
new AzureAISearchVectorStoreRecordCollection<VectorStoreGenericDataModel<string>>(
searchIndexClient,
"glossary",
new() { VectorStoreRecordDefinition = vectorStoreRecordDefinition });
Wkrótce
Więcej informacji wkrótce.
Wkrótce
Więcej informacji wkrótce.