共用方式為


將資料模型串行化到不同存放區或從不同存放區進行串行化 (預覽)

即將推出

更多信息即將推出。

為了讓數據模型定義為 類別要儲存在資料庫中的定義 ,它必須串行化為資料庫可以理解的格式。

有兩種方式可以完成,使用語意核心所提供的內建串行化,或提供您自己的串行化邏輯。

串行化選項

內建串行化

內建串行化會先將數據模型轉換成字典,然後將它串行化為儲存瞭解的每個存放區,並定義為內建連接器的一部分。 還原串行化是以反向順序完成。

自訂自聽寫方法

內建串行化也可以使用自定義方法,從數據模型移至字典,以及從字典到數據模型。 這可以藉由實 VectorStoreModelToDictFromDictProtocol 作 類別或函式中遵循 ToDictProtocol 記錄定義中的 和 FromDictProtocol 通訊協定的方法來完成,這兩者都可以在 中找到 semantic_kernel/data/vector_store_model_protocols.py

當您想要在程式代碼中使用優化的容器格式,但仍想要輕鬆地在存放區之間移動時,這特別有用。

Pydantic 模型

當您使用 Pydantic BaseModel 定義模型時,它會使用 model_dumpmodel_validate 方法來串行化和還原串行化數據模型到聽寫和還原串行化。

自訂序列化

您也可以定義要直接從模型到數據存放區模型的串行化。

這可以藉由實 VectorStoreModelFunctionSerdeProtocol 作通訊協定來完成,或藉由在 記錄定義中加入 遵循 SerializeProtocolDeserializeProtocol 的函式,這兩者都可以在 中找到 semantic_kernel/data/vector_store_model_protocols.py

向量串行化

當您的資料模型中有向量時,它必須是浮點數清單或 ints 清單,因為這是大部分存放區所需的,如果您想要讓類別以不同的格式儲存向量,您可以使用 serialize_function 註釋中VectorStoreRecordVectorField定義的 和 deserialize_function 。 例如,對於 numpy 陣列,您可以使用下列註釋:

import numpy as np

vector: Annotated[
    np.ndarray | None,
    VectorStoreRecordVectorField(
        dimensions=1536,
        serialize_function=np.ndarray.tolist,
        deserialize_function=np.array,
    ),
] = None

如果您使用可以處理原生 numpy 陣列的向量存放區,而且您不想讓它們來回轉換,您應該設定模型和該存放區的直接串行化和還原串行化。

即將推出

更多信息即將推出。