Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Veri modelinizin bir veritabanında depolanması için veritabanının anlayabileceği bir biçime dönüştürülmesi gerekir. Farklı veritabanları için farklı depolama şemaları ve biçimleri gerekir. Bazılarının bağlı kalması gereken katı bir şeması vardır, bazıları ise şemanın kullanıcı tarafından tanımlanmasına izin verir.
Anlam Çekirdeği tarafından sağlanan vektör deposu bağlayıcıları, veri modelinizi veritabanı şemalarına ve bu şemalardan eşleyecek yerleşik eşleyicilere sahiptir. Yerleşik eşleyicilerin her veritabanı için verileri nasıl eşlediğini öğrenmek için her bağlayıcı için
Sınıf veya tanım olarak tanımlanan veri modelinizin veritabanında depolanması için, veritabanının anlayabileceği bir biçimde seri hale getirilmelidir.
Semantik Çekirdek tarafından sağlanan yerleşik serileştirmeyi kullanarak veya kendi serileştirme mantığınızı sağlayarak iki yöntem yapılabilir.
Aşağıdaki iki diyagramda, veri modellerinin hem seri hale getirilmesi hem de bir depo modelinden seri durumdan çıkarılması için akışlar gösterilmektedir.
Serileştirme Akışı (Upsert'te kullanılır)
Deserilizasyon Akışı (Alma ve Arama'da kullanılır)
* ile işaretlenmiş adımlar (her iki diyagramda da) belirli bir bağlayıcının geliştiricisi tarafından uygulanır ve her mağaza için farklıdır.
** ile işaretlenmiş adımlar (her iki diyagramda da) bir kayıtta yöntem olarak veya kayıt tanımının bir parçası olarak sağlanır; bu her zaman kullanıcı tarafından sağlanır, daha fazla bilgi için bkz. doğrudan seri hale getirme
(De)Serileştirme yaklaşımları
Doğrudan serileştirme (Veri Modelinden Depolama Modeline)
Doğrudan serileştirme, modellerinizin nasıl seri hale getirildiği üzerinde tam denetim sağlamanın ve performansı iyileştirmenin en iyi yoludur. Dezavantajı, veri deposuna özgü olmasıdır ve bu nedenle bunu kullanırken aynı veri modeline sahip farklı depolar arasında geçiş yapmak o kadar kolay değildir.
Bunu, veri modelinizde SerializeMethodProtocol protokolü izleyen bir yöntem uygulayarak veya kayıt tanımınıza SerializeFunctionProtocol izleyen işlevler ekleyerek kullanabilirsiniz; her ikisi de semantic_kernel/data/vector_store_model_protocols.pyiçinde bulunabilir.
Bu işlevlerden biri mevcut olduğunda, veri modelini doğrudan depo modeline seri hale getirmek için kullanılır.
Hatta iki öğeden yalnızca birini uygulayıp diğer yönde yerleşik serileştirme veya deserileştirme özelliğini kullanabilirsiniz. Bu, örneğin, kontrolünüz dışındaki bir koleksiyonla ilgilenirken yararlı olabilir ve serileştirilme biçiminde bazı özelleştirmeler yapmanız gerekebilir (ve yine de upsert yapmanız mümkün değil).
Yerleşik (de)serileştirme (Veri Modeli'ne Dikte etme ve Mağaza Modeline Dikte Etme ve tam tersi)
Yerleşik serileştirme, önce veri modelini bir sözlüğe dönüştürüp ardından farklı olan ve yerleşik bağlayıcının parçası olarak tanımlanan her depo için bunu depolayan modele seri hale getirerek yapılır. Seri durumdan çıkarma ters sırada yapılır.
Serileştirme Adım 1: Dikte Etmek için Veri Modeli
Sahip olduğunuz veri modeli türüne bağlı olarak, adımlar farklı şekillerde gerçekleştirilir. Veri modelini bir sözlükte seri hale getirmenin dört yolu vardır:
- tanımda
to_dictyöntemi (ToDictFunctionProtocolizleyerek veri modelinin to_dict özniteliğine hizalanır) - Kaydın bir
ToDictMethodProtocololup olmadığını denetleyin veto_dictyöntemini kullanın - Kaydın bir Pydantic modeli olup olmadığını kontrol edin ve modelin
model_dump'ını kullanın, daha fazla bilgi için aşağıdaki nota bakın. - tanımdaki alanlar arasında döngü yapın ve sözlüğü oluşturun
İsteğe bağlı: Ekleme
Veri modelinizin bir embedding_generator alanı varsa veya koleksiyonun bir embedding_generator alanı varsa, gömü oluşturulur ve depo modeline serileştirilmeden önce sözlüğe eklenir.
Serileştirme Adım 2: Modeli Depolamaya Dikte Etme
Sözlüğü depo modeline dönüştürmek için bağlayıcı tarafından bir yöntem sağlanması gerekir. Bu işlem bağlayıcının geliştiricisi tarafından yapılır ve her mağaza için farklıdır.
Seri Durumdan Çıkarma 1. Adım: Modeli Dikte Etmek için Depolama
Depo modelini sözlüğe dönüştürmek için bağlayıcı tarafından bir yöntem sağlanması gerekir. Bu işlem bağlayıcının geliştiricisi tarafından yapılır ve her mağaza için farklıdır.
Seri Durumdan Çıkarma 2. Adım: Veri Modeline Dikte Etme
Seri durumdan çıkarma işlemi ters sırada yapılır. Ardından, şu seçenekleri dener:
- tanımda
from_dictyöntemi (FromDictFunctionProtocolizleyerek veri modelinin from_dict özniteliğine hizalanır) - Kaydın bir
FromDictMethodProtocololup olmadığını denetleyin vefrom_dictyöntemini kullanın - Kaydın bir Pydantic modeli olup olmadığını kontrol edin ve modelin
model_validate'ını kullanın, daha fazla bilgi için aşağıdaki nota bakın. - tanımdaki alanlar arasında döngü yapın ve değerleri ayarlayın, ardından bu dikte veri modelinin oluşturucusuna adlandırılmış bağımsız değişkenler olarak geçirilir (veri modeli bir dikte olmadığı sürece, bu durumda olduğu gibi döndürülür)
Not
Yerleşik serileştirme ile Pydantic kullanma
Pydantic BaseModel kullanarak model tanımladığınızda, veri modelini seri hale getirmek ve bir dikteden seri durumdan çıkarmak için ve model_dump yöntemlerini kullanırmodel_validate. Bu, model_dump yöntemi herhangi bir parametre olmadan kullanılarak gerçekleştirilir. Bunu denetlemek istiyorsanız, önce denendiği gibi veri modelinizde ToDictMethodProtocol uygulamayı göz önünde bulundurun.
Yakında
Daha fazla bilgi yakında sunulacaktır.