Основные интерфейсы
SmartRAG предоставляет несколько основных интерфейсов для обработки и управления документами.
IDocumentSearchService
Поиск документов и генерация ответов с помощью ИИ с использованием RAG (Retrieval-Augmented Generation).
public interface IDocumentSearchService
{
Task<List<DocumentChunk>> SearchDocumentsAsync(string query, int maxResults = 5);
Task<RagResponse> GenerateRagAnswerAsync(string query, int maxResults = 5, bool startNewConversation = false);
}
GenerateRagAnswerAsync
Генерирует ответы с помощью ИИ с автоматическим управлением сессиями и историей разговоров.
Task<RagResponse> GenerateRagAnswerAsync(string query, int maxResults = 5, bool startNewConversation = false)
Параметры:
query
(string): Вопрос пользователяmaxResults
(int): Максимальное количество фрагментов документов для получения (по умолчанию: 5)startNewConversation
(bool): Начать новую сессию разговора (по умолчанию: false)
Возвращает: RagResponse
с ответом ИИ, источниками и метаданными
// Базовое использование
var response = await documentSearchService.GenerateRagAnswerAsync("Какая погода?");
// Начать новый разговор
var response = await documentSearchService.GenerateRagAnswerAsync("/new");
Другие ключевые интерфейсы
Дополнительные сервисы для обработки и хранения документов.
// Обработка и анализ документов
IDocumentParserService - Анализ документов и извлечение текста
IDocumentRepository - Операции хранения документов
IAIService - Коммуникация с провайдерами ИИ
IAudioParserService - Транскрипция аудио (Google Speech-to-Text)
Ключевые модели
Основные модели данных для операций SmartRAG.
// Основная модель ответа
public class RagResponse
{
public string Query { get; set; }
public string Answer { get; set; }
public List<SearchSource> Sources { get; set; }
public DateTime SearchedAt { get; set; }
}
// Фрагмент документа для результатов поиска
public class DocumentChunk
{
public string Id { get; set; }
public string DocumentId { get; set; }
public string Content { get; set; }
public double RelevanceScore { get; set; }
}
Конфигурация
Ключевые параметры конфигурации для SmartRAG.
// Провайдеры ИИ
AIProvider.Anthropic // Модели Claude
AIProvider.OpenAI // GPT модели
AIProvider.Gemini // Модели Google
// Провайдеры хранения
StorageProvider.Qdrant // Векторная база данных
StorageProvider.Redis // Высокопроизводительный кэш
StorageProvider.Sqlite // Локальная база данных
Быстрый старт
Начните работу с SmartRAG за минуты.
// 1. Регистрация сервисов
services.AddSmartRag(configuration, options =>
{
options.AIProvider = AIProvider.Anthropic;
options.StorageProvider = StorageProvider.Redis;
});
// 2. Внедрение и использование
public class MyController : ControllerBase
{
private readonly IDocumentSearchService _searchService;
public async Task Ask(string question)
{
var response = await _searchService.GenerateRagAnswerAsync(question);
return Ok(response);
}
}</code></pre>
</div>
</div>
</div>
</section>
Общие паттерны
Часто используемые паттерны и конфигурации.
// Загрузка документа
var document = await _documentService.UploadDocumentAsync(file);
// Поиск документов
var results = await _searchService.SearchDocumentsAsync(query, 10);
// RAG разговор
var response = await _searchService.GenerateRagAnswerAsync(question);
// Конфигурация
services.AddSmartRag(configuration, options =>
{
options.AIProvider = AIProvider.Anthropic;
options.StorageProvider = StorageProvider.Redis;
});
Обработка ошибок
Частые исключения и паттерны обработки ошибок.
try
{
var response = await _searchService.GenerateRagAnswerAsync(query);
return Ok(response);
}
catch (SmartRagException ex)
{
return BadRequest(ex.Message);
}
catch (Exception ex)
{
return StatusCode(500, "Internal server error");
}
Советы по производительности
Оптимизируйте производительность SmartRAG с этими советами.
- Размер чанков: 500-1000 символов для оптимального баланса
- Пакетные операции: Обрабатывайте несколько документов вместе
- Кэширование: Используйте Redis для лучшей производительности
- Векторное хранилище: Qdrant для производственного использования
Нужна помощь?
Если вам нужна помощь с API:
</div>
</div>