Vector Store-abstracties gebruiken zonder uw eigen gegevensmodel te definiëren (preview)
Waarschuwing
De Semantische Kernel Vector Store-functionaliteit is in preview en verbeteringen waarvoor wijzigingen die fouten veroorzaken, kunnen nog steeds in beperkte omstandigheden optreden voordat ze worden uitgebracht.
Overzicht
De Semantische Kernel Vector Store-connectors maken gebruik van een model dat eerst met databases communiceert. Dit maakt het gebruik van de connectors eenvoudig, omdat uw gegevensmodel het schema van uw databaserecords weerspiegelt en aanvullende schemagegevens wilt toevoegen die nodig zijn, kunt u gewoon kenmerken toevoegen aan de eigenschappen van uw gegevensmodel.
Er zijn echter gevallen waarin het niet wenselijk of mogelijk is om uw eigen gegevensmodel te definiëren. Stel dat u tijdens het compileren niet weet hoe uw databaseschema eruitziet en dat het schema alleen via de configuratie wordt verstrekt. Het maken van een gegevensmodel dat het schema weerspiegelt, is in dit geval onmogelijk.
Voor dit scenario bieden we een algemeen gegevensmodel.
Algemeen gegevensmodel
Het algemene gegevensmodel is een klasse met de naam VectorStoreGenericDataModel
en is beschikbaar in het Microsoft.Extensions.VectorData.Abstractions
pakket.
Ter ondersteuning van elk type database wordt het type sleutel van de VectorStoreGenericDataModel
database opgegeven via een algemene parameter.
Alle andere eigenschappen zijn onderverdeeld in Data
en Vector
eigenschappen. Een eigenschap die geen vector of sleutel is, wordt beschouwd als een gegevenseigenschap.
Data
en Vector
eigenschappensets worden opgeslagen als woordenlijsten met tekenreeksen van objecten.
Schemagegevens opgeven bij gebruik van het algemene gegevensmodel
Wanneer u het algemene gegevensmodel gebruikt, moeten connectors nog steeds weten hoe het databaseschema eruitziet. Zonder de schemagegevens kan de connector geen verzameling maken of weten hoe deze kan worden toegewezen aan en van de opslagweergave die door elke database wordt gebruikt.
Een recorddefinitie kan worden gebruikt om de schemagegevens op te geven. In tegenstelling tot een gegevensmodel kan tijdens runtime een recorddefinitie worden gemaakt op basis van de configuratie, waardoor een oplossing wordt geboden voor wanneer schemagegevens tijdens het compileren niet bekend zijn.
Tip
Als u wilt zien hoe u een recorddefinitie maakt, raadpleegt u het definiëren van uw schema met een recorddefinitie.
Opmerking
Als u het algemene gegevensmodel wilt gebruiken met een connector, geeft u het op als uw gegevensmodel bij het maken van een verzameling en geeft u tegelijkertijd een recorddefinitie op.
// 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"])
Bij het rechtstreeks samenstellen van een verzamelingsexemplaren wordt de recorddefinitie doorgegeven als een optie. Hier volgt bijvoorbeeld een voorbeeld van het maken van een Exemplaar van een Azure AI Search-verzameling met het algemene gegevensmodel.
new AzureAISearchVectorStoreRecordCollection<VectorStoreGenericDataModel<string>>(
searchIndexClient,
"glossary",
new() { VectorStoreRecordDefinition = vectorStoreRecordDefinition });
Binnenkort beschikbaar
Binnenkort meer informatie.
Binnenkort beschikbaar
Binnenkort meer informatie.