Sdílet prostřednictvím


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.pysouboru .

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.