Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Agar model data Anda disimpan dalam database, model tersebut perlu dikonversi ke format yang dapat dipahami database. Database yang berbeda memerlukan skema dan format penyimpanan yang berbeda. Beberapa memiliki skema ketat yang perlu dipatuhi, sementara yang lain memungkinkan skema didefinisikan oleh pengguna.
Konektor penyimpanan vektor yang disediakan oleh Semantic Kernel memiliki pemeta bawaan yang akan memetakan model data Anda ke dan dari skema database. Lihat halaman untuk setiap konektor untuk informasi selengkapnya tentang bagaimana pemeta bawaan memetakan data untuk setiap database.
Agar model data Anda didefinisikan baik sebagai kelas atau definisi yang akan disimpan dalam database, model tersebut perlu diserialisasikan ke format yang dapat dipahami database.
Ada dua cara yang dapat dilakukan, baik dengan menggunakan serialisasi bawaan yang disediakan oleh Kernel Semantik atau dengan menyediakan logika serialisasi Anda sendiri.
Dua diagram berikut menunjukkan alur ditampilkan untuk serialisasi dan deserialisasi model data ke dan dari model penyimpanan.
Alur Serialisasi (digunakan dalam Upsert)
Alur Serialisasi
Aliran Deserialisasi (digunakan dalam Get dan Search)
Langkah-langkah yang ditandai dengan * (di kedua diagram) diimplementasikan oleh pengembang konektor tertentu, dan berbeda untuk setiap toko. Langkah-langkah yang ditandai dengan ** (di kedua diagram) disediakan baik sebagai metode pada rekaman atau sebagai bagian dari definisi rekaman, ini selalu disediakan oleh pengguna, lihat Serialisasi Langsung untuk informasi selengkapnya.
Pendekatan (De)Serialisasi
Serialisasi langsung (Model Data ke Model Toko)
Serialisasi langsung adalah cara terbaik untuk memastikan kontrol penuh atas bagaimana model Anda diserialisasikan dan untuk mengoptimalkan performa. Kelemahannya adalah bahwa ini khusus untuk penyimpanan data, dan oleh karena itu, saat menggunakan pendekatan ini, tidak semudah berpindah antara penyimpanan yang berbeda dengan model data yang sama.
Anda dapat menggunakan ini dengan menerapkan metode yang mengikuti protokol SerializeMethodProtocol dalam model data Anda, atau dengan menambahkan fungsi yang mengikuti SerializeFunctionProtocol ke definisi rekaman Anda, keduanya dapat ditemukan di semantic_kernel/data/vector_store_model_protocols.py.
Ketika salah satu fungsi tersebut ada, fungsi tersebut akan digunakan untuk secara langsung menserialisasikan model data ke model penyimpanan.
Anda bahkan bisa mengimplementasikan salah satunya saja dan menggunakan serialisasi/deserialisasi bawaan untuk arah sebaliknya. Ini misalnya dapat berguna saat berhadapan dengan koleksi yang dibuat di luar kendali Anda dan Anda perlu menyesuaikan cara deserialisasi (dan Anda memang tidak bisa melakukan upsert).
Serialisasi bawaan (de)(Model Data ke Dict dan Dict untuk Menyimpan Model dan sebaliknya)
Serialisasi bawaan dilakukan dengan terlebih dahulu mengonversi model data menjadi kamus dan kemudian menserialisasikannya ke model yang dipahami penyimpanan, untuk setiap penyimpanan yang berbeda dan didefinisikan sebagai bagian dari konektor bawaan. Deserialisasi dilakukan dalam urutan terbalik.
Serialisasi Langkah 1: Model Data ke Dict
Bergantung pada jenis model data yang Anda miliki, langkah-langkahnya dilakukan dengan cara yang berbeda. Ada empat cara yang akan coba diserialisasikan model data ke kamus:
- metode
to_dictdalam definisi (sangat selaras dengan atribut to_dict dari model data, sesuai denganToDictFunctionProtocol) - periksa apakah rekaman adalah
ToDictMethodProtocoldan gunakan metodeto_dict - Periksa apakah catatan tersebut adalah model Pydantic dan gunakan
model_dumpdari model tersebut, lihat catatan di bawah ini untuk informasi selengkapnya. - mengulangi bidang dalam definisi dan membuat kamus
Opsional: Penyematan
Ketika Anda memiliki model data dengan embedding_generator bidang, atau koleksi memiliki embedding_generator bidang, penyematan akan dihasilkan dan ditambahkan ke kamus sebelum diserialisasikan ke model penyimpanan.
Serialisasi Langkah 2: Dict untuk Menyimpan Model
Konektor harus menyediakan metode untuk mengonversi kamus ke model penyimpanan. Ini dilakukan oleh pengembang konektor dan berbeda untuk setiap toko.
Deserialisasi Langkah 1: Simpan Model ke Dict
Metode harus disediakan oleh konektor untuk mengonversi model penyimpanan ke kamus. Ini dilakukan oleh pengembang konektor dan berbeda untuk setiap toko.
Deserialisasi Langkah 2: Menentukan model data
Deserialisasi dilakukan dalam urutan terbalik, ia mencoba opsi ini:
- metode
from_dictpada definisi (selaras dengan model data atribut from_dict, sesuai denganFromDictFunctionProtocol) - periksa apakah rekaman adalah
FromDictMethodProtocoldan gunakan metodefrom_dict - Periksa apakah catatan tersebut adalah model Pydantic dan gunakan
model_validatedari model tersebut, lihat catatan di bawah ini untuk informasi selengkapnya. - Lewati setiap bidang dalam definisi dan atur nilainya, kemudian dict ini diteruskan ke konstruktor model data sebagai argumen bernama (kecuali jika model data itu sendiri adalah dict, dalam hal ini dikembalikan apa adanya).
Nota
Menggunakan Pydantic dengan serialisasi bawaan
Ketika Anda menentukan model Anda menggunakan Pydantic BaseModel, itu akan menggunakan model_dump metode dan model_validate untuk menserialisasikan dan mendeserialisasi model data ke dan dari dict. Ini dilakukan dengan menggunakan metode model_dump tanpa parameter apa pun, jika Anda ingin mengontrolnya, pertimbangkan untuk menerapkan ToDictMethodProtocol pada model data Anda, seperti yang dicoba terlebih dahulu.
Segera hadir
Info lebih lanjut akan segera hadir.