К содержанию
Новости

Как построить гибридную систему RAG с FAISS, BM25, LangGraph и Claude Sonnet

Retrieval‑Augmented Generation (RAG) часто применяют для работы с неструктурированными документами. Сценарий знакомый: пользователь загружает файл, задаёт вопрос и получает ответ от языковой модели. Но на практике узким местом нередко оказывается не сама модель, а этап поиска нужных фрагментов текста. Как пишет Towards AI, плотный векторный поиск хорошо находит семантически похожие формулировки. Он без труда связывает, например, «urban spending» и «city expenditure». При этом система может пропустить точные значения, такие как коды ошибок, номера пунктов договора или конкретные финансовые показатели.

Классический поиск по ключевым словам, например алгоритм BM25, работает иначе и как раз силён в точных совпадениях. Он ранжирует документы по частоте терминов и тому, насколько редко они встречаются в корпусе. Проблема в другом: смысла такой поиск не понимает. Перефразированные запросы вроде «automobile» и «car» он воспринимает как разные слова. В реальных документах, будь то юридические контракты, финансовые отчёты или технические руководства, встречаются оба типа запросов. Поэтому ни один из подходов не оказывается универсальным.

Выходом становится гибридная схема, где используются оба механизма. Векторный поиск и BM25 работают параллельно, после чего результаты объединяются методом Reciprocal Rank Fusion в общий список ранжированных фрагментов. В итоге система учитывает и семантическую близость, и точные совпадения, при этом стоимость обработки существенно не растёт.

В демонстрационном проекте показана сборка полной системы Hybrid RAG. Для плотного поиска используется FAISS, BM25 отвечает за поиск по ключевым словам, а LangGraph управляет оркестрацией. Генерация ответов идёт через Claude Sonnet 4.6 API. Интерфейс на Streamlit позволяет переключать режимы извлечения и смотреть найденные фрагменты текста вместе с их оценками. Возможные сценарии применения вполне практичные: анализ контрактов юридическими командами, поиск показателей вроде EBITDA и квартальной выручки в отчётности, работа инженеров поддержки с кодами ошибок в технических руководствах, а также поиск научных публикаций по цитатам и смысловому сходству.

Ключевые факты

  • В руководстве описано создание Hybrid RAG‑системы, которая объединяет FAISS для семантического поиска, BM25 для поиска по ключевым словам и объединяет результаты через Reciprocal Rank Fusion.

  • В приложении используется Claude Sonnet 4.6 API для генерации ответов на основе найденных фрагментов документов.

  • Оркестрация компонентов выполняется через LangGraph, а пользовательский интерфейс реализован на Streamlit с возможностью переключать режимы retrieval и просматривать фрагменты и их оценки.

  • Пример кода размещён в репозитории alphaiterations/agentic-ai-usecases в каталоге agentic-ai-usecases/beginner/hybrid-rag.