Freigeben über


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.