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.