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.
İpucu
Eski Bellek Depoları yerine Vektör Deposu soyutlamalarını kullanmanızı öneririz. Vektör Deposu soyutlamalarını kullanma hakkında daha fazla bilgi için buradan başlayın.
Semantik Çekirdek, birincil arabiriminin Microsoft.SemanticKernel.Memory.IMemoryStoreolduğu bir dizi Bellek Deposu soyutlaması sağlar.
Bellek Deposu ve Vektör Deposu soyutlamaları
Anlam Çekirdeği'nin vektör depolama ve arama özelliklerini geliştirme ve genişletme çabasının bir parçası olarak Bellek Deposu soyutlamalarının yerini alacak yeni bir soyutlama kümesi yayımladık. Yeni soyutlamalara Vektör Deposu soyutlamaları diyoruz. Her ikisinin de amacı benzerdir, ancak arabirimleri farklıdır ve Vektör Deposu soyutlamaları genişletilmiş işlevsellik sağlar.
| Karakteristik | Eski Bellek Depoları | Vektör Depoları |
|---|---|---|
| Ana Arabirim | IMemoryStore | VectorStore |
| Soyutlamalar NuGet paketi | Microsoft.SemanticKernel.Abstractions | Microsoft.Extensions.VectorData.Abstractions |
| Adlandırma Kuralı | {Provider}MemoryStore, örneğin RedisMemoryStore | {Sağlayıcı} VektörDeposu, örnek olarak RedisVektörDeposu |
| Kayıt ekleme/güncelleme, alma ve silme işlemlerini destekler. | Evet | Evet |
| Koleksiyon oluşturma ve silmeyi destekler | Evet | Evet |
| Vektör arama desteği | Evet | Evet |
| Tercih ettiğiniz vektör arama dizini ve uzaklık işlevini seçmeyi destekler | Hayır | Evet |
| Kayıt başına birden çok vektör destekler | Hayır | Evet |
| Özel şemaları destekler | Hayır | Evet |
| Birden çok vektör türünü destekler | Hayır | Evet |
| Vektör araması için meta veri ön filtrelemeyi destekler | Hayır | Evet |
| Veri kümesinin tamamını istemciye indirip yerel vektör araması yaparak vektör olmayan veritabanlarında vektör aramasını destekler | Evet | Hayır |
Kullanılabilir Bellek Deposu bağlayıcıları
Anlam Çekirdeği, bilgileri depolamak ve almak için kullanabileceğiniz vektör veritabanlarına yönelik birkaç Bellek Deposu bağlayıcısı sunar. Bu şunları içerir:
| Hizmet | C# (programlama dili) | Piton |
|---|---|---|
| NoSQL için Azure Cosmos DB'de Vektör Veritabanı | C# | Piton |
| MongoDB için sanal çekirdek tabanlı Azure Cosmos DB'de Vektör Veritabanı | C# | Piton |
| Azure Yapay Zeka Arama | C# | Piton |
| Azure PostgreSQL Sunucusu | C# | |
| Azure SQL Veritabanı | C# | |
| Kroma | C# | Piton |
| DuckDB | C# | |
| Milvus | C# | Piton |
| MongoDB Atlas Vektör Arama | C# | Piton |
| Pinecone | C# | Piton |
| Postgres | C# | Piton |
| Qdrant | C# | Piton |
| Redis | C# | Piton |
| Sqlite | C# | |
| Ağırlaştır | C# | Piton |
Bellek Depolarından Vektör Depolarına Geçiş
Bellek Deposu soyutlamalarını kullanarak Vektör Deposu soyutlamalarına geçiş yapmak istiyorsanız, bunu yapmanın çeşitli yolları vardır.
Vektör Deposu soyutlamalarıyla mevcut koleksiyonu kullanma
Çoğu durumda en basit yol Yalnızca Bellek Deposu soyutlamaları kullanılarak oluşturulan bir koleksiyona erişmek için Vektör Deposu soyutlamalarını kullanmak olabilir. Vektör Deposu soyutlaması kullanmak istediğiniz şemayı seçmenize olanak tanıdığından çoğu durumda bu mümkündür. Temel gereksinim, eski Bellek Deposu uygulamasının kullandığı şemayla eşleşen bir veri modeli oluşturmaktır.
Örneğin, Azure AI Arama Bellek Deposu tarafından oluşturulan bir koleksiyona erişmek için aşağıdaki Vektör Deposu veri modelini kullanabilirsiniz.
using Microsoft.Extensions.VectorData;
class VectorStoreRecord
{
[VectorStoreKey]
public string Id { get; set; }
[VectorStoreData]
public string Description { get; set; }
[VectorStoreData]
public string Text { get; set; }
[VectorStoreData]
public bool IsReference { get; set; }
[VectorStoreData]
public string ExternalSourceName { get; set; }
[VectorStoreData]
public string AdditionalMetadata { get; set; }
[VectorStoreVector(VectorSize)]
public ReadOnlyMemory<float> Embedding { get; set; }
}
İpucu
Bellek Deposu kullanılarak oluşturulan koleksiyonlara erişmek için Vektör Deposu soyutlamalarını kullanma hakkında daha ayrıntılı örnekler için buraya bakın.
Yeni bir koleksiyon oluşturun
Bazı durumlarda yeni bir koleksiyona geçiş yapmak, mevcut koleksiyonu doğrudan kullanmaktan daha iyi olabilir. Bellek Deposu tarafından seçilen şema, özellikle filtrelemeyle ilgili gereksinimlerinizle eşleşmeyebilir.
Örneğin Redis Bellek deposu üç alanı olan bir şema kullanır:
- dize meta verileri
- uzun zaman mühürü
- float[] ekleme
Ekleme veya zaman damgası dışındaki tüm veriler Meta Veri alanında serileştirilmiş json dizesi olarak depolanır. Bu, tek tek değerlerin dizinini oluşturmanın ve bunları filtrelemenin mümkün olmadığı anlamına gelir. Örneğin, ExternalSourceName kullanarak filtrelemek isteyebilirsiniz, ancak bir json dizesinin içindeyken bu mümkün değildir.
Bu durumda, verileri düz bir şemayla yeni bir koleksiyona geçirmek daha iyi olabilir. Burada iki seçenek vardır. Kaynak verilerinizden yeni bir koleksiyon oluşturabilir veya eski verileri eşleyip yeniye kopyalayabilirsiniz. Kaynak verilerden eklemeleri yeniden oluşturmanız gerekeceği için ilk seçenek daha maliyetli olabilir.
İpucu
Bellek Deposu soyutlamaları kullanılarak oluşturulan bir koleksiyondaki verilerin Vektör Deposu soyutlamaları kullanılarak oluşturulan koleksiyona nasıl kopyalanmasını gösteren Redis kullanımı örneği için buraya bakın.