Serializace datového modelu do a z různých úložišť (Preview)
Již brzy
Další informace budou brzy k dispozici.
Aby byl datový model definovaný buď jako třída , nebo definice uložená v databázi, musí být serializován do formátu, kterému databáze rozumí.
Existují dva způsoby, které lze provést buď pomocí integrované serializace poskytované sémantické jádro, nebo poskytnutím vlastní logiky serializace.
Možnosti serializace
Integrovaná serializace
Předdefinovaná serializace se provádí tak, že nejprve převedete datový model do slovníku a potom ho serializujete na model, který ukládá, pro každé úložiště, které je odlišné a definované jako součást integrovaného konektoru. Deserializace se provádí v obráceném pořadí.
Vlastní metody a metody diktování
Integrovaná serializace může také použít vlastní metody pro přechod z datového modelu do slovníku a ze slovníku do datového modelu. To lze provést implementací metod z VectorStoreModelToDictFromDictProtocol
třídy nebo funkcí, které ToDictProtocol
následují podle definice záznamu a FromDictProtocol
protokolů, oba lze nalézt v semantic_kernel/data/vector_store_model_protocols.py
.
To je užitečné hlavně v případě, že chcete ve svém kódu použít optimalizovaný formát kontejneru, ale přesto chcete být schopni snadno přecházet mezi úložišti.
Pydantické modely
Když definujete model pomocí modelu Pydantic BaseModel, použije model_dump
model_validate
a metody k serializaci a deserializaci datového modelu do a z diktování.
Vlastní serializace
Můžete také definovat serializaci, která se má provést přímo z modelu do modelu úložiště dat.
To lze provést implementací VectorStoreModelFunctionSerdeProtocol
protokolu nebo přidáním funkcí, které následují za definicí záznamu SerializeProtocol
a DeserializeProtocol
v definici záznamu, najdete je v semantic_kernel/data/vector_store_model_protocols.py
souboru .
Serializace vektorů
Pokud máte vektor v datovém modelu, musí to být buď seznam plovoucích hodnot, nebo seznam int, protože to je to, co většina úložišť potřebuje, pokud chcete, aby vaše třída ukládala vektor v jiném formátu, můžete použít serialize_function
a deserialize_function
definovat v VectorStoreRecordVectorField
poznámce. Například pro pole numpy můžete použít následující poznámku:
import numpy as np
vector: Annotated[
np.ndarray | None,
VectorStoreRecordVectorField(
dimensions=1536,
serialize_function=np.ndarray.tolist,
deserialize_function=np.array,
),
] = None
Pokud používáte vektorové úložiště, které dokáže zpracovat nativní pole numpy a nechcete je převést zpět a zpět, měli byste nastavit přímou serializaci a deserializaci modelu a úložiště.
Již brzy
Další informace budou brzy k dispozici.