Veri Modelleri

RagResponse

Kaynaklar ve yapılandırma metadata’sı ile AI tarafından üretilen yanıt.

public class RagResponse
{
    public string Query { get; set; }                    // Orijinal sorgu
    public string Answer { get; set; }                   // AI tarafından üretilen cevap
    public List<SearchSource> Sources { get; set; }       // Kaynak dokümanlar
    public DateTime SearchedAt { get; set; }             // Zaman damgası
    public RagConfiguration Configuration { get; set; }  // Sağlayıcı yapılandırması
}

RagConfiguration:

public class RagConfiguration
{
    public string AIProvider { get; set; }      // Kullanılan AI sağlayıcı
    public string StorageProvider { get; set; }  // Kullanılan depolama sağlayıcı
    public string Model { get; set; }            // Kullanılan model adı
}

Örnek Yanıt:

{
  "query": "RAG nedir?",
  "answer": "RAG (Retrieval-Augmented Generation) şudur...",
  "sources": [
    {
      "sourceType": "Document",
      "documentId": "abc-123",
      "fileName": "ml-rehberi.pdf",
      "relevantContent": "RAG retrieval'ı birleştirir...",
      "relevanceScore": 0.92
    }
  ],
  "searchedAt": "2025-10-18T14:30:00Z",
  "configuration": {
    "aiProvider": "OpenAI",
    "storageProvider": "Qdrant",
    "model": "gpt-4"
  }
}

Document

Metadata ve chunk’lar ile doküman varlığı.

public class Document
{
    public Guid Id { get; set; }                          // Doküman ID
    public string FileName { get; set; }                   // Orijinal dosya adı
    public string ContentType { get; set; }                // MIME tipi
    public string Content { get; set; }                    // Çıkarılan metin içeriği
    public string UploadedBy { get; set; }                 // Kullanıcı tanımlayıcısı
    public DateTime UploadedAt { get; set; }              // Yükleme zaman damgası
    public List<DocumentChunk> Chunks { get; set; }        // Doküman chunk'ları
    public Dictionary<string, object> Metadata { get; set; } // İsteğe bağlı metadata
    public long FileSize { get; set; }                     // Dosya boyutu (bayt)
}

DocumentChunk

Embedding ve ilgili skor ile doküman chunk’ı.

public class DocumentChunk
{
    public Guid Id { get; set; }                          // Chunk ID
    public Guid DocumentId { get; set; }                 // Ana doküman ID
    public string Content { get; set; }                   // Chunk metin içeriği
    public int ChunkIndex { get; set; }                    // Dokümandaki konum
    public List<float> Embedding { get; set; }             // Vektör embedding
    public double? RelevanceScore { get; set; }            // Benzerlik skoru (0-1)
    public DateTime CreatedAt { get; set; }                // Oluşturulma zaman damgası
    public int StartPosition { get; set; }                 // Dokümandaki başlangıç konumu
    public int EndPosition { get; set; }                  // Dokümandaki bitiş konumu
}

SearchSource

Doküman bilgisi ve ilgili skor ile arama sonucu kaynağını temsil eder.

public class SearchSource
{
    public string SourceType { get; set; }                // Tip: Document, Audio, Database, Image, System
    public Guid DocumentId { get; set; }                  // Doküman ID (varsa)
    public string FileName { get; set; }                  // Dosya adı
    public string RelevantContent { get; set; }           // İlgili içerik özeti
    public double RelevanceScore { get; set; }             // İlgili skor (0-1)
    public string? Location { get; set; }                  // Konum metadata'sı
    public string? DatabaseId { get; set; }                // Veritabanı ID (varsa)
    public string? DatabaseName { get; set; }              // Veritabanı adı (varsa)
    public List<string> Tables { get; set; }               // Referans verilen tablolar (varsa)
    public string? ExecutedQuery { get; set; }             // Çalıştırılan sorgu (varsa)
    public int? RowNumber { get; set; }                    // Satır numarası (varsa)
    public double? StartTimeSeconds { get; set; }          // Ses için başlangıç zamanı (varsa)
    public double? EndTimeSeconds { get; set; }            // Ses için bitiş zamanı (varsa)
    public int? ChunkIndex { get; set; }                   // Chunk indeksi (varsa)
    public int? StartPosition { get; set; }                // Başlangıç konumu (varsa)
    public int? EndPosition { get; set; }                  // Bitiş konumu (varsa)
}

SearchOptions

Belirli bir arama isteğini yapılandırmak için seçenekler.

public class SearchOptions
{
    public bool EnableDatabaseSearch { get; set; } = true;    // Veritabanı aramasını etkinleştir
    public bool EnableDocumentSearch { get; set; } = true;    // Doküman aramasını etkinleştir
    public bool EnableAudioSearch { get; set; } = true;        // Ses aramasını etkinleştir
    public bool EnableImageSearch { get; set; } = true;       // Görüntü aramasını etkinleştir
    public string? PreferredLanguage { get; set; }             // Tercih edilen dil (ISO 639-1)
    
    public static SearchOptions Default => new SearchOptions();
    public static SearchOptions FromConfig(SmartRagOptions options) { ... }
}

QueryIntent

Çoklu veritabanı sorgulama için AI tarafından analiz edilen sorgu niyetini temsil eder.

public class QueryIntent
{
    public string OriginalQuery { get; set; }                    // Orijinal kullanıcı sorgusu
    public string QueryUnderstanding { get; set; }               // AI'nın anlayışı
    public List<DatabaseQueryIntent> DatabaseQueries { get; set; } // Gerekli sorgular
    public double Confidence { get; set; }                        // Güven seviyesi (0-1)
    public bool RequiresCrossDatabaseJoin { get; set; }          // Cross-DB join gerekli
    public string Reasoning { get; set; }                        // AI mantığı
}

DatabaseQueryIntent:

public class DatabaseQueryIntent
{
    public string DatabaseId { get; set; }                       // Veritabanı ID
    public string DatabaseName { get; set; }                     // Veritabanı adı
    public List<string> RequiredTables { get; set; }             // Sorgulanacak tablolar
    public Dictionary<string, List<string>> RequiredColumns { get; set; } // Gerekli kolonlar
    public string GeneratedQuery { get; set; }                   // Üretilen SQL
    public string Purpose { get; set; }                           // Sorgu amacı
    public int Priority { get; set; } = 1;                      // Öncelik (yüksek = daha önemli)
}

DatabaseConfig

Veritabanı ayrıştırma işlemleri için yapılandırma.

public class DatabaseConfig
{
    public DatabaseType Type { get; set; }                      // Veritabanı tipi
    public string ConnectionString { get; set; }                 // Bağlantı dizesi
    public List<string> IncludedTables { get; set; }             // Dahil edilecek tablolar
    public List<string> ExcludedTables { get; set; }             // Hariç tutulacak tablolar
    public int MaxRowsPerTable { get; set; } = 1000;             // Tablo başına maksimum satır
    public bool IncludeSchema { get; set; } = true;              // Şema bilgisi dahil et
    public bool IncludeIndexes { get; set; } = false;            // İndeks bilgisi dahil et
    public bool IncludeForeignKeys { get; set; } = true;         // Foreign key'leri dahil et
    public int QueryTimeoutSeconds { get; set; } = 30;           // Sorgu zaman aşımı
    public bool SanitizeSensitiveData { get; set; } = true;     // Hassas verileri temizle
    public List<string> SensitiveColumns { get; set; }            // Hassas kolon desenleri
    public bool EnableConnectionPooling { get; set; } = true;     // Bağlantı havuzlamayı etkinleştir
    public int MaxPoolSize { get; set; } = 10;                   // Maksimum havuz boyutu
    public int MinPoolSize { get; set; } = 2;                    // Minimum havuz boyutu
    public bool EnableQueryCaching { get; set; } = true;        // Sorgu önbelleğini etkinleştir
    public int CacheDurationMinutes { get; set; } = 30;         // Önbellek süresi
    public bool EnableParallelProcessing { get; set; } = true;   // Paralel işlemeyi etkinleştir
    public int MaxDegreeOfParallelism { get; set; } = 3;        // Maksimum paralellik
    public bool EnableStreaming { get; set; } = true;            // Streaming'i etkinleştir
    public int StreamingBatchSize { get; set; } = 1000;         // Streaming batch boyutu
    public int MaxMemoryThresholdMB { get; set; } = 500;         // Bellek eşiği
    public bool EnableAutoGarbageCollection { get; set; } = true; // Otomatik GC
    public bool ForceStreamingMode { get; set; } = false;       // Streaming modunu zorla
    public int MaxStringBuilderCapacity { get; set; } = 65536;  // String builder kapasitesi
}

DatabaseConnectionConfig

Veritabanı bağlantısı için yapılandırma.

public class DatabaseConnectionConfig
{
    public string Name { get; set; }                            // İsteğe bağlı bağlantı adı
    public string ConnectionString { get; set; }                // Bağlantı dizesi
    public DatabaseType DatabaseType { get; set; }               // Veritabanı tipi
    public string Description { get; set; }                     // İsteğe bağlı açıklama
    public bool Enabled { get; set; } = true;                    // Etkin mi
    public int MaxRowsPerQuery { get; set; }                     // Sorgu başına maksimum satır
    public int QueryTimeoutSeconds { get; set; }                 // Sorgu zaman aşımı
    public int SchemaRefreshIntervalMinutes { get; set; } = 0;   // Otomatik yenileme aralığı
    public string[] IncludedTables { get; set; }                 // Dahil edilecek tablolar
    public string[] ExcludedTables { get; set; }                 // Hariç tutulacak tablolar
}

DatabaseConnectionRequest

Veritabanı bağlantı işlemleri için istek modeli.

public class DatabaseConnectionRequest
{
    public string ConnectionString { get; set; }                // Bağlantı dizesi
    public DatabaseType DatabaseType { get; set; }               // Veritabanı tipi
    public List<string> IncludedTables { get; set; }              // Dahil edilecek tablolar
    public List<string> ExcludedTables { get; set; }              // Hariç tutulacak tablolar
    public int MaxRows { get; set; } = 1000;                      // Maksimum satır
    public bool IncludeSchema { get; set; } = true;              // Şema dahil et
    public bool IncludeForeignKeys { get; set; } = true;          // Foreign key'leri dahil et
    public bool SanitizeSensitiveData { get; set; } = true;      // Hassas verileri temizle
}

DatabaseSchemaInfo

Veritabanı için kapsamlı şema bilgisi.

public class DatabaseSchemaInfo
{
    public string DatabaseId { get; set; }                      // Benzersiz veritabanı ID
    public string DatabaseName { get; set; }                     // Veritabanı adı
    public DatabaseType DatabaseType { get; set; }               // Veritabanı tipi
    public string Description { get; set; }                      // Açıklama
    public DateTime LastAnalyzed { get; set; }                   // Son analiz zamanı
    public List<TableSchemaInfo> Tables { get; set; }           // Tablolar
    public string AISummary { get; set; }                        // AI tarafından üretilen özet
    public long TotalRowCount { get; set; }                      // Toplam satır sayısı
    public SchemaAnalysisStatus Status { get; set; }              // Analiz durumu
    public string ErrorMessage { get; set; }                     // Hata mesajı (başarısızsa)
}

TableSchemaInfo:

public class TableSchemaInfo
{
    public string TableName { get; set; }                        // Tablo adı
    public List<ColumnSchemaInfo> Columns { get; set; }          // Kolonlar
    public List<string> PrimaryKeys { get; set; }                 // Primary key'ler
    public List<ForeignKeyInfo> ForeignKeys { get; set; }         // Foreign key'ler
    public long RowCount { get; set; }                           // Satır sayısı
    public string AIDescription { get; set; }                    // AI açıklaması
    public string SampleData { get; set; }                       // Örnek veri
}

ColumnSchemaInfo:

public class ColumnSchemaInfo
{
    public string ColumnName { get; set; }                       // Kolon adı
    public string DataType { get; set; }                         // Veri tipi
    public bool IsNullable { get; set; }                          // Nullable mı
    public bool IsPrimaryKey { get; set; }                       // Primary key mi
    public bool IsForeignKey { get; set; }                       // Foreign key mi
    public int? MaxLength { get; set; }                          // Maksimum uzunluk (string'ler için)
}

ForeignKeyInfo:

public class ForeignKeyInfo
{
    public string ForeignKeyName { get; set; }                  // Foreign key adı
    public string ColumnName { get; set; }                       // Mevcut tablodaki kolon
    public string ReferencedTable { get; set; }                  // Referans verilen tablo
    public string ReferencedColumn { get; set; }                 // Referans verilen kolon
}

SchemaAnalysisStatus:

public enum SchemaAnalysisStatus
{
    Pending,        // Analiz bekleniyor
    InProgress,     // Analiz devam ediyor
    Completed,      // Analiz tamamlandı
    Failed,         // Analiz başarısız
    RefreshNeeded   // Şema yenileme gerekli
}

SmartRagOptions

SmartRag kütüphanesi için yapılandırma seçenekleri.

public class SmartRagOptions
{
    public AIProvider AIProvider { get; set; }                   // AI sağlayıcı
    public StorageProvider StorageProvider { get; set; }         // Depolama sağlayıcı
    public ConversationStorageProvider? ConversationStorageProvider { get; set; } // Konuşma depolama
    public int MaxChunkSize { get; set; } = 1000;                 // Maksimum chunk boyutu
    public int MinChunkSize { get; set; } = 100;                  // Minimum chunk boyutu
    public int ChunkOverlap { get; set; } = 200;                  // Chunk örtüşmesi
    public int MaxRetryAttempts { get; set; } = 3;                // Maksimum yeniden deneme
    public int RetryDelayMs { get; set; } = 1000;                 // Yeniden deneme gecikmesi
    public RetryPolicy RetryPolicy { get; set; }                 // Yeniden deneme politikası
    public bool EnableFallbackProviders { get; set; }            // Fallback sağlayıcıları etkinleştir
    public List<AIProvider> FallbackProviders { get; set; }     // Fallback sağlayıcıları
    public AudioProvider AudioProvider { get; set; }              // Ses sağlayıcı
    public WhisperConfig WhisperConfig { get; set; }             // Whisper yapılandırması
    public List<DatabaseConnectionConfig> DatabaseConnections { get; set; } // Veritabanı bağlantıları
    public bool EnableAutoSchemaAnalysis { get; set; } = true;   // Otomatik şema analizi
    public bool EnablePeriodicSchemaRefresh { get; set; } = true; // Periyodik yenileme
    public int DefaultSchemaRefreshIntervalMinutes { get; set; } = 60; // Yenileme aralığı
    public FeatureToggles Features { get; set; }                 // Özellik anahtarları
}

FeatureToggles:

public class FeatureToggles
{
    public bool EnableDatabaseSearch { get; set; } = true;       // Veritabanı aramasını etkinleştir
    public bool EnableDocumentSearch { get; set; } = true;      // Doküman aramasını etkinleştir
    public bool EnableAudioParsing { get; set; } = true;         // Ses ayrıştırmayı etkinleştir
    public bool EnableImageParsing { get; set; } = true;         // Görüntü ayrıştırmayı etkinleştir
}

AudioTranscriptionResult

Ses transkripsiyon işleminin sonucunu temsil eder.

public class AudioTranscriptionResult
{
    public string Text { get; set; }                             // Transkribe edilmiş metin
    public double Confidence { get; set; }                        // Güven skoru (0-1)
    public string Language { get; set; }                         // Algılanan dil
    public Dictionary<string, object> Metadata { get; set; }      // Ek metadata
}

AudioTranscriptionOptions

Ses transkripsiyon işlemi için yapılandırma seçenekleri.

public class AudioTranscriptionOptions
{
    public string Language { get; set; } = "tr-TR";              // Dil kodu
    public double MinConfidenceThreshold { get; set; } = 0.5;    // Minimum güven (0-1)
    public bool IncludeWordTimestamps { get; set; } = false;     // Kelime zaman damgalarını dahil et
}

AudioSegmentMetadata

Tek bir ses transkripsiyon segmenti için metadata’yı temsil eder.

public class AudioSegmentMetadata
{
    public double Start { get; set; }                           // Başlangıç zamanı (saniye)
    public double End { get; set; }                             // Bitiş zamanı (saniye)
    public string Text { get; set; }                             // Transkribe edilmiş metin
    public double Probability { get; set; }                     // Güven olasılığı
    public string NormalizedText { get; set; }                   // Normalize edilmiş metin
    public int StartCharIndex { get; set; }                      // Başlangıç karakter indeksi
    public int EndCharIndex { get; set; }                        // Bitiş karakter indeksi
}

OcrResult

OCR işleminin sonucunu temsil eder.

public class OcrResult
{
    public string Text { get; set; }                             // Çıkarılan metin
    public float Confidence { get; set; }                        // Güven skoru
    public long ProcessingTimeMs { get; set; }                   // İşleme süresi (ms)
    public int WordCount { get; set; }                           // Kelime sayısı
    public string Language { get; set; }                         // Kullanılan dil
}

AIProviderConfig

AI sağlayıcıları için yapılandırma.

public class AIProviderConfig
{
    public string ApiKey { get; set; }                            // API anahtarı
    public string EmbeddingApiKey { get; set; }                // Embedding API anahtarı (isteğe bağlı)
    public string Endpoint { get; set; }                         // Özel endpoint (isteğe bağlı)
    public string EmbeddingEndpoint { get; set; }                // Embedding endpoint (isteğe bağlı)
    public string ApiVersion { get; set; }                       // API versiyonu (isteğe bağlı)
    public string Model { get; set; }                            // Model adı
    public string EmbeddingModel { get; set; }                   // Embedding model (isteğe bağlı)
    public int MaxTokens { get; set; } = 4096;                   // Maksimum token
    public double Temperature { get; set; } = 0.7;               // Temperature (0-1)
    public string SystemMessage { get; set; }                    // Sistem mesajı (isteğe bağlı)
    public int? EmbeddingMinIntervalMs { get; set; }             // Embedding minimum aralık (ms)
}

WhisperConfig

Whisper ses transkripsiyonu için yapılandırma.

public class WhisperConfig
{
    public string ModelPath { get; set; } = "models/ggml-base.bin"; // Model dosya yolu
    public string DefaultLanguage { get; set; } = "auto";         // Varsayılan dil
    public double MinConfidenceThreshold { get; set; } = 0.3;     // Minimum güven (0-1)
    public bool IncludeWordTimestamps { get; set; } = false;       // Kelime zaman damgalarını dahil et
    public string PromptHint { get; set; } = string.Empty;        // Bağlam ipucu
    public int MaxThreads { get; set; } = 0;                      // Maksimum thread (0 = otomatik)
}

GoogleSpeechConfig

Google Speech-to-Text servisi için yapılandırma seçenekleri.

public class GoogleSpeechConfig
{
    public string ApiKey { get; set; }                           // API anahtarı veya service account JSON yolu
    public string DefaultLanguage { get; set; } = "tr-TR";      // Varsayılan dil
    public double MinConfidenceThreshold { get; set; } = 0.5;    // Minimum güven (0-1)
    public bool IncludeWordTimestamps { get; set; } = false;      // Kelime zaman damgalarını dahil et
    public bool EnableAutomaticPunctuation { get; set; } = true;  // Otomatik noktalama
    public bool EnableSpeakerDiarization { get; set; } = false;   // Konuşmacı diarizasyonu
    public int MaxSpeakerCount { get; set; } = 2;                 // Maksimum konuşmacı sayısı
}

RedisConfig

Redis depolama yapılandırması.

public class RedisConfig
{
    public string ConnectionString { get; set; } = "localhost:6379"; // Bağlantı dizesi
    public string Password { get; set; }                            // Şifre
    public string Username { get; set; }                             // Kullanıcı adı
    public int Database { get; set; }                                // Veritabanı numarası
    public string KeyPrefix { get; set; } = "smartrag:doc:";        // Anahtar öneki
    public int ConnectionTimeout { get; set; } = 30;                // Bağlantı zaman aşımı (saniye)
    public bool EnableSsl { get; set; }                              // SSL'i etkinleştir
    public bool UseSsl { get; set; }                                 // SSL kullan (alias)
    public bool EnableVectorSearch { get; set; } = true;             // Vektör aramayı etkinleştir
    public string VectorIndexAlgorithm { get; set; } = "HNSW";      // Vektör indeks algoritması
    public string DistanceMetric { get; set; } = "COSINE";          // Mesafe metriği
    public int VectorDimension { get; set; } = 768;                  // Vektör boyutu
    public string VectorIndexName { get; set; } = "smartrag_vector_idx"; // Vektör indeks adı
    public int RetryCount { get; set; } = 3;                         // Yeniden deneme sayısı
    public int RetryDelay { get; set; } = 1000;                      // Yeniden deneme gecikmesi (ms)
}

QdrantConfig

Qdrant vektör veritabanı depolama için yapılandırma ayarları.

public class QdrantConfig
{
    public string Host { get; set; } = "localhost";              // Sunucu host'u
    public bool UseHttps { get; set; }                            // HTTPS kullan
    public string ApiKey { get; set; } = string.Empty;            // API anahtarı
    public string CollectionName { get; set; } = "smartrag_documents"; // Koleksiyon adı
    public int VectorSize { get; set; } = 768;                     // Vektör boyutu
    public string DistanceMetric { get; set; } = "Cosine";        // Mesafe metriği
}

SqliteConfig

SQLite depolama yapılandırması.

public class SqliteConfig
{
    public string DatabasePath { get; set; } = "SmartRag.db";     // Veritabanı dosya yolu
    public bool EnableForeignKeys { get; set; } = true;            // Foreign key'leri etkinleştir
}

InMemoryConfig

Bellek içi depolama yapılandırması.

public class InMemoryConfig
{
    public int MaxDocuments { get; set; } = 1000;                  // Bellekte maksimum doküman
}

StorageConfig

Farklı depolama sağlayıcıları için depolama yapılandırması.

public class StorageConfig
{
    public StorageProvider Provider { get; set; } = StorageProvider.InMemory; // Depolama sağlayıcı
    public RedisConfig Redis { get; set; } = new RedisConfig();   // Redis yapılandırması
    public InMemoryConfig InMemory { get; set; } = new InMemoryConfig(); // InMemory yapılandırması
    public QdrantConfig Qdrant { get; set; } = new QdrantConfig(); // Qdrant yapılandırması
}

Sonraki Adımlar

Numaralandırmalar

AIProvider, StorageProvider, DatabaseType ve diğer enum'lar

Numaralandırmalar

API Referans

API Referans ana sayfasına dön

API Referans