Портфолио · 2025

RAG System

Локальный AI-ассистент для интеллектуального поиска по PDF-документам на основе LangGraph и ChromaDB

GitHub репозиторий → ← Назад

О проекте

Что это такое

RAG System — локальная система retrieval-augmented generation, которая позволяет задавать вопросы по загруженным PDF-документам и получать ответы с указанием источников. Никакие данные не покидают машину — всё работает через LM Studio.

Система автоматически индексирует новые документы при запуске, помнит контекст диалога и умеет переключаться на веб-поиск, если ответ не найден в локальной базе. В перспективе — поддержка DOCX, EPUB, TXT и произвольных веб-страниц.

Архитектура

Как устроена система

PDF Folder │ ▼ [Indexer] ├── PyPDFLoader загрузка и парсинг PDF ├── RecursiveTextSplitter разбивка на чанки (512 токенов) └── OpenAIEmbeddings векторизация (локальная модель) │ ▼ [ChromaDB] персистентное векторное хранилище │ ▼ [LangGraph Agent] ├── AgentState история сообщений ├── Node: call_llm вызов локальной LLM ├── Node: take_action выполнение tool calls └── Conditional edge loop / END │ ├── retriever_tool поиск по ChromaDB (top-5) └── web_search_tool веб-поиск Tavily (fallback) │ ▼ [MemorySaver] контекст диалога между сообщениями │ ▼ CLI Interface интерактивный диалог в терминале

Возможности

Что умеет система

📄

Индексация PDF

Автоматическая инкрементальная индексация: уже обработанные документы пропускаются. Поддержка больших файлов (пакетная загрузка по 5000 чанков).

🔍

Семантический поиск

Поиск по смыслу, а не по ключевым словам. ChromaDB возвращает top-5 наиболее релевантных чанков по cosine similarity.

🌐

Веб-поиск как fallback

Если локальная база не даёт результата — агент автоматически переключается на Tavily Search. Порог релевантности score ≥ 0.4.

🧠

Память диалога

LangGraph MemorySaver сохраняет контекст всего разговора в рамках сессии. Агент помнит предыдущие вопросы и ответы.

📎

Цитирование источников

Ответы содержат ссылки на конкретные части документов, из которых взята информация.

🔒

Полностью офлайн

LLM и embedding-модели работают локально через LM Studio. Данные из документов не покидают машину.

Технологии

Стек

Python 3.12 LangGraph LangChain ChromaDB LM Studio Qwen models PyPDFLoader Tavily Search MemorySaver Pydantic Settings Loguru tqdm uv

Планы развития

Что будет дальше

Проект открытый, установка через uv sync

Открыть на GitHub →