使用向量存放區抽象概念而不定義您自己的資料模型 (預覽)
警告
語意核心向量存放區功能處於預覽狀態,且需要重大變更的改善可能仍會在發行前有限的情況下發生。
概觀
語意核心向量存放區連接器會使用模型第一種方法來與資料庫互動。 這可讓您輕鬆且簡單地使用連接器,因為數據模型會反映資料庫記錄的架構,以及新增所需的任何其他架構資訊,您只要將數據模型屬性新增至數據模型屬性即可。
不過,在某些情況下,不想要或可能定義您自己的數據模型。 例如,假設您在編譯時期不知道資料庫架構的外觀,而且只會透過組態提供架構。 在此情況下,建立反映架構的數據模型是不可能的。
為了迎合此案例,我們提供一般數據模型。
一般數據模型
泛型數據模型是名為 VectorStoreGenericDataModel
的類別,可在封裝中使用 Microsoft.Extensions.VectorData.Abstractions
。
若要支援任何類型的資料庫,會透過泛型參數指定的 VectorStoreGenericDataModel
索引鍵類型。
所有其他屬性都會 Data
分成 和 Vector
屬性。 任何不是向量或索引鍵的屬性都會被視為數據屬性。
Data
和 Vector
屬性集會儲存為物件的字串索引鍵字典。
使用泛型數據模型時提供架構資訊
使用泛型數據模型時,連接器仍然需要知道資料庫架構的外觀。 如果沒有架構資訊,連接器將無法建立集合,或知道如何對應至每個資料庫所使用的記憶體表示法。
記錄定義可用來提供架構資訊。 不同於數據模型,您可以在運行時間從組態建立記錄定義,以提供在編譯時期不知道架構資訊時的解決方案。
提示
若要查看如何建立記錄定義,請參閱 使用記錄定義來定義架構。
範例
若要搭配連接器使用泛型數據模型,只要在建立集合時將其指定為數據模型,並同時提供記錄定義。
// 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"])
直接建構集合實例時,會將記錄定義當做選項傳遞。 例如,以下是使用泛型數據模型建構 Azure AI 搜尋服務集合實例的範例。
new AzureAISearchVectorStoreRecordCollection<VectorStoreGenericDataModel<string>>(
searchIndexClient,
"glossary",
new() { VectorStoreRecordDefinition = vectorStoreRecordDefinition });
即將推出
更多信息即將推出。
即將推出
更多信息即將推出。