Перейти к содержанию

AI-помощник по документам ProfessorWeb

Создадим помощника по собственным учебным документам ProfessorWeb. Начнём с понятного корпуса, выделим фрагменты, построим лексический поиск и SQLite-индекс. Затем добавим бюджет контекста, точные цитаты, отказ при недостатке сведений, обновление корпуса, доступ к служебным документам и необязательную локальную модель. Последние шаги объединят механизм в веб-страницу и объяснят оценку качества и сопровождение.

Среда: Python 3.13.7, только стандартная библиотека. Основной маршрут обходится без внешних API, моделей и секретов. Дополнительный Ollama-адаптер использует локальный HTTP API; версию рантайма, название модели и digest читатель фиксирует отдельно. Начальные ответы извлекаются из текста: это прозрачный retrieval, а не имитация генерации.

Предполагается знакомство с Python, JSON, Markdown, HTTP и простым SQL. Корпус авторский и учебный; это не автоматическая выгрузка всех статей ProfessorWeb. Роль editor — доверенный аргумент локального оператора, веб-страница всегда reader. Настоящий вход и многопользовательская авторизация не реализованы.

В серии 16 уроков. Каждая lesson-NN в архиве исходников является самостоятельным состоянием. Команды, серверы, модели, вход, WebAuthn и сценарии оценки при подготовке не запускались. Тесты и публикация учебных приложений не выполнялись.

Оглавление

  1. Корпус документов и границы AI-помощника — Определить собственные источники, вопросы и границы ответа.
  2. Чтение Markdown и метаданных источника — Прочитать и проверить корпус, сохранив адреса и отпечатки файлов.
  3. Разделение документа на смысловые фрагменты — Сохранить заголовки и разделить текст на ограниченные фрагменты.
  4. Поиск по словам и ранжирование BM25 — Объяснить частоты слов и упорядочить кандидатов BM25.
  5. Индекс документов в SQLite — Сохранить документы и фрагменты одной транзакцией.
  6. Извлечение контекста для вопроса — Отобрать публичные кандидаты и измерить покрытие вопроса.
  7. Бюджет контекста и порядок источников — Уместить фрагменты в бюджет без обрыва доказательств.
  8. Ответ с проверяемыми цитатами — Собрать извлекающий ответ с точными цитатами и ссылками.
  9. Отказ при недостатке информации — Отделить отсутствие основания от ошибки выполнения.
  10. Обновление и удаление документов из индекса — Обновить изменившиеся источники и убрать удалённые фрагменты.
  11. Доступ к документам до поиска — Отделить публичные документы от редакторских до ранжирования.
  12. Адаптер локальной языковой модели — Добавить необязательный Ollama-адаптер и проверку ссылок ответа.
  13. Веб-интерфейс вопроса и источников — Показать вопрос, статус, ответ и источники на локальной странице.
  14. Набор вопросов для оценки качества — Описать контрольные вопросы и отдельные показатели поиска и ответа.
  15. Кэш, ограничения и цена запроса — Связать кэш с версией индекса, ролью и моделью, ограничить ресурсы.
  16. Подготовка помощника к сопровождению — Зафиксировать контракт, воспроизводимое состояние и порядок обновления.

Продолжение маршрута

Единый вход поможет понять будущую границу доверенной роли помощника. Другие серии новой партии собраны в маршрутах веб-приложений.