Практические разборы l3_builders

Support RAG без выдумок: ingestion, citations и bad-answer test

Практический выпуск CodeVibers: собираем локальный support RAG на FastAPI и SQLite FTS5, возвращаем source ID и блокируем неподтверждённый ответ.

Видео по теме

Открыть видео на YouTube

Практический выпуск CodeVibers: собираем локальный support RAG на FastAPI и SQLite FTS5, возвращаем source ID и блокируем неподтверждённый ответ.

Таймкоды

  • 00:00 Результат и bad-answer contract
  • 00:52 База знаний и ingestion
  • 01:23 FTS5 retrieval и source ID
  • 01:59 Сбой морфологии и правильный fix
  • 02:54 Grounded answer с citation
  • 03:21 Unsupported question и refusal
  • 03:50 Regression tests
  • 04:21 Browser proof
  • 04:48 Границы и следующий checkpoint

Shorts

Источники выпуска

Исходники проекта из выпуска

Это тот же воспроизводимый проект, который собирается и тестируется в видео.

  • requirements.txt — Pinned dependencies
  • knowledge/articles.json — Demo support knowledge
  • app.py — Ingestion, retrieval, grounding and UI
  • demo.py — Grounded and unsupported execution
  • tests/test_rag.py — Regression tests
  • README.md — Run instructions

Команды запуска и проверки

.venv/bin/python demo.py
.venv/bin/python -W ignore -m pytest -q

Скачать проект ZIP

Практический материал из выпуска

Артефакт: Runnable FastAPI support RAG with SQLite FTS5, citations and refusal.

Что должно получиться: Project ZIP, knowledge file, API, browser UI, demo report and tests.

Видимый результат: Browser shows grounded citation; unsupported query shows SAFE STOP.

Вход для демо: Supported refund question and unsupported crypto-payment question.

Выход демо: Grounded answer with billing-refund source or refused with zero citations.

Проверка результата: Three chunks; correct source; unsupported refused; four tests pass.

Как собрать

  1. create knowledge
  2. ingest chunks
  3. retrieve
  4. cite source
  5. run bad answer
  6. test
  7. open UI

Шаблон: approval gate и журнал решений

Используйте этот фрагмент как минимальную политику для действий, которые видит клиент или которые меняют учетную систему.

approval_rule: if action.external_visible == true or action.crm_write == true -> require_human_approval
decision_log: request_id, source_data, ai_recommendation, human_edit, final_action, rejection_reason

Чеклист перед пилотом

  • 3 chunks
  • correct citation
  • unsupported refusal
  • four tests

Требования и рекомендации

Требования

  • SQLite FTS5
  • детерминированный ingestion
  • retrieval threshold
  • refusal state

Рекомендации

  • стабильный source_id
  • threshold до ответа
  • пустые citations при отказе
  • bad-answer regression test

Суть темы

Практический выпуск CodeVibers: собираем локальный support RAG на FastAPI и SQLite FTS5, возвращаем source ID и блокируем неподтверждённый ответ.

Что важно забрать

  • Заменить три demo-статьи своей базой и прогнать bad-answer fixtures.
  • Рабочий local RAG с ingestion, FTS5 retrieval, source IDs и refusal test.
  • Не чат-демо, а проверяемая граница: источник либо отказ.
  • Не позволить support-ответу появиться без evidence.

Как применять на практике

Используйте материал как отправную точку: сформулируйте задачу, ограничьте область применения, выберите метрику качества и проверьте результат на небольшом сценарии до внедрения в production.

Практические шаги

  1. create knowledge
  2. ingest chunks
  3. retrieve
  4. cite source
  5. run bad answer
  6. test
  7. open UI

Рекомендации

  • стабильный source_id
  • threshold до ответа
  • пустые citations при отказе
  • bad-answer regression test

Требования и ограничения

  • SQLite FTS5
  • детерминированный ingestion
  • retrieval threshold
  • refusal state

Примеры

  • вопрос о возврате цитирует billing-refund
  • криптовалюта получает refused

Антипримеры

  • генерировать ответ при нулевом retrieval

Как проверить готовность

  • 3 chunks indexed
  • billing-refund citation
  • 14 days in answer
  • unsupported refused
  • four tests pass

Навигация по выпуску

  • 00:00 Результат и bad-answer contract
  • 00:52 База знаний и ingestion
  • 01:23 FTS5 retrieval и source ID
  • 01:59 Сбой морфологии и правильный fix
  • 02:54 Grounded answer с citation
  • 03:21 Unsupported question и refusal
  • 03:50 Regression tests
  • 04:21 Browser proof
  • 04:48 Границы и следующий checkpoint