Основные интерфейсы

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 для производственного использования
</div> </div>