Yapılandırma Yöntemleri

SmartRAG iki yapılandırma yöntemi sunar:

Hızlı Kurulum (Önerilen)

Program.cs veya Startup.cs dosyanızda SmartRAG'i yapılandırın:

using SmartRAG.Extensions;
using SmartRAG.Enums;

var builder = WebApplication.CreateBuilder(args);

// Tek satırda basit yapılandırma
builder.Services.UseSmartRag(builder.Configuration,
    storageProvider: StorageProvider.InMemory,  // In-memory ile başlayın
    aiProvider: AIProvider.Gemini               // AI sağlayıcınızı seçin
);

var app = builder.Build();
app.Run();

Gelişmiş Kurulum

using SmartRAG.Extensions;
using SmartRAG.Enums;

var builder = WebApplication.CreateBuilder(args);

// Seçeneklerle gelişmiş yapılandırma
builder.Services.AddSmartRag(builder.Configuration, options =>
{
    // AI Sağlayıcı
    options.AIProvider = AIProvider.OpenAI;
    
    // Depolama Sağlayıcı
    options.StorageProvider = StorageProvider.Qdrant;
    
    // Parçalama Yapılandırması
    options.MaxChunkSize = 1000;
    options.MinChunkSize = 100;
    options.ChunkOverlap = 200;
    
    // Yeniden Deneme Yapılandırması
    options.MaxRetryAttempts = 3;
    options.RetryDelayMs = 1000;
    options.RetryPolicy = RetryPolicy.ExponentialBackoff;
    
    // Yedek Sağlayıcılar
    options.EnableFallbackProviders = true;
    options.FallbackProviders = new List<AIProvider> 
    { 
        AIProvider.Anthropic, 
        AIProvider.Gemini 
    };
});

var app = builder.Build();
app.Run();

SmartRagOptions - Temel Seçenekler

SmartRagOptions’da mevcut temel yapılandırma seçenekleri:

Seçenek Tip Varsayılan Açıklama
AIProvider AIProvider OpenAI Embedding'ler ve metin üretimi için AI sağlayıcı
StorageProvider StorageProvider InMemory Dokümanlar ve vektörler için depolama backend'i
ConversationStorageProvider ConversationStorageProvider? null Konuşma geçmişi için ayrı depolama (isteğe bağlı)
EnableAutoSchemaAnalysis bool true Başlangıçta veritabanı şemalarını otomatik olarak analiz et
EnablePeriodicSchemaRefresh bool true Veritabanı şemalarını periyodik olarak yenile
DefaultSchemaRefreshIntervalMinutes int 60 Şema yenileme için varsayılan aralık (dakika)

ConversationStorageProvider

Konuşma geçmişi için doküman depolamasından bağımsız ayrı depolama konfigürasyonu:

builder.Services.AddSmartRag(configuration, options =>
{
    options.AIProvider = AIProvider.OpenAI;
    options.StorageProvider = StorageProvider.Qdrant;  // Dokümanlar için
    options.ConversationStorageProvider = ConversationStorageProvider.Redis;  // Konuşmalar için
});

Mevcut Seçenekler

Seçenek Açıklama
Redis Konuşmaları Redis’te sakla (yüksek performans önbellek)
SQLite Konuşmaları SQLite veritabanında sakla (gömülü, hafif)
FileSystem Konuşmaları dosya sisteminde sakla (basit, kalıcı)
InMemory Konuşmaları RAM’de sakla (kalıcı değil, sadece geliştirme)

Konfigürasyon Örneği

{
  "SmartRAG": {
    "ConversationStorageProvider": "Redis",
    "RedisConfig": {
      "ConnectionString": "localhost:6379"
    }
  }
}

Konuşma Depolama İpuçları

  • Redis: Üretim için en iyi, yüksek performans önbellekleme
  • SQLite: Geliştirme ve küçük deployment'lar için iyi
  • FileSystem: Basit, insan tarafından okunabilir depolama
  • InMemory: Hızlı, ancak yeniden başlatmada veri kaybolur

Parçalama Seçenekleri

Seçenek Tip Varsayılan Açıklama
MaxChunkSize int 1000 Her doküman parçasının karakter cinsinden maksimum boyutu
MinChunkSize int 100 Her doküman parçasının karakter cinsinden minimum boyutu
ChunkOverlap int 200 Bitişik parçalar arasında örtüşecek karakter sayısı

Parçalama En İyi Pratikleri

  • MaxChunkSize: Optimal denge için 500-1000 karakter
  • ChunkOverlap: Bağlam koruması için MaxChunkSize'ın %15-20'si
  • Daha büyük parçalar: Daha iyi bağlam, ama daha yavaş arama
  • Daha küçük parçalar: Daha kesin sonuçlar, ama daha az bağlam

Yeniden Deneme & Dayanıklılık Seçenekleri

Seçenek Tip Varsayılan Açıklama
MaxRetryAttempts int 3 AI sağlayıcı istekleri için maksimum yeniden deneme sayısı
RetryDelayMs int 1000 Yeniden denemeler arası bekleme süresi (milisaniye)
RetryPolicy RetryPolicy ExponentialBackoff Başarısız istekler için yeniden deneme politikası
EnableFallbackProviders bool false Hata durumunda alternatif AI sağlayıcılarına geçiş
FallbackProviders List<AIProvider> [] Sırayla denenecek yedek AI sağlayıcıları listesi

RetryPolicy Enum Değerleri:

  • RetryPolicy.None - Yeniden deneme yok
  • RetryPolicy.FixedDelay - Sabit bekleme süresi
  • RetryPolicy.LinearBackoff - Doğrusal artan bekleme
  • RetryPolicy.ExponentialBackoff - Üssel artan bekleme (önerilen)

Örnek Yapılandırma

Geliştirme Ortamı

builder.Services.AddSmartRag(configuration, options =>
{
    // Hızlı geliştirme için
    options.AIProvider = AIProvider.Gemini;
    options.StorageProvider = StorageProvider.InMemory;
    options.MaxChunkSize = 500;
    options.ChunkOverlap = 100;
});

Üretim Ortamı

builder.Services.AddSmartRag(configuration, options =>
{
    // Güvenilir üretim için
    options.AIProvider = AIProvider.OpenAI;
    options.StorageProvider = StorageProvider.Qdrant;
    options.MaxChunkSize = 1000;
    options.ChunkOverlap = 200;
    options.MaxRetryAttempts = 5;
    options.RetryPolicy = RetryPolicy.ExponentialBackoff;
    options.EnableFallbackProviders = true;
    options.FallbackProviders = new List<AIProvider> { AIProvider.Anthropic };
});

Sonraki Adımlar

AI Sağlayıcıları

OpenAI, Anthropic, Google Gemini ve özel sağlayıcılar

AI Sağlayıcıları

Depolama Sağlayıcıları

Qdrant, Redis, SQLite ve diğer depolama seçenekleri

Depolama Sağlayıcıları