Поделиться через


Использование абстракций векторного хранилища без определения собственной модели данных (предварительная версия)

Предупреждение

Функции хранилища векторов семантического ядра доступны в предварительной версии и улучшения, требующие критических изменений, могут по-прежнему возникать в ограниченных обстоятельствах перед выпуском.

Обзор

Соединители хранилища векторов семантического ядра используют модель первого подхода к взаимодействию с базами данных. Это делает использование соединителей простым и простым, так как модель данных отражает схему записей базы данных и добавлять дополнительные сведения о схеме, необходимые, можно просто добавить атрибуты в свойства модели данных.

Существуют случаи, когда нежелательно или возможно определить собственную модель данных. Например, предположим, что вы не знаете во время компиляции, как выглядит схема базы данных, и схема предоставляется только с помощью конфигурации. Создание модели данных, которая отражает схему, будет невозможно в этом случае.

Для обеспечения этого сценария мы предоставляем универсальную модель данных.

Универсальная модель данных

Универсальная модель данных — это класс с именем VectorStoreGenericDataModel и доступен в пакете Microsoft.Extensions.VectorData.Abstractions .

Для поддержки любого типа базы данных тип ключа указывается с помощью универсального VectorStoreGenericDataModel параметра.

Все остальные свойства разделены на Data Vector и свойства. Любое свойство, которое не является вектором или ключом, считается свойством данных. Data и Vector наборы свойств хранятся в виде словарей объектов с ключом строки.

Предоставление сведений о схеме при использовании универсальной модели данных

При использовании универсальной модели данных соединители по-прежнему должны знать, как выглядит схема базы данных. Без сведений схемы соединитель не сможет создать коллекцию или узнать, как сопоставить и из представления хранилища, которое использует каждая база данных.

Определение записи можно использовать для предоставления сведений о схеме. В отличие от модели данных, определение записи можно создать из конфигурации во время выполнения, предоставляя решение, если сведения о схеме не известны во время компиляции.

Совет

Чтобы узнать, как создать определение записи, обратитесь к определению схемы с определением записи.

Пример

Чтобы использовать универсальную модель данных с соединителем, просто укажите ее в качестве модели данных при создании коллекции и одновременно предоставьте определение записи.

// 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"])

При создании экземпляра коллекции непосредственно определение записи передается в качестве параметра. Например, ниже приведен пример создания экземпляра сбора поиска ИИ Azure с помощью универсальной модели данных.

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

Скоро

Дополнительные сведения в ближайшее время.

Скоро

Дополнительные сведения в ближайшее время.