Практические разборы l3_builders
Support RAG без выдумок: ingestion, citations и bad-answer test
Практический выпуск CodeVibers: собираем локальный support RAG на FastAPI и SQLite FTS5, возвращаем source ID и блокируем неподтверждённый ответ.
Видео по теме
Практический выпуск 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
- RAG-ответ без source ID нельзя проверить
- Три статьи превращаются в проверяемый индекс
- Threshold должен стоять до генерации ответа
Источники выпуска
Исходники проекта из выпуска
Это тот же воспроизводимый проект, который собирается и тестируется в видео.
requirements.txt— Pinned dependenciesknowledge/articles.json— Demo support knowledgeapp.py— Ingestion, retrieval, grounding and UIdemo.py— Grounded and unsupported executiontests/test_rag.py— Regression testsREADME.md— Run instructions
Команды запуска и проверки
.venv/bin/python demo.py
.venv/bin/python -W ignore -m pytest -q
Практический материал из выпуска
Артефакт: 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.
Как собрать
- create knowledge
- ingest chunks
- retrieve
- cite source
- run bad answer
- test
- 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.
Практические шаги
- create knowledge
- ingest chunks
- retrieve
- cite source
- run bad answer
- test
- 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