Freigeben über


Änderungen am Vektorspeicher – Mai 2025

Nuget-Paket umbenennen

Die folgenden Nuget-Pakete wurden aus Gründen der Klarheit und Länge umbenannt.

Alter Paketname Neuer Paketname
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

Typumbenennungen

Im Rahmen unserer formalen API-Überprüfung vor der allgemeinen Verfügbarkeit wurden verschiedene Namensänderungen vorgeschlagen und übernommen, was die folgenden Veränderungen zur Folge hatte. Diese sollten dabei helfen, Klarheit, Konsistenz zu verbessern und die Länge des Typnamens zu verringern.

Alter Namespace Alter TypeName Neuer Namespace Neuer 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 AzureCosmosDBMongoDBVectorStoreRecordCollection Microsoft.SemanticKernel.Connectors.CosmosMongoDB CosmosMongoCollection
Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL AzureCosmosDBNoSQLVectorStore Microsoft.SemanticKernel.Connectors.CosmosNoSql CosmosNoSqlVectorStore
Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL AzureCosmosDBNoSQLVectorStoreRecordCollection Microsoft.SemanticKernel.Connectors.CosmosNoSql CosmosNoSqlCollection
Microsoft.SemanticKernel.Connectors.MongoDB MongoDBVectorStore Microsoft.SemanticKernel.Connectors.MongoDB MongoVectorStore
Microsoft.SemanticKernel.Connectors.MongoDB MongoDB-Vektorspeicher-Datensatz-Sammlung Microsoft.SemanticKernel.Connectors.MongoDB MongoCollection

Die Namen der verschiedenen unterstützten Implementierungen des semantischen Kernels wurden nach einem konsistenten Muster in kürzere Namen umbenannt.

*VectorStoreRecordCollection ist jetzt *Collection. Z.B. PostgresVectorStoreRecordCollection ->PostgresCollection.

Ähnlich haben sich auch alle zugehörigen Optionsklassen geändert.

*VectorStoreRecordCollectionOptions ist jetzt *CollectionOptions. Z.B. PostgresVectorStoreRecordCollectionOptions ->PostgresCollectionOptions.

Eigenschaften-Umbenennungen

Namespace Klasse Ehemaliger Objektname Neuer Eigenschaftsname
Microsoft.Extensions.VectorData VectorStoreKeyAttribute SpeicherEigenschaftsName StorageName
Microsoft.Extensions.VectorData VectorStoreDataAttribute SpeicherEigenschaftsName StorageName
Microsoft.Extensions.VectorData VectorStoreVectorAttribute SpeicherEigenschaftsName StorageName
Microsoft.Extensions.VectorData VectorStore-Schlüssel-Eigenschaft DatenmodellEigenschaftsName Name
Microsoft.Extensions.VectorData VectorStore-Schlüssel-Eigenschaft SpeicherEigenschaftsName StorageName
Microsoft.Extensions.VectorData VectorStore-Schlüssel-Eigenschaft Eigenschaftstyp Typ
Microsoft.Extensions.VectorData VectorStoreDataProperty DatenmodellEigenschaftsName Name
Microsoft.Extensions.VectorData VectorStoreDataProperty SpeicherEigenschaftsName StorageName
Microsoft.Extensions.VectorData VectorStoreDataProperty Eigenschaftstyp Typ
Microsoft.Extensions.VectorData VectorStoreVectorProperty DatenmodellEigenschaftsName Name
Microsoft.Extensions.VectorData VectorStoreVectorProperty SpeicherEigenschaftsName StorageName
Microsoft.Extensions.VectorData VectorStoreVectorProperty Eigenschaftstyp Typ
Microsoft.Extensions.VectorData Distanzfunktion Hamming HammingDistance

Die VectorStoreRecordDefinition-Eigenschaft in Sammlungsoptionen-Klassen wurde in Definition umbenannt.

Methodenumbenennungen

Die CreateCollectionIfNotExistsAsync Methode für die Collection Datei wurde umbenannt in EnsureCollectionExistsAsync.

Die DeleteAsync Methode für die *Collection und VectorStore wurde umbenannt in EnsureCollectionDeletedAsync. Dies richtet sich genauer an dem Verhalten der Methode, das eine Auflistung löscht, falls vorhanden. Wenn die Auflistung nicht vorhanden ist, führt sie nichts aus und ist erfolgreich.

Schnittstelle zur abstrakten Basisklasse

Die folgenden Schnittstellen wurden in Basis-abstrakte Klassen geändert.

Namespace Alter Schnittstellenname Neuer Typname
Microsoft.Extensions.VectorData IVectorStore VectorStore
Microsoft.Extensions.VectorData IVectorStoreRecordCollection VectorStoreCollection

Unabhängig davon, wo Sie zuvor IVectorStore oder IVectorStoreRecordCollection verwendet haben, können Sie stattdessen VectorStore und VectorStoreCollection verwenden.

Zusammenführung und SearchAsyncSearchEmbeddingAsync

Die SearchAsync-Methode und die SearchEmbeddingAsync-Methode in der Sammlung wurden in einer einzigen Methode zusammengeführt: SearchAsync.

Zuvor erlaubte SearchAsync das Ausführen von Vektorsuchen mithilfe von Quelldaten, die innerhalb der Auflistung oder im Dienst vektorisiert werden würden, während SearchEmbeddingAsync Vektorsuchen durch Bereitstellen eines Vektors erlaubt wurden.

Jetzt werden beide Szenarien mit der einzelnen SearchAsync Methode unterstützt, die sowohl als Eingabedaten als auch als Vektoren verwendet werden kann.

Der Mechanismus zum Bestimmen der zu tunden Aktionen lautet wie folgt:

  1. Wenn der angegebene Wert einer der unterstützten Vektortypen für den Connector ist, verwendet die Suche dies.
  2. Wenn der angegebene Wert nicht einer der unterstützten Vektortypen ist, überprüft der Connector, ob ein IEmbeddingGenerator Vektorspeicher registriert ist, der die Konvertierung vom bereitgestellten Wert in den von der Datenbank unterstützten Vektortyp unterstützt.
  3. Wenn schließlich kein kompatibler IEmbeddingGenerator verfügbar ist, wirft die Methode eine InvalidOperationException.

Unterstützung für Wörterbuchzeichenfolgen<, Objektmodelle> mit *DynamicCollection und VectorStore.GetDynamicCollection

Um die Unterstützung für NativeOAT und Trimming zu ermöglichen, sofern möglich und bei Verwendung des dynamischen Datenmodells, hat sich die Art und Weise geändert, in der dynamische Datenmodelle unterstützt werden. Insbesondere, wie Sie die Sammlung anfordern oder erstellen, hat sich geändert.

Wenn Sie zuvor Wörterbuchzeichenfolge, Objekt?< als Datenmodell verwenden, können Sie dies mithilfe >von "VectorStore.GetCollection, aber jetzt müssen Sie verwenden.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 und VectorStoreRecordCollection sind jetzt entsorgbar

Sowohl VectorStore als auch VectorStoreRecordCollection sind jetzt entsorgbar, um sicherzustellen, dass die von diesen besessenen Datenbankobjekte ordnungsgemäß bereinigt werden.

Wenn Sie einem Datenbankclient an Ihren Vektorspeicher oder Ihre Vektorsammlung übergeben, haben Sie die Möglichkeit anzugeben, ob der Vektorspeicher oder die Vektorsammlung den Client besitzen und diesen daher auch entsorgen soll, wenn der Vektorspeicher oder die Vektorsammlung entsorgt wird.

Wenn Sie beispielsweise eine Datenquelle an die PostgresVectorStore übergeben und true für ownsDataSource verwenden, wird die PostgresVectorStore die Datenquelle entsorgen, wenn sie verworfen wird.

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

CreateCollection wird nicht mehr unterstützt, verwenden Sie EnsureCollectionExistsAsync

Die CreateCollection-Methode auf dem Collection wurde entfernt, und nur EnsureCollectionExistsAsync wird jetzt unterstützt. EnsureCollectionExistsAsync ist idempotent und erstellt eine Sammlung, wenn sie nicht vorhanden ist, und macht nichts, wenn sie bereits existiert.

VectorStoreOperationException und VectorStoreRecordMappingException wird nicht mehr unterstützt, verwenden Sie VectorStoreException

VectorStoreOperationException und VectorStoreRecordMappingException wurden entfernt, und nur VectorStoreException wird jetzt unterstützt. Alle Datenbankanforderungsfehler, die zu einer datenbankspezifischen Ausnahme führen, werden umschlossen und als eine VectorStoreException-Ausnahme ausgelöst, sodass der ausführende Code einen einzigen Ausnahmetyp anstelle eines anderen für jede Implementierung abfangen kann.

Nicht zutreffend

Diese Änderungen gelten derzeit nur in C#

In Kürze verfügbar

Diese Änderungen gelten derzeit nur in C#