Temel Yapılandırma
SmartRAG temel yapılandırma seçenekleri - yapılandırma yöntemleri, parçalama ve yeniden deneme ayarları
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 yokRetryPolicy.FixedDelay- Sabit bekleme süresiRetryPolicy.LinearBackoff- Doğrusal artan beklemeRetryPolicy.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 };
});