Serialisierung Ihres Datenmodells in und aus verschiedenen Stores (Vorschau)
In Kürze verfügbar
Weitere Informationen werden in Kürze verfügbar sein.
Damit Ihr Datenmodell entweder als Klasse oder definition in einer Datenbank gespeichert werden kann, muss es in einem Format serialisiert werden, das die Datenbank verstehen kann.
Es gibt zwei Möglichkeiten, die durchgeführt werden können, entweder mithilfe der integrierten Serialisierung, die vom semantischen Kernel bereitgestellt wird, oder indem Sie Ihre eigene Serialisierungslogik bereitstellen.
Serialisierungsoptionen
Integrierte Serialisierung
Die integrierte Serialisierung erfolgt, indem zuerst das Datenmodell in ein Wörterbuch konvertiert und dann in das Modell serialisiert wird, das vom Speicher verstanden wird, für jeden Speicher, der anders und als Teil des integrierten Connectors definiert ist. Die Deserialisierung erfolgt in umgekehrter Reihenfolge.
Custom to and from dict methods
Die integrierte Serialisierung kann auch benutzerdefinierte Methoden verwenden, um vom Datenmodell zu einem Wörterbuch und von einem Wörterbuch zum Datenmodell zu wechseln. Dies kann durch die Implementierung von Methoden aus VectorStoreModelToDictFromDictProtocol
einer Klasse oder Funktionen erfolgen, die den ToDictProtocol
Protokollen FromDictProtocol
in Ihrer Datensatzdefinition folgen, beide finden Sie in semantic_kernel/data/vector_store_model_protocols.py
.
Dies ist besonders hilfreich, wenn Sie ein optimiertes Containerformat in Ihrem Code verwenden möchten, aber trotzdem problemlos zwischen den Stores wechseln können.
Pydantische Modelle
Wenn Sie ein Modell mit einem Pydantic BaseModel definieren, verwendet es die model_dump
methoden und model_validate
serialisieren das Datenmodell in und von einem Diktat.
Benutzerdefinierte Serialisierung
Sie können auch die Serialisierung definieren, die direkt aus Ihrem Modell in das Modell des Datenspeichers erfolgen soll.
Dies kann durch Implementieren des VectorStoreModelFunctionSerdeProtocol
Protokolls oder durch Hinzufügen von Funktionen erfolgen, die der SerializeProtocol
Und DeserializeProtocol
in Der Datensatzdefinition folgen, beide finden Sie in semantic_kernel/data/vector_store_model_protocols.py
.
Serialisierung von Vektoren
Wenn Sie einen Vektor in Ihrem Datenmodell haben, muss es sich entweder um eine Liste von Floats oder eine Liste von Ints handeln, da dies die meisten Speicher benötigen, wenn Ihre Klasse den Vektor in einem anderen Format speichern soll, können Sie die serialize_function
in der VectorStoreRecordVectorField
Anmerkung definierte und deserialize_function
verwenden. Für ein numpyes Array können Sie z. B. die folgende Anmerkung verwenden:
import numpy as np
vector: Annotated[
np.ndarray | None,
VectorStoreRecordVectorField(
dimensions=1536,
serialize_function=np.ndarray.tolist,
deserialize_function=np.array,
),
] = None
Wenn Sie einen Vektorspeicher verwenden, der systemeigene numpy-Arrays verarbeiten kann und sie nicht hin und her konvertiert werden soll, sollten Sie die direkte Serialisierung und Deserialisierung für das Modell und diesen Speicher einrichten.
In Kürze verfügbar
Weitere Informationen werden in Kürze verfügbar sein.