// Document search servisini enjekte et
public class SearchController : ControllerBase
{
private readonly IDocumentSearchService _documentSearchService;
public SearchController(IDocumentSearchService documentSearchService)
{
_documentSearchService = documentSearchService;
}
[HttpPost("search")]
public async Task<ActionResult> Search([FromBody] SearchRequest request)
{
string query = request?.Query ?? string.Empty;
int maxResults = request?.MaxResults ?? 5;
string sessionId = request?.SessionId ?? Guid.NewGuid().ToString();
if (string.IsNullOrWhiteSpace(query))
return BadRequest("Query cannot be empty");
try
{
var response = await _documentSearchService.GenerateRagAnswerAsync(query, sessionId, maxResults);
return Ok(response);
}
catch (Exception ex)
{
return StatusCode(500, $"Internal server error: {ex.Message}");
}
}
}
public class SearchRequest
{
[Required]
public string Query { get; set; } = string.Empty;
[Range(1, 50)]
[DefaultValue(5)]
public int MaxResults { get; set; } = 5;
///
/// Session ID for conversation history
///
public string SessionId { get; set; } = string.Empty;
}</code></pre>
</div>
</div>
</div>
</section>
💬 Konuşma Geçmişi
SmartRAG oturum tabanlı bağlam farkındalığı kullanarak konuşma geçmişini otomatik olarak yönetir. Her konuşma oturumu birden fazla soru ve cevap arasında bağlamı korur.
Nasıl Çalışır
Oturum Yönetimi : Her konuşma benzersiz bir oturum kimliği kullanır
Otomatik Bağlam : Önceki sorular ve cevaplar otomatik olarak bağlama dahil edilir
Akıllı Kısaltma : Konuşma geçmişi optimal performansı korumak için akıllıca kısaltılır
Depolama Entegrasyonu : Konuşma verileri yapılandırılan depolama sağlayıcısı kullanılarak saklanır
Kullanım Örneği
// İlk soru
var firstRequest = new SearchRequest
{
Query = "Makine öğrenmesi nedir?",
SessionId = "user-session-123",
MaxResults = 5
};
// Takip sorusu (önceki bağlamı hatırlar)
var followUpRequest = new SearchRequest
{
Query = "Denetimli öğrenmeyi daha detaylı açıklayabilir misin?",
SessionId = "user-session-123", // Aynı oturum kimliği
MaxResults = 5
};
// Başka bir takip sorusu
var anotherRequest = new SearchRequest
{
Query = "Derin öğrenmenin avantajları nelerdir?",
SessionId = "user-session-123", // Aynı oturum kimliği
MaxResults = 5
};
Pro İpucu
Farklı kullanıcı oturumları veya konuşma thread'leri arasında bağlamı korumak için anlamlı oturum kimlikleri (kullanıcı kimlikleri veya konuşma kimlikleri gibi) kullanın.
Sonraki Adımlar
SmartRAG'i kurduğunuza ve yapılandırdığınıza göre, bu özellikleri keşfedebilirsiniz:
Yapılandırma
Gelişmiş yapılandırma seçenekleri ve en iyi uygulamalar hakkında bilgi edinin.
Yapılandır
API Referansı
Örneklerle birlikte tam API dokümantasyonunu keşfedin.
API'yi Görüntüle
Yardıma mı ihtiyacınız var?
Herhangi bir sorunla karşılaşırsanız veya yardıma ihtiyacınız varsa:
</div>
</div>