Delen via


Serialisatie van uw gegevensmodel naar en van verschillende winkels (preview)

Binnenkort beschikbaar

Binnenkort meer informatie.

Als u wilt dat uw gegevensmodel is gedefinieerd als een klasse of een definitie die in een database moet worden opgeslagen, moet het worden geserialiseerd naar een indeling die de database kan begrijpen.

Er zijn twee manieren waarop u kunt doen door gebruik te maken van de ingebouwde serialisatie die wordt geleverd door de Semantische kernel of door uw eigen serialisatielogica op te geven.

Serialisatieopties

Ingebouwde serialisatie

De ingebouwde serialisatie wordt uitgevoerd door eerst het gegevensmodel te converteren naar een woordenlijst en het vervolgens te serialiseren naar het model dat wordt begrepen, voor elk archief dat anders is en gedefinieerd als onderdeel van de ingebouwde connector. Deserialisatie wordt uitgevoerd in de omgekeerde volgorde.

Aangepast aan en van dictmethoden

De ingebouwde serialisatie kan ook aangepaste methoden gebruiken om van het gegevensmodel naar een woordenlijst en van een woordenlijst naar het gegevensmodel te gaan. Dit kan worden gedaan door methoden uit de VectorStoreModelToDictFromDictProtocol voor een klasse of functies te implementeren die volgen op de ToDictProtocol en FromDictProtocol protocollen in uw recorddefinitie, beide zijn te vinden in semantic_kernel/data/vector_store_model_protocols.py.

Dit is met name handig als u een geoptimaliseerde containerindeling in uw code wilt gebruiken, maar toch eenvoudig wilt kunnen schakelen tussen winkels.

Pydantische modellen

Wanneer u een Model definieert met behulp van een Pydantic BaseModel, worden de model_dump en model_validate methoden gebruikt om het gegevensmodel naar en van een dict te serialiseren en deserialiseren.

Aangepaste serialisatie

U kunt ook de serialisatie definiƫren die rechtstreeks vanuit uw model moet worden uitgevoerd in het model van het gegevensarchief.

U kunt dit doen door het VectorStoreModelFunctionSerdeProtocol protocol te implementeren of door functies toe te voegen die voldoen aan de SerializeProtocol en DeserializeProtocol in uw recorddefinitie, beide vindt u in semantic_kernel/data/vector_store_model_protocols.py.

Serialisatie van vectoren

Wanneer u een vector in uw gegevensmodel hebt, moet het een lijst met floats of een lijst met ints zijn, omdat dat de meeste winkels nodig hebben, als u wilt dat uw klasse de vector in een andere indeling opslaat, kunt u de serialize_function en gedefinieerde aantekening VectorStoreRecordVectorField gebruiken.deserialize_function Voor een numpymatrix kunt u bijvoorbeeld de volgende aantekening gebruiken:

import numpy as np

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

Als u een vectorarchief gebruikt dat systeemeigen numpymatrices kan verwerken en u deze niet wilt laten converteren, moet u de directe serialisatie en deserialisatie instellen voor het model en dat archief.

Binnenkort beschikbaar

Binnenkort meer informatie.