Hızlı Örnekler
Hızlı başlamak için basit, pratik örnekler
Hızlı Örnekler
1. Basit Doküman Arama
Bir doküman yükleyin ve arayın:
public class DocumentController : ControllerBase
{
private readonly IDocumentService _documentService;
private readonly IDocumentSearchService _searchService;
// Doküman yükleme
[HttpPost("upload")]
public async Task<IActionResult> Upload(IFormFile file)
{
var document = await _documentService.UploadDocumentAsync(
file.OpenReadStream(),
file.FileName,
file.ContentType,
"kullanici-123"
);
return Ok(new {
id = document.Id,
fileName = document.FileName,
chunks = document.Chunks.Count
});
}
// Doküman arama
[HttpPost("search")]
public async Task<IActionResult> Search([FromBody] SearchRequest request)
{
var response = await _searchService.QueryIntelligenceAsync(
request.Query,
maxResults: request.MaxResults
);
return Ok(response);
}
}
public class SearchRequest
{
public string Query { get; set; } = string.Empty;
public int MaxResults { get; set; } = 5;
}
2. Arama Seçenekleri ve Bayrak Tabanlı Filtreleme
SearchOptions kullanarak hangi veri kaynaklarında arama yapılacağını kontrol edin:
public class IntelligenceController : ControllerBase
{
private readonly IDocumentSearchService _searchService;
[HttpPost("ask")]
public async Task<IActionResult> Ask([FromBody] QuestionRequest request)
{
// Seçenek 1: SearchOptions'ı doğrudan kullan
var options = new SearchOptions
{
EnableDatabaseSearch = true,
EnableDocumentSearch = false,
EnableAudioSearch = false,
EnableImageSearch = false,
PreferredLanguage = "tr"
};
var response = await _searchService.QueryIntelligenceAsync(
request.Question,
maxResults: 5,
options: options
);
return Ok(response);
}
[HttpPost("ask-with-flags")]
public async Task<IActionResult> AskWithFlags([FromBody] string query)
{
// Seçenek 2: Sorgu string'inden bayrakları ayrıştır
var searchOptions = ParseSearchOptions(query, out string cleanQuery);
var response = await _searchService.QueryIntelligenceAsync(
cleanQuery,
maxResults: 5,
options: searchOptions
);
return Ok(response);
}
private SearchOptions? ParseSearchOptions(string input, out string cleanQuery)
{
cleanQuery = input;
var hasDocumentFlag = input.Contains("-d ", StringComparison.OrdinalIgnoreCase)
|| input.EndsWith("-d", StringComparison.OrdinalIgnoreCase);
var hasDatabaseFlag = input.Contains("-db ", StringComparison.OrdinalIgnoreCase)
|| input.EndsWith("-db", StringComparison.OrdinalIgnoreCase);
var hasAudioFlag = input.Contains("-a ", StringComparison.OrdinalIgnoreCase)
|| input.EndsWith("-a", StringComparison.OrdinalIgnoreCase);
var hasImageFlag = input.Contains("-i ", StringComparison.OrdinalIgnoreCase)
|| input.EndsWith("-i", StringComparison.OrdinalIgnoreCase);
if (!hasDocumentFlag && !hasDatabaseFlag && !hasAudioFlag && !hasImageFlag)
{
return null; // Varsayılan seçenekleri kullan
}
var options = new SearchOptions
{
EnableDocumentSearch = hasDocumentFlag,
EnableDatabaseSearch = hasDatabaseFlag,
EnableAudioSearch = hasAudioFlag,
EnableImageSearch = hasImageFlag
};
// Sorgudan bayrakları kaldır
var parts = input.Split(' ');
var cleanParts = parts.Where(p =>
!p.Equals("-d", StringComparison.OrdinalIgnoreCase) &&
!p.Equals("-db", StringComparison.OrdinalIgnoreCase) &&
!p.Equals("-a", StringComparison.OrdinalIgnoreCase) &&
!p.Equals("-i", StringComparison.OrdinalIgnoreCase));
cleanQuery = string.Join(" ", cleanParts);
return options;
}
}
Bayrak Örnekleri:
"-db En iyi müşterileri göster"→ Sadece veritabanı araması"-a Toplantıda ne konuşuldu?"→ Sadece ses araması"-i Görselde ne yazıyor?"→ Sadece görüntü OCR araması"-db -a Müşterileri ve toplantı notlarını göster"→ Veritabanı + ses araması"Bayrak olmadan normal sorgu"→ Tüm arama tipleri etkin (varsayılan)
3. Çoklu Veritabanı Sorgusu
Aynı anda birden fazla veritabanını sorgulayın:
public class DatabaseController : ControllerBase
{
private readonly IDatabaseParserService _databaseService;
private readonly IMultiDatabaseQueryCoordinator _multiDbCoordinator;
// SQL Server veritabanına bağlan
[HttpPost("connect/sqlserver")]
public async Task<IActionResult> ConnectSqlServer([FromBody] ConnectionRequest request)
{
var config = new DatabaseConfig
{
Type = DatabaseType.SqlServer,
ConnectionString = request.ConnectionString,
IncludedTables = request.Tables,
MaxRowsPerTable = 1000,
SanitizeSensitiveData = true
};
var content = await _databaseService.ParseDatabaseConnectionAsync(
request.ConnectionString,
config
);
return Ok(new { message = "Başarıyla bağlandı", tables = request.Tables });
}
// MySQL veritabanına bağlan
[HttpPost("connect/mysql")]
public async Task<IActionResult> ConnectMySQL([FromBody] ConnectionRequest request)
{
var config = new DatabaseConfig
{
Type = DatabaseType.MySQL,
ConnectionString = request.ConnectionString,
MaxRowsPerTable = 1000
};
var content = await _databaseService.ParseDatabaseConnectionAsync(
request.ConnectionString,
config
);
return Ok(new { message = "Başarıyla bağlandı" });
}
// Birden fazla veritabanını sorgula
[HttpPost("query")]
public async Task<IActionResult> QueryDatabases([FromBody] MultiDbQueryRequest request)
{
var response = await _multiDbCoordinator.QueryMultipleDatabasesAsync(
request.Query,
maxResults: request.MaxResults
);
return Ok(response);
}
}
Örnek Sorgu:
"SQL Server'dan toplam satışları MySQL'den mevcut envanter seviyeleriyle göster"
SmartRAG şunları yapacak:
- Sorgu amacını analiz eder
- İlgili veritabanlarını ve tabloları belirler
- Her veritabanı için uygun SQL üretir
- Sorguları paralel olarak çalıştırır
- Sonuçları akıllıca birleştirir
- Birleşik AI destekli cevap döndürür
3. OCR Doküman İşleme
Görselleri Tesseract OCR ile işleyin:
public class OcrController : ControllerBase
{
private readonly IDocumentService _documentService;
private readonly IDocumentSearchService _searchService;
// OCR işleme için görsel yükleme
[HttpPost("upload/image")]
public async Task<IActionResult> UploadImage(IFormFile file, [FromQuery] string language = "tur")
{
var document = await _documentService.UploadDocumentAsync(
file.OpenReadStream(),
file.FileName,
file.ContentType,
"kullanici-123",
language: language // OCR dili: tur, eng, deu, vb.
);
return Ok(new {
id = document.Id,
extractedText = document.Content,
confidence = "OCR başarıyla tamamlandı"
});
}
// OCR işlenmiş dokümanları sorgula
[HttpPost("query/image-content")]
public async Task<IActionResult> QueryImageContent([FromBody] string query)
{
var response = await _searchService.QueryIntelligenceAsync(query);
return Ok(response);
}
}
Desteklenen Görsel Formatları:
- JPEG/JPG, PNG, GIF, BMP, TIFF, WebP
Örnek Kullanım:
# Fatura görseli yükle
curl -X POST "http://localhost:5000/api/ocr/upload/image?language=tur" \
-F "file=@fatura.jpg"
# Sorgu: "Bu faturadaki toplam tutar nedir?"
4. Ses Transkripsiyonu
Ses dosyalarını Whisper.net ile transkribe edin:
public class AudioController : ControllerBase
{
private readonly IDocumentService _documentService;
private readonly IDocumentSearchService _searchService;
// Transkripsiyon için ses yükleme
[HttpPost("upload/audio")]
public async Task<IActionResult> UploadAudio(IFormFile file, [FromQuery] string language = "tr")
{
var document = await _documentService.UploadDocumentAsync(
file.OpenReadStream(),
file.FileName,
file.ContentType,
"kullanici-123",
language: language // Konuşma dili: tr, en, auto, vb.
);
return Ok(new {
id = document.Id,
transcription = document.Content,
message = "Ses başarıyla transkribe edildi"
});
}
// Transkripsiyon içeriğini sorgula
[HttpPost("query/audio-content")]
public async Task<IActionResult> QueryAudioContent([FromBody] string query)
{
var response = await _searchService.QueryIntelligenceAsync(query);
return Ok(response);
}
}
Desteklenen Ses Formatları:
- MP3, WAV, M4A, AAC, OGG, FLAC, WMA
Dil Kodları:
tr- Türkçeen- İngilizcede- Almancafr- Fransızcaauto- Otomatik tespit (önerilen)- 100+ dil desteklenir
Gizlilik Notu
Tüm işlem %100 yerel olarak yapılır. Ses transkripsiyonu Whisper.net, OCR Tesseract kullanır. Hiçbir veri harici servislere gönderilmez.
5. Konuşma Geçmişi
Doğal çok turlu konuşmalar:
public class ConversationController : ControllerBase
{
private readonly IDocumentSearchService _searchService;
[HttpPost("chat")]
public async Task<IActionResult> Chat([FromBody] ChatRequest request)
{
var response = await _searchService.QueryIntelligenceAsync(
request.Message,
maxResults: 5,
startNewConversation: request.StartNew
);
return Ok(new {
answer = response.Answer,
sources = response.Sources.Count,
timestamp = response.SearchedAt
});
}
}
Konuşma Akışı Örneği:
Kullanıcı: "Makine öğrenimi nedir?"
AI: "Makine öğrenimi, yapay zekanın bir alt kümesidir..."
Kullanıcı: "Denetimli öğrenmeyi açıklar mısın?" // AI bağlamı hatırlar
AI: "Makine öğrenimi hakkındaki önceki tartışmamıza dayanarak, denetimli öğrenme..."
Kullanıcı: "Yaygın algoritmalar nelerdir?" // Konuşma bağlamını korur
AI: "Yaygın denetimli öğrenme algoritmaları şunlardır..."
Kullanıcı: "/yeni" // Yeni konuşma başlat
AI: "Yeni konuşma başlatıldı. Size nasıl yardımcı olabilirim?"
İlgili Örnekler
- Örnekler Ana Sayfası - Örnekler kategorilerine dön