Aracılığıyla paylaş


Faiss bağlayıcısını kullanma (Önizleme)

Uyarı

Semantik Çekirdek Vektör Deposu işlevselliği önizleme aşamasındadır ve mevcut sistemi bozabilecek değişiklikler gerektiren iyileştirmeler, sürümden önce sınırlı koşullarda ortaya çıkabilir.

Şu anda desteklenmiyor

Genel bakış

Faiss Vector Store bağlayıcısı, dış veritabanı kullanmadan verileri bellekte ve vektörlerde faiss dizininde depolayan Anlam Çekirdeği tarafından sağlanan bir Vektör Deposu uygulamasıdır. Arama için Faiss dizinlerini kullanırken kayıtların diğer bölümleri için InMemoryVectorCollection kullanır. Bu Vektör Deposu, prototip oluşturma senaryoları veya yüksek hızlı bellek içi işlemlerin gerekli olduğu durumlarda kullanışlıdır.

Bağlayıcı aşağıdaki özelliklere sahiptir.

Özellik Alanı Destek
Koleksiyon şu öğeleri haritalıyor Bellek içi ve Faiss indeksleri sözlüğü
Desteklenen anahtar özellik türleri Python belgelerindeki ayrıntılar için herhangi bir dict anahtarı olarak kabul edilebilecek öğeye bakın burada
Desteklenen veri özelliği türleri Herhangi bir tür
Desteklenen vektör özelliği türleri
  • liste[float]
  • liste[int]
  • numpy dizisi
Desteklenen dizin türleri Düz (bkz. özel dizinler)
Desteklenen uzaklık işlevleri
  • NoktaLı Ürün Benzerliği
  • Öklid Karesi Uzaklığı
Bir kayıtta birden çok vektör destekler Evet
is_filterable özelliği destekleniyor mu? Evet
is_full_text_searchable destekleniyor mu? Evet

Başlarken

Semantik Çekirdek paketini projenize ekleyin.

pip install semantic-kernel[faiss]

Aşağıdaki kod parçacıklarında, 'DataModel' adlı bir veri modeli sınıfı tanımladığınız varsayılır.

from semantic_kernel.connectors.faiss import FaissStore

vector_store = FaissStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)

Adlandırılmış bir koleksiyona doğrudan başvuru oluşturmak mümkündür.

from semantic_kernel.connectors.faiss import FaissCollection

vector_collection = FaissCollection(DataModel, collection_name="collection_name")

Özel dizinler

Faiss bağlayıcısı Düz dizin türüyle sınırlıdır.

Faiss dizinlerinin karmaşıklığı göz önüne alındığında, faiss-gpu paketini oluşturma ve bu paketten dizinleri kullanma dahil olmak üzere kendi dizininizi (es) oluşturabilirsiniz. Bunu yaparken, vektör alanında tanımlanan tüm ölçümler yoksayılır. Veri modelinizde birden çok vektör varsa, yalnızca istediğiniz vektörler için özel dizinleri belirtebilir ve diğerleri için yerleşik dizinlerin otomatik olarak oluşturulmasına izin verebilirsiniz. Bu işlem, düz bir dizinle ve modelde tanımlanan ölçümle gerçekleştirilir.

Unutmayın, dizin eğitim gerektiriyorsa bunu da yaptığınızdan emin olun. Dizini her kullandığımızda dizinin is_trained özniteliğinde bir denetim yapılır.

Dizin, koleksiyonun indexes özelliğinde her zaman kullanılabilir (özel veya yerleşik). Dizin indeksini almak ve üzerinde istediğiniz işlemleri yapmak için bunu kullanabilirsiniz; böylece daha sonra eğitim gerçekleştirebilirsiniz. Sadece, herhangi bir CRUD işlemleri gerçekleştirmeden önce bunu yaptığınızdan emin olun.

Özel indeksinizi kullanmak için aşağıdakilerden birini kullanın:


import faiss

from semantic_kernel.connectors.faiss import FaissCollection

index = faiss.IndexHNSW(d=768, M=16, efConstruction=200) # or some other index
vector_collection = FaissCollection(
    record_type=DataModel, 
    collection_name="collection_name", 
    indexes={"vector_field_name": index}
)

veya:


import faiss

from semantic_kernel.connectors.faiss import FaissCollection

index = faiss.IndexHNSW(d=768, M=16, efConstruction=200) # or some other index
vector_collection = FaissCollection(
    record_type=DataModel,
    collection_name="collection_name", 
)
await vector_collection.ensure_collection_exists(
    indexes={"vector_field_name": index}
)
# or when you have only one vector field:
await vector_collection.ensure_collection_exists(
    index=index
)

Şu anda desteklenmiyor