Utilisation d’abstractions du magasin de vecteurs sans définir votre propre modèle de données (préversion)
Avertissement
La fonctionnalité de magasin de vecteurs du noyau sémantique est en préversion et des améliorations nécessitant des modifications cassants peuvent toujours se produire dans des circonstances limitées avant la mise en production.
Vue d’ensemble
Les connecteurs de magasin de vecteurs de noyau sémantique utilisent une première approche de modèle pour interagir avec les bases de données. Cela facilite et simplifie l’utilisation des connecteurs, car votre modèle de données reflète le schéma de vos enregistrements de base de données et pour ajouter des informations de schéma supplémentaires requises, vous pouvez simplement ajouter des attributs à vos propriétés de modèle de données.
Il existe des cas où il n’est pas souhaitable ou possible de définir votre propre modèle de données. Par exemple, supposons que vous ne connaissez pas au moment de la compilation l’apparence de votre schéma de base de données et que le schéma n’est fourni que par le biais de la configuration. La création d’un modèle de données qui reflète le schéma serait impossible dans ce cas.
Pour répondre à ce scénario, nous fournissons un modèle de données générique.
Modèle de données générique
Le modèle de données générique est une classe nommée VectorStoreGenericDataModel
et est disponible dans le Microsoft.Extensions.VectorData.Abstractions
package.
Pour prendre en charge n’importe quel type de base de données, le type de la clé est VectorStoreGenericDataModel
spécifié via un paramètre générique.
Toutes les autres propriétés sont divisées en Data
propriétés et Vector
en propriétés. Toute propriété qui n’est pas un vecteur ou une clé est considérée comme une propriété de données.
Data
et Vector
les jeux de propriétés sont stockés sous forme de dictionnaires à clé de chaîne d’objets.
Fourniture d’informations de schéma lors de l’utilisation du modèle de données générique
Lorsque vous utilisez le modèle de données générique, les connecteurs doivent toujours savoir à quoi ressemble le schéma de base de données. Sans les informations de schéma, le connecteur ne peut pas créer de collection, ou savoir comment mapper et à partir de la représentation de stockage utilisée par chaque base de données.
Une définition d’enregistrement peut être utilisée pour fournir les informations de schéma. Contrairement à un modèle de données, une définition d’enregistrement peut être créée à partir de la configuration au moment de l’exécution, fournissant une solution pour laquelle les informations de schéma ne sont pas connues au moment de la compilation.
Conseil
Pour savoir comment créer une définition d’enregistrement, reportez-vous à la définition de votre schéma avec une définition d’enregistrement.
Exemple
Pour utiliser le modèle de données générique avec un connecteur, spécifiez-le simplement comme modèle de données lors de la création d’une collection et fournissez simultanément une définition d’enregistrement.
// 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"])
Lors de la construction d’une instance de collection directement, la définition d’enregistrement est passée en tant qu’option. Par exemple, voici un exemple de construction d’une instance de collection Azure AI Search avec le modèle de données générique.
new AzureAISearchVectorStoreRecordCollection<VectorStoreGenericDataModel<string>>(
searchIndexClient,
"glossary",
new() { VectorStoreRecordDefinition = vectorStoreRecordDefinition });
Bientôt disponible
Plus d’informations prochainement.
Bientôt disponible
Plus d’informations prochainement.