Depolama Sağlayıcıları
SmartRAG depolama sağlayıcı yapılandırması - Qdrant, Redis ve InMemory depolama seçenekleri
Depolama Sağlayıcı Yapılandırması
SmartRAG çeşitli depolama sağlayıcılarını destekler:
Qdrant (Vektör Veritabanı)
Qdrant, milyonlarca vektörle üretim kullanımı için tasarlanmış yüksek performanslı bir vektör veritabanıdır:
{
"Storage": {
"Qdrant": {
"Host": "localhost",
"UseHttps": false,
"ApiKey": "",
"CollectionName": "smartrag_documents",
"VectorSize": 768,
"DistanceMetric": "Cosine"
}
}
}
builder.Services.AddSmartRag(configuration, options =>
{
options.StorageProvider = StorageProvider.Qdrant;
});
Avantajlar:
- 🚀 Yüksek performanslı vektör arama
- 📈 Ölçeklenebilir (milyonlarca vektör)
- 🔍 Gelişmiş filtreleme ve metadata desteği
- 🏢 Üretim için ideal
Dezavantajlar:
- 🐳 Docker gerektirir
- 💾 Ek kaynak kullanımı
- 🔧 Kurulum karmaşıklığı
Redis (Yüksek Performanslı Önbellek)
Redis, RediSearch kullanarak vektör benzerlik araması yetenekleriyle hızlı bellek içi depolama sağlar:
{
"Storage": {
"Redis": {
"ConnectionString": "localhost:6379",
"Password": "",
"Username": "",
"Database": 0,
"KeyPrefix": "smartrag:local:",
"ConnectionTimeout": 30,
"EnableSsl": false,
"RetryCount": 3,
"RetryDelay": 1000,
"EnableVectorSearch": true,
"VectorIndexAlgorithm": "HNSW",
"DistanceMetric": "COSINE",
"VectorDimension": 768,
"VectorIndexName": "smartrag_vector_idx"
}
}
}
builder.Services.AddSmartRag(configuration, options =>
{
options.StorageProvider = StorageProvider.Redis;
});
Avantajlar:
- ⚡ Çok hızlı erişim
- 🔄 Otomatik expire desteği
- 📊 Zengin veri tipleri
- 🔍 RediSearch ile vektör benzerlik araması
- 🏢 Üretim için uygun
Dezavantajlar:
- 💾 RAM tabanlı (sınırlı kapasite)
- 🔧 Vektör arama için RediSearch modülü gerekli
- 💰 Ek maliyet
RediSearch Modülü Gerekli
Vektör arama için RediSearch modülü gereklidir. redis/redis-stack-server:latest Docker image'ını kullanın veya Redis sunucunuza RediSearch modülünü yükleyin. RediSearch olmadan sadece metin araması çalışır (vektör benzerlik araması çalışmaz).
Docker örneği:
docker run -d -p 6379:6379 redis/redis-stack-server:latest
InMemory (RAM Depolama)
InMemory depolama, test ve geliştirme için idealdir, tüm verileri RAM’de saklar:
{
"Storage": {
"InMemory": {
"MaxDocuments": 1000
}
}
}
builder.Services.AddSmartRag(configuration, options =>
{
options.StorageProvider = StorageProvider.InMemory;
});
Kullanım Senaryoları:
- 🧪 Test ve geliştirme
- 🚀 Prototip oluşturma
- 📊 Geçici veri
- 🔬 Konsept kanıtı
Önemli
InMemory depolama, uygulama yeniden başlatıldığında tüm verileri kaybeder. Üretim için uygun değil!
Depolama Sağlayıcı Karşılaştırması
Kullanım durumunuz için en iyi seçeneği seçmek üzere depolama sağlayıcılarını karşılaştırın:
| Sağlayıcı | Performans | Ölçeklenebilirlik | Kurulum | Maliyet | Üretim Uygunluğu |
|---|---|---|---|---|---|
| Qdrant | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | Mükemmel |
| Redis | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | İyi |
| InMemory | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Sadece test |
Önerilen Kullanım Senaryoları
Geliştirme ve Test
// Hızlı geliştirme ve test için
options.StorageProvider = StorageProvider.InMemory;
Orta Ölçekli Uygulamalar
// RediSearch ile hızlı ve ölçeklenebilir
options.StorageProvider = StorageProvider.Redis;
Büyük Ölçekli Üretim Uygulamaları
// Milyonlarca vektör için maksimum performans ve ölçeklenebilirlik
options.StorageProvider = StorageProvider.Qdrant;