Self‑hosted RAG‑система с LangGraph‑агентом на локальных LLM

Я построил полностью автономную AI-систему для анализа новостей. Без OpenAI, без облаков и без утечек данных. За последние несколько недель я разработал News Scraper & AI Market Analyst — пет-проект, который агрегирует 12 000+ статей из 21 источника и анализирует их с помощью локальных LLM (Qwen 2.5, BGE-M3). Главная задача была инженерной: обеспечить полную независимость от санкционных рисков и возможных блокировок облачных API. Вот 3 главных вызова, с которыми я столкнулся: 1. Data-Centric AI. Когда я запустил классификацию, 74% статей улетели в категорию other. Модель боялась ошибиться. Переписав промпты и добавив описания категорий, я сократил этот показатель до 0.03%, а точность классификации (проверенная вручную) достигла 85%. 2. Оверхед фреймворков. LangChain давал 9x замедление на RAG-запросах. Я выкинул его из пайплайна и перешел на прямой Ollama SDK. Время ответа упало с 60 до 6 секунд. 3. VRAM Ping-Pong. Ollama выгружала модели при переключении. Решилось настройкой MAX_LOADED_MODELS=2 и грамотным распределением видеопамяти на Tesla P100. Что в итоге умеет система: - Гибридный поиск (BM25 + pgvector + RRF). - LLM-классификация (20+ тем) и извлечение сущностей (NER). - LangGraph-агент, который сам вызывает инструменты. На вопрос «Сколько негативных статей про ЦБ за 3 дня?» он пишет SQL-запрос и отвечает. - Оценка влияния на рынок (Market Impact) по секторам. Полный трейсинг шагов агента через self-hosted Langfuse. Проект докеризирован, покрыт тестами (Testcontainers) и CI/CD. Что дальше? Сейчас это публичный MVP, демонстрирующий мои навыки AI-инженерии. В закрытом режиме я планирую развивать его в персональный инструмент для биржевой аналитики: привязка новостей к тикерам (SBER, GAZP), извлечение фактов и прогнозные дашборды. Архитектура с изоляцией слоёв позволяет делать это без переписывания ядра. Ссылка на GitHub https://github.com/tzar26/news_scrapper #AI #LLM #RAG #LangGraph #Python #Ollama #DataEngineering #AIEngineering