共用方式為


使用向量存放區抽象概念而不定義您自己的資料模型 (預覽)

警告

語意核心向量存放區功能處於預覽狀態,且需要重大變更的改善可能仍會在發行前有限的情況下發生。

概觀

語意核心向量存放區連接器會使用模型第一種方法來與資料庫互動。 這可讓您輕鬆且簡單地使用連接器,因為數據模型會反映資料庫記錄的架構,以及新增所需的任何其他架構資訊,您只要將數據模型屬性新增至數據模型屬性即可。

不過,在某些情況下,不想要或可能定義您自己的數據模型。 例如,假設您在編譯時期不知道資料庫架構的外觀,而且只會透過組態提供架構。 在此情況下,建立反映架構的數據模型是不可能的。

為了迎合此案例,我們提供一般數據模型。

一般數據模型

泛型數據模型是名為 VectorStoreGenericDataModel 的類別,可在封裝中使用 Microsoft.Extensions.VectorData.Abstractions

若要支援任何類型的資料庫,會透過泛型參數指定的 VectorStoreGenericDataModel 索引鍵類型。

所有其他屬性都會 Data 分成 和 Vector 屬性。 任何不是向量或索引鍵的屬性都會被視為數據屬性。 DataVector 屬性集會儲存為物件的字串索引鍵字典。

使用泛型數據模型時提供架構資訊

使用泛型數據模型時,連接器仍然需要知道資料庫架構的外觀。 如果沒有架構資訊,連接器將無法建立集合,或知道如何對應至每個資料庫所使用的記憶體表示法。

記錄定義可用來提供架構資訊。 不同於數據模型,您可以在運行時間從組態建立記錄定義,以提供在編譯時期不知道架構資訊時的解決方案。

提示

若要查看如何建立記錄定義,請參閱 使用記錄定義來定義架構。

範例

若要搭配連接器使用泛型數據模型,只要在建立集合時將其指定為數據模型,並同時提供記錄定義。

// 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 });

即將推出

更多信息即將推出。

即將推出

更多信息即將推出。