Билол Саидумаров
Все статьи

RAG за два дня: что нужно, а что — нет

8 октября 2023 · 5 минут · RAG, эмбеддинги, начало
Если коротко
  • За два дня — не прод. Понимание. Понимание дороже прода.
  • Четыре компонента и одна цепочка вызовов. Всё лишнее — отложить.
  • Одна типичная ловушка, на которую попадает почти каждый.
GIF · pipeline · 800×400
Пайплайн из пяти боксов: документ → чанки → эмбеддинги → векторная БД → ответ. Каждый бокс зажигается по очереди.
~4s loop, ease-out: a horizontal pipeline of 5 boxes labeled "doc → chunks → embeddings → vector db → answer". Each box lights up in sequence with a soft indigo glow and a check-mark at the end of the cycle. White background, clean line work, transparent background, 800x400, ~24fps.

За выходные не строят прод. Строят понимание.

Без понимания вы будете три месяца настраивать гиперпараметры в чужой архитектуре. С пониманием — поймёте за час, что именно нужно поменять.

Минимум — четыре компонента

  1. Чанкер — режет документы на куски по 600-800 символов с лёгким перекрытием.
  2. Эмбеддер — превращает чанки в векторы. Для русско-узбекского контента берите bge-m3 или multilingual-e5.
  3. Векторное хранилище — на старте хватит Qdrant в Docker или даже pgvector в Postgres.
  4. LLM-клиент — любой OpenAI-совместимый. На два дня можно платный API.

Это всё. Никаких re-ranker'ов, никаких гибридных поисков, никакого agent-loop'а. Цепочка: загружаем → чанкуем → эмбеддим → кладём в векторку. На запрос — эмбеддим вопрос, top-5 ближайших → в промпт → ответ.

Что обязательно — с первого дня

Цитаты к ответу. Возвращайте не только текст, но и какие чанки использованы. Без этого вы не отличите хороший ответ от уверенной галлюцинации. Пять строк кода, и вся система становится управляемой.

20 размеченных вопросов. До запуска чего-либо соберите эвал-сет: вопрос → ожидаемый чанк. Это ваш компас при любом изменении. Без эвалов невозможно сказать «стало лучше», только «по ощущениям лучше».

Логи запросов и контекста. В файл: вопрос, какие чанки вытащены, что ответила модель. Через неделю это покажет, где модель проседает — и где проседает не модель, а ретривер.

От чего отказаться (пока)

  • Re-ranker. Прирост есть, но смысл — после того, как базовый поиск нормально работает.
  • Гибридный поиск (BM25 + векторы). Подключайте после первых жалоб «не находит точную фразу».
  • Тонкая разметка чанков. 800 символов и перекрытие 120 — рабочий старт. Тюнинг — потом.
  • Глубокий промпт-инжиниринг. Один разумный промпт по образцу. Это редко становится узким местом.

Ловушка: документ в эмбеддер целиком

Самая частая беда первого RAG — отправка целого документа в эмбеддер одним куском.

Эмбеддинг становится «средним по больнице». Поиск работает плохо, и непонятно, почему.

Чанкуйте всегда. Даже короткий PDF на пять страниц — это минимум 8-10 чанков, не один эмбеддинг на документ. Скажу иначе: если на ваш PDF приходится один вектор — вы построили не поиск, а лотерею.

Что сделать дальше