將資料模型串行化到不同存放區或從不同存放區進行串行化 (預覽)
即將推出
更多信息即將推出。
為了讓數據模型定義為 類別 或 要儲存在資料庫中的定義 ,它必須串行化為資料庫可以理解的格式。
有兩種方式可以完成,使用語意核心所提供的內建串行化,或提供您自己的串行化邏輯。
串行化選項
內建串行化
內建串行化會先將數據模型轉換成字典,然後將它串行化為儲存瞭解的每個存放區,並定義為內建連接器的一部分。 還原串行化是以反向順序完成。
自訂自聽寫方法
內建串行化也可以使用自定義方法,從數據模型移至字典,以及從字典到數據模型。 這可以藉由實 VectorStoreModelToDictFromDictProtocol
作 類別或函式中遵循 ToDictProtocol
記錄定義中的 和 FromDictProtocol
通訊協定的方法來完成,這兩者都可以在 中找到 semantic_kernel/data/vector_store_model_protocols.py
。
當您想要在程式代碼中使用優化的容器格式,但仍想要輕鬆地在存放區之間移動時,這特別有用。
Pydantic 模型
當您使用 Pydantic BaseModel 定義模型時,它會使用 model_dump
和 model_validate
方法來串行化和還原串行化數據模型到聽寫和還原串行化。
自訂序列化
您也可以定義要直接從模型到數據存放區模型的串行化。
這可以藉由實 VectorStoreModelFunctionSerdeProtocol
作通訊協定來完成,或藉由在 記錄定義中加入 遵循 SerializeProtocol
和 DeserializeProtocol
的函式,這兩者都可以在 中找到 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 陣列的向量存放區,而且您不想讓它們來回轉換,您應該設定模型和該存放區的直接串行化和還原串行化。
即將推出
更多信息即將推出。