vla-study 웹 앱 구현[영상 260907 12:34] 등의 태그 → 클릭 시 영상 seek / 쪽 이미지. 한국어 질문 E2E 약 27초cat ~/.codex/auth.json) 거절 확인교수님: "연구실 온라인 미팅을 DB로 저장하고 RAG로 질의응답하는 솔루션을 조금 변형해서, 학생들이 영상을 보면서 논문도 직접 찾아보며 질문하고 self-study할 수 있는 소프트웨어"를 요청하셨다.
| 구성요소 | 구현 | 이유 |
|---|---|---|
| sync_notion.py | notion.site 공개 API로 31개 수업, 영상, 슬라이드 수집 | 새 강의 업로드 시 재실행만 하면 됨 |
| transcribe.py | faster-whisper large-v3, VAD, 수업 용어 prompt, Slurm(1 GPU) | 타임스탬프가 있어야 영상 seek 인용 가능 |
| corpus.py | BM25(레퍼런스 포팅): 전사 75초 창 / 슬라이드 쪽 / 논문 쪽 | 인용 단위 = 학생이 돌아가 볼 단위 |
| tutor.py | 한국어 → 영어 검색어 변환, 수업 첫 질문에 전사 전체 주입, 현재 영상 ±60초 | 교차언어 BM25 실패 해결 |
| codex_client.py | GPT-Policy app-server 클라이언트 기반, 다중 thread 라우팅, 도구 차단 3중 | 사용자 지정(Codex CLI), 학생 공개 서비스 |
| server.py / static | 영상 Range, PDF 쪽 PNG, SSE, arXiv 검색·서재, 토큰 쿠키, rate limit | 표준 라이브러리만 사용(레퍼런스 원칙) |
| build_guides.py | 요약·강의 흐름·핵심 개념·논문 연결·자가 점검, 무효 태그 자동 제거 | 영상 보기 전 길잡이 |
| 항목 | 수치 |
|---|---|
| 전사 | 12개 영상, 14.7시간, job 192040 22분 10초 (영상당 64–134초), 언어 감지 en 0.59–0.99 |
| 코퍼스 | passage 4,019 (논문 2,656 / 전사 751 / 슬라이드 612) |
| 학습 가이드 | 12개, 5,008–11,379자, 태그 62–144개, 무효 태그 0 |
| 답변 | 한국어 질문 E2E 27초, 근거 칩 9–21개, 후속 질문 맥락 유지 |
| 테스트 | 25개 통과 (가짜 app-server로 도구 차단·승인 거절·늦은 이벤트·비JSON 출력 포함) |

미팅 RAG의 "근거 인용"을 강의용으로 바꾸면서 인용 단위를 영상 시각과 쪽으로 바꾼 것이 핵심이다. 학생이 답의 근거를 한 번 클릭으로 원 강의에서 확인할 수 있다. 한국어 질문과 영어 자료 사이의 차이는 BM25만으로 해결되지 않아, LLM 검색어 변환과 수업 전체 맥락 주입으로 풀었다.
학생 공개 배포 호스트와 방식(로그인 노드는 loopback만 가능), 토큰 공유 방식, Codex 사용량 정책(rate limit 기본값: IP당 10분 30개)
PPTX는 텍스트만 보임(LibreOffice 없음). 화자 분리와 학생 계정이 없다. 가이드는 조교 검토 전 초안이다.