Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
Функциональность хранилища векторов семантического ядра доступна в предварительной версии, и улучшения, требующие кардинальных изменений, могут по-прежнему возникать в ограниченных случаях до выпуска.
Предупреждение
Функциональность хранилища векторов семантического ядра доступна в предварительной версии, и улучшения, требующие кардинальных изменений, могут по-прежнему возникать в ограниченных случаях до выпуска.
Обзор
Соединители хранилища векторов семантического ядра используют подход, при котором модель имеет первостепенное значение для взаимодействия с базами данных. Это делает использование соединителей простым и простым, так как модель данных отражает схему записей базы данных и добавлять дополнительные сведения о схеме, необходимые, можно просто добавить атрибуты в свойства модели данных.
Существуют случаи, когда нежелательно или возможно определить собственную модель данных. Например, предположим, что вы не знаете во время компиляции, как выглядит схема базы данных, и схема предоставляется только с помощью конфигурации. Создание модели данных, которая отражает схему, будет невозможно в этом случае.
Чтобы обеспечить выполнение этого сценария, мы разрешаем использовать Dictionary<string, object?> тип записи.
Свойства добавляются в словарь с ключом в качестве имени свойства и значения в качестве значения свойства.
Предоставление сведений о схеме при использовании словаря
При использовании словаря соединители по-прежнему должны знать, как выглядит схема базы данных. Без сведений схемы соединитель не сможет создать коллекцию или узнать, как сопоставить и из представления хранилища, которое использует каждая база данных.
Определение записи можно использовать для предоставления сведений о схеме. В отличие от модели данных, определение записи можно создать из конфигурации во время выполнения, предоставляя решение, если сведения о схеме не известны во время компиляции.
Подсказка
Чтобы узнать, как создать определение записи, обратитесь к определению схемы с определением записи.
Пример
Чтобы использовать словарь с соединителем, просто укажите его в качестве модели данных при создании коллекции и одновременно предоставьте определение записи.
// Create the definition to define the schema.
VectorStoreCollectionDefinition definition = new()
{
Properties = new List<VectorStoreProperty>
{
new VectorStoreKeyProperty("Key", typeof(string)),
new VectorStoreDataProperty("Term", typeof(string)),
new VectorStoreDataProperty("Definition", typeof(string)),
new VectorStoreVectorProperty("DefinitionEmbedding", typeof(ReadOnlyMemory<float>), dimensions: 1536)
}
};
// When getting your collection instance from a vector store instance
// specify the Dictionary, using object as the key type for your database
// and also pass your record definition.
// Note that you have to use GetDynamicCollection instead of the regular GetCollection method
// to get an instance of a collection using Dictionary<string, object?>.
var dynamicDataModelCollection = vectorStore.GetDynamicCollection(
"glossary",
definition);
// 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 dynamicDataModelCollection.EnsureCollectionExistsAsync();
// When retrieving a record from the collection, key, data and vector values can
// now be accessed via the dictionary entries.
var record = await dynamicDataModelCollection.GetAsync("SK");
Console.WriteLine(record["Definition"]);
При создании экземпляра коллекции непосредственно определение записи передается в качестве параметра. Например, ниже приведен пример создания экземпляра коллекции поиска ИИ Azure с помощью словаря.
Обратите внимание, что каждая реализация коллекции хранилища векторов имеет отдельный *DynamicCollection класс, который можно использовать с строкой словаря<, объектом?>.
Это связано с тем, что эти реализации могут поддерживать NativeAOT/Trimming.
new AzureAISearchDynamicCollection(
searchIndexClient,
"glossary",
new() { Definition = definition });
Обзор
В Python можно использовать VectorStoreRecordDefinition в сочетании с любым универсальным типом, например диктом или кадром данных Pandas. Дополнительные сведения см. здесь: определение схемы с помощью определения записи.
Скоро
Дополнительные сведения в ближайшее время.