TL;DR: Начните с простого BM25+эмбеддинги, чанк 400–800 токенов, цитаты в ответе, логируйте промахи и подтягивайте дополнительные документы только по факту.
Контекст
RAG даёт контроль и актуальность, но легко сломать качество плохим чанкованием и перегрузкой контекста. Стартуйте с простого: качественный индекс и аккуратные цитаты.
Шаги
- Подготовьте текстовый корпус и удалите дубли.
- Выберите чанк 400–800 токенов и перекрытие 10–20%.
- Постройте индекс (BM25 + эмбеддинги).
- Верните 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, точность ответов с цитатами, доля «галлюцинаций».
Ресурсы
- Репозитории с кодом, учебники и документация по теме. Заполняйте собственными ссылками по мере работы.