Похожие презентации:
Презентация RagClient
1.
RagClient: Разработкаклиент-серверной системы
RAG (Retrieval-Augmented Generation) – это
технология, которая позволяет нейросетям искать
информацию во внешних базах знаний.
Студент: Чернов Артём Дмитриевич – СОПИ-24-1
Учеб. Заведение: Филиал ВВГУ г. Артём
Руководитель: Волошин Е.В
21.05.2026
2.
Цель разработкиRAG-системы
Единый AI-интерфейс
Семантический поиск
Генерация ответов
Создание клиент-серверного
Реализация поиска релевантной
Формирование ответов на основе
приложения для удобства
информации по PDF-документам
технологии Retrieval-Augmented
взаимодействия пользователя с
с использованием эмбеддингов и
Generation(RAG) с использованием
локальной языковой моделью
векторной базы данных
FastAPI и локальной LLM через LM
через единый графический
ChromaDB
Studio
интерфейс Qt6.
3.
Задачи проектаBackend на Python
Векторный поиск
Qt6 клиент
Разработка FastAPI backend для
Реализация системы PDF-
Создание графического интерфейса
обработки пользовательских
документов: разбиение текста на
на C++/Qt6 с чатом, историей
запросов, работы с RAG-пайплайном
чанки, генерация эмбеддингов и
запросов, отображением
и взаимодействия с локальной
хранение данных в ChromaDB.
источников, и потоком выводом
моделью.
ответа.
Критерии успеха: стабильная работа системы, корректный поиск релевантных данных
и генерация ответов на основе документа.
4.
Постановка задачиСложность: необходимо реализовать систему
семантического поиска по PDF-документам с
использованием эмбеддингов и векторной
базы данных.
Интеграция backend и frontend: требуется
обеспечить стабильное взаимодействие
между FastAPI backend и Qt6 клиентов через
HTTP API с поддержкой обработки
пользовательских запросов.
Генерация ответов: необходимо реализовать
RAG-систему, способную формировать
ответы на основе найденных фрагментов
документов с использование LLM.
Решение: разработана клиент-серверная
RAG-система на Python и Qt6,
включающая FastAPI, ChromaDB,
embeddings, с использованием LM Studio.
5.
Технологический стекPython 3.10+
Основная логика сервера наш backend.
FastAPI
Лёгкий сервер для поставленной задачи.
Векторная БД
ChromaDB – лучший варинт
LM Studio
Использование локальной модели Gemma-4b.
C++/Qt6
Фреймворк Qt6, использование языка C++ fronted.
6.
Порядок разработки1.
Анализ требований и проектирование
2.
Разработка модуля эмбеддингов
3.
Реализация индексирования документов
4. Разработка backend (API)
5.
Реализация RAG-логики
6.
Интеграция с языковой моделью
7.
Разработка клиентского приложения
8.
Реализация интерфейса пользователя
9.
Визуализация RAG-процесса
10. Тестирование системы
11. Подготовка отчёта
7.
Фрагменты кода: веб-серверfrom fastapi import FastAPI
from pydantic import BaseModel
from rag import rag
app = FastAPI()
class Query(BaseModel):
query: str
@app.post("/ask")
def ask(q: Query):
return rag(q.query)
Пояснение: Этот код запускает веб-сервер для автоматических ответов на
вопросы пользователя.
8.
Фрагменты кода: отправка запроса и стриминг ответаvoid ApiClient::sendQueryStream(const QString &text) {
cancelRequest();
// 1. Формирование запроса к FastAPI
QUrl url("http://localhost:8000/ask");
QNetworkRequest req(url);
req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QJsonObject body;
body["query"] = text;
// 2. Отправка POST-запроса
activeReply = manager->post(req, QJsonDocument(body).toJson());
// 3. Обработка ответа и запуск стриминга текста
connect(activeReply, &QNetworkRequest::finished, this, [this]() {
pendingResponse = QJsonDocument::fromJson(activeReply->readAll()).object();
pendingAnswer = pendingResponse["answer"].toString();
streamTimer->start(streamIntervalMs); // Посимвольный вывод
});
}
Пояснение: Этот код на C++ (фреймворк Qt)
отправляет текстовый вопрос пользователя
на ранее созданный Python-сервер и
имитирует живой «эффект печати»
(стриминг) при выводе ответа.
Что конкретно он делает:
• Отправляет данные: Формирует JSON-пакет с
текстом вопроса и шлет POST-запрос на адрес
http://localhost:8000/ask.
• Принимает ответ: Ждет, пока сервер пришлет
полный текст, и достает из него финальный
ответ.
• Имитирует стриминг: Включает таймер,
который посимвольно (или по слову) выдает
текст на экран, создавая эффект, будто ИИ
пишет ответ в реальном времени.
9.
Блок-схема: история запросов клиентаНачало
Получен ответ от
сервера
Сохранение
запроса и ответа
Добавление
записи в список
истории
Сохранение
истории в файл
При запуске
приложения
да
Загрузка истории
из файла
нет
Отображения
списка истории
Конец
Блок-схема описывает процесс работы с историей сообщений —
от её сохранения на диск до восстановления на экране при
перезапуске приложения.
10.
Блок-схема: источники(чанки)Начало
Получен список
источников
Отображение
списка в панели
Пользователь
выбрал источник?
Блок-схема описывает процесс вывода источников (чанков
данных), на основе которых ИИ сформировал свой ответ, и
работу пользователя с ними.
.
да
Открытие
подробной
информации
нет
Показ: файл,
страница, текст
Конец
11.
Тестирование приложенияТестируемые сценарии
Границы проверок
Запросы: Проверено 5 базовых сценариев (БП, бизнес-
• На разных PDF-документах.
процесс, запасы, управление).
Результат: Ответы успешно сгенерированы на основе
PDF-документов.
Объект проверки
• Корректность RAG-пайплайна.
• Стабильность связки Qt ↔ backend.
• Корректность отображения источников.
• При разном количестве чанков.
• На сложных запросах.
• При отсутствии релевантных данных.
Итог тестирования
• Фактические результаты полностью совпали с
ожидаемыми.
• Ошибки при обработке отсутствуют, источники
отображаются корректно.
12.
Графический интерфейс RagClientГрафический интерфейс в себе содержит: историю поиска,
источники, настройки, чат, кнопки отправить, стоп, почему?
13.
ЗаключениеВыполненные цели
• Изучение архитектуры RAG-систем.
• Разработано клиент-серверное
Решенные задачи
Приобретение навыков
• Написан backend на Python
• Разработка клиент-серверного ПО.
(FastAPI).
приложение.
• Реализован PDF-поиск через
ChromaDB.
• Создан графический интерфейс на
• Написан fronted на C++ (Qt6).
• Интеграция REST API (JSON/HTTP).
• Реализован чат с выводом.
• Работа с векторными базами
• Добавлены модули истории и
источники.
Qt6.
• Налажена связь между fronted и
• Работа с Qt6 и Python FastAPI.
данных.
• Тестирование и откладка систем.
• Проведено успешное тестирование.
backend.
В результате практики успешно разработано и протестировано
работоспособное клиент-серверное приложение на базе RAG-архитектуры.