Condividi tramite


Modifiche all'archivio vettoriale - Maggio 2025

Ridenominazione dei pacchetti NuGet

I pacchetti NuGet seguenti sono stati rinominati per maggiore chiarezza e lunghezza.

Nome pacchetto precedente nome nuovo pacchetto
Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB Microsoft.SemanticKernel.Connectors.CosmosMongoDB
Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.SemanticKernel.Connectors.CosmosNoSql
Microsoft.SemanticKernel.Connectors.Postgres Microsoft.SemanticKernel.Connectors.PgVector
Microsoft.SemanticKernel.Connectors.Sqlite Microsoft.SemanticKernel.Connectors.SqliteVec

Rinomina dei tipi

Nell'ambito della revisione formale dell'API prima della disponibilità generale sono state proposte e adottate varie modifiche di denominazione, con conseguente modifica del nome seguente. Questi dovrebbero contribuire a migliorare chiarezza, coerenza e ridurre la lunghezza del nome del tipo.

Spazio dei nomi precedente Vecchio NomeTipo Nuovo spazio dei nomi Nuovo TypeName
Microsoft.Extensions.VectorData VectorStoreRecordDefinition Microsoft.Extensions.VectorData VectorStoreCollectionDefinition
Microsoft.Extensions.VectorData VectorStoreRecordKeyAttribute Microsoft.Extensions.VectorData VectorStoreKeyAttribute
Microsoft.Extensions.VectorData VectorStoreRecordDataAttribute Microsoft.Extensions.VectorData VectorStoreDataAttribute
Microsoft.Extensions.VectorData VectorStoreRecordVectorAttribute Microsoft.Extensions.VectorData VectorStoreVectorAttribute
Microsoft.Extensions.VectorData VectorStoreRecordProperty Microsoft.Extensions.VectorData VectorStoreProperty
Microsoft.Extensions.VectorData VectorStoreRecordKeyProperty Microsoft.Extensions.VectorData VectorStoreKeyProperty
Microsoft.Extensions.VectorData VectorStoreRecordDataProperty Microsoft.Extensions.VectorData VectorStoreDataProperty
Microsoft.Extensions.VectorData VectorStoreRecordVectorProperty Microsoft.Extensions.VectorData VectorStoreVectorProperty
Microsoft.Extensions.VectorData GetRecordOptions Microsoft.Extensions.VectorData RecordRetrievalOptions
Microsoft.Extensions.VectorData GetFilteredRecordOptions<TRecord> Microsoft.Extensions.VectorData FilteredRecordRetrievalOptions<TRecord>
Microsoft.Extensions.VectorData IVectorSearch<TRecord> Microsoft.Extensions.VectorData IVectorSearchable<TRecord>
Microsoft.Extensions.VectorData IKeywordHybridSearch<TRecord> Microsoft.Extensions.VectorData IKeywordHybridSearchable<TRecord>
Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB AzureCosmosDBMongoDBVectorStore Microsoft.SemanticKernel.Connectors.CosmosMongoDB CosmosMongoVectorStore
Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB Azure Cosmos DB MongoDB Vector Store Record Collection Microsoft.SemanticKernel.Connectors.CosmosMongoDB CosmosMongoCollection
Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL AzureCosmosDBNoSQLVectorStore Microsoft.SemanticKernel.Connectors.CosmosNoSql CosmosNoSqlVectorStore
Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Collezione di Record AzureCosmosDBNoSQLVectorStore Microsoft.SemanticKernel.Connectors.CosmosNoSql CosmosNoSqlCollection
Microsoft.SemanticKernel.Connectors.MongoDB MongoDBVectorStore Microsoft.SemanticKernel.Connectors.MongoDB MongoVectorStore
Microsoft.SemanticKernel.Connectors.MongoDB MongoDBVectorStoreRecordCollection Microsoft.SemanticKernel.Connectors.MongoDB MongoCollection

Tutti i nomi delle varie implementazioni supportate del kernel semantico di VectorStoreCollection sono stati rinominati in nomi più brevi usando un modello coerente.

*VectorStoreRecordCollection è ora *Collection. Ad esempio PostgresVectorStoreRecordCollection ->PostgresCollection.

Analogamente, anche tutte le classi di opzioni correlate sono cambiate.

*VectorStoreRecordCollectionOptions è ora *CollectionOptions. Ad esempio PostgresVectorStoreRecordCollectionOptions ->PostgresCollectionOptions.

Rinominazioni di proprietà

Namespace Classe Il nome della proprietà precedente Nuovo nome della proprietà
Microsoft.Extensions.VectorData VectorStoreKeyAttribute StoragePropertyName NomeSpazioDiArchiviazione
Microsoft.Extensions.VectorData VectorStoreDataAttribute StoragePropertyName StorageName
Microsoft.Extensions.VectorData VectorStoreVectorAttribute StoragePropertyName StorageName
Microsoft.Extensions.VectorData VectorStoreKeyProperty DataModelPropertyName Nome
Microsoft.Extensions.VectorData VectorStoreKeyProperty StoragePropertyName StorageName
Microsoft.Extensions.VectorData VectorStoreKeyProperty Tipo di proprietà Tipo
Microsoft.Extensions.VectorData VectorStoreDataProperty DataModelPropertyName Nome
Microsoft.Extensions.VectorData VectorStoreDataProperty StoragePropertyName StorageName
Microsoft.Extensions.VectorData VectorStoreDataProperty Tipo di proprietà Tipo
Microsoft.Extensions.VectorData VectorStoreVectorProperty DataModelPropertyName Nome
Microsoft.Extensions.VectorData VectorStoreVectorProperty StoragePropertyName StorageName
Microsoft.Extensions.VectorData VectorStoreVectorProperty Tipo di proprietà Tipo
Microsoft.Extensions.VectorData DistanceFunction Hamming HammingDistance

La proprietà VectorStoreRecordDefinition nelle classi di opzioni di raccolta è stata rinominata in Definition.

Metodo di Ridenominazione

Il CreateCollectionIfNotExistsAsync metodo in Collection è stato rinominato in EnsureCollectionExistsAsync.

Il DeleteAsync metodo in *Collection e VectorStore è stato rinominato in EnsureCollectionDeletedAsync. In questo modo si allinea più strettamente al comportamento del metodo , che eliminerà una raccolta, se esistente. Se la raccolta non esiste, non eseguirà alcuna operazione e avrà esito positivo.

Interfaccia per la classe astratta di base

Le interfacce seguenti sono state modificate in classi astratte di base.

Namespace Nome interfaccia precedente Nuovo nome tipo
Microsoft.Extensions.VectorData IVectorStore VectorStore
Microsoft.Extensions.VectorData IVectorStoreRecordCollection VectorStoreCollection

Se in precedenza si usava IVectorStore o IVectorStoreRecordCollection, è ora possibile usare VectorStore e VectorStoreCollection.

Unione di SearchAsync e SearchEmbeddingAsync

I metodi SearchAsync e SearchEmbeddingAsync della raccolta sono stati fusi in un unico metodo: SearchAsync.

In precedenza SearchAsync è stato consentito eseguire ricerche vettoriali usando i dati di origine che verrebbero vettorializzati all'interno della raccolta o nel servizio, pur consentendo SearchEmbeddingAsync di eseguire ricerche vettoriali fornendo un vettore.

Entrambi gli scenari sono ora supportati usando il singolo SearchAsync metodo , che può accettare come input sia i dati di origine che i vettori.

Il meccanismo per determinare le operazioni da eseguire è il seguente:

  1. Se il valore specificato è uno dei tipi di vettore supportati per il connettore, la ricerca lo usa.
  2. Se il valore specificato non è uno dei tipi di vettore supportati, il connettore verifica se un oggetto IEmbeddingGenerator è registrato, con l'archivio vettoriale, che supporta la conversione dal valore fornito al tipo di vettore supportato dal database.
  3. Infine, se non è disponibile nessun elemento compatibile IEmbeddingGenerator, il metodo solleverà un'eccezione InvalidOperationException.

Supporto per stringhe dizionario<, oggetti?> modelli che usano *DynamicCollection e VectorStore.GetDynamicCollection

Per consentire il supporto per NativeOAT e Trimming, dove possibile e quando si usa il modello di dati dinamico, è stato modificato il modo in cui sono supportati i modelli di dati dinamici. In particolare, la modalità di richiesta o costruzione della raccolta è stata modificata.

In precedenza, quando si usa la stringa Dictionary<, l'oggetto?> come modello di dati, è possibile richiederlo usando VectorStore.GetCollection, ma ora sarà necessario usare VectorStore.GetDynamicCollection

// Before
PostgresVectorStore vectorStore = new PostgresVectorStore(myNpgsqlDataSource)
vectorStore.GetCollection<string, Dictionary<string, object?>>("collectionName", definition);

// After
PostgresVectorStore vectorStore = new PostgresVectorStore(myNpgsqlDataSource, ownsDataSource: true)
vectorStore.GetDynamicCollection<string, Dictionary<string, object?>>("collectionName", definition);

VectorStore e VectorStoreRecordCollection sono ora eliminabili

Sia VectorStore che VectorStoreRecordCollection sono ora eliminabili per garantire che i client di database posseduti da questi vengano eliminati correttamente.

Quando si trasferisce un client di database all'archivio vettoriale o alla raccolta, si può specificare se l'archivio vettoriale o la raccolta deve diventare proprietario del client e quindi smaltirlo quando viene smaltito l'archivio vettoriale o la raccolta.

Ad esempio, quando si passa un'origine di dati PostgresVectorStore, passando true come parametro per ownsDataSource farà sì che l'oggetto PostgresVectorStore gestisca l'eliminazione dell'origine dati quando essa viene disposta.

new PostgresVectorStore(dataSource, ownsDataSource: true, options);

CreateCollection non è più supportato, usare EnsureCollectionExistsAsync

Il CreateCollection metodo in Collection è stato rimosso e ora è supportato solo EnsureCollectionExistsAsync . EnsureCollectionExistsAsync è idempotente e creerà una raccolta se non esiste e non esegue alcuna operazione se esiste già.

VectorStoreOperationException e VectorStoreRecordMappingException non è più supportato, usare VectorStoreException

VectorStoreOperationException ed VectorStoreRecordMappingException è stato rimosso e ora è supportato solo VectorStoreException . Tutti gli errori di richiesta di database che generano un'eccezione specifica del database vengono incapsulati e generati come VectorStoreException, consentendo l'utilizzo del codice per intercettare un singolo tipo di eccezione anziché uno diverso per ogni implementazione.

Non applicabile

Queste modifiche sono attualmente applicabili solo in C#

Presto disponibile

Queste modifiche sono attualmente applicabili solo in C#