TL;DR: Начните с простого BM25+эмбеддинги, чанк 400–800 токенов, цитаты в ответе, логируйте промахи и подтягивайте дополнительные документы только по факту.

Контекст

RAG даёт контроль и актуальность, но легко сломать качество плохим чанкованием и перегрузкой контекста. Стартуйте с простого: качественный индекс и аккуратные цитаты.

Шаги

  1. Подготовьте текстовый корпус и удалите дубли.
  2. Выберите чанк 400–800 токенов и перекрытие 10–20%.
  3. Постройте индекс (BM25 + эмбеддинги).
  4. Верните 3–5 релевантных документов, вставьте цитаты.

Пример

# Простая заготовка: поиск + генерация (псевдокод)
docs = index.search(query, top_k=5)
ctx  = render_citations(docs)
answer = llm.generate(prompt=ctx + "\n\nВопрос: " + query, max_tokens=300)
print(answer)

Ошибки и подводные камни

  • Слишком мелкие чанки → потеря связности.
  • Перегрузка контекста нерелевантными документами.

Что измерять

  • Recall@k, точность ответов с цитатами, доля «галлюцинаций».

Ресурсы

  • Репозитории с кодом, учебники и документация по теме. Заполняйте собственными ссылками по мере работы.