VaultExam AI: 노트 업로드 없이 개인 자료로 모의고사 만들기
요약
VaultExam AI는 사용자의 로컬 노트 자료를 활용하여 프라이버시가 보장되는 모의고사 및 학습 자료를 생성하는 도구입니다. 모든 데이터 처리가 로컬에서 이루어지며, 질문 답변 시 페이지 출처까지 명확히 제시됩니다. 시험 유형과 난이도에 맞춰 다양한 변형 문제를 자동으로 생성할 수 있습니다.
핵심 포인트
- 로컬 기반으로 작동하여 개인 정보 보호가 최우선입니다.
- 다양한 형식의 노트 자료를 업로드하고 임베딩합니다.
- 시험 유형, 난이도별 맞춤 모의고사 생성이 가능합니다.
- 페이지 출처와 상세 정답지까지 제공되어 활용도가 높습니다.
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
제가 만든 것 (What I Built)
VaultExam AI는 어떤 형식의 자료(챕터)든 준비된 인쇄용 문제지 및 정답지와 변환하며, 같은 문서에 대해 페이지 출처가 명시된 답변을 질문할 수 있는 100% 로컬 기반의 프라이버시 우선 도구입니다.
이 서비스를 돈을 지불할 사람: 독립 코칭 학원, 시험 대비 과외 교사, 대학 교수 및 기업 트레이너. 이들의 선별된 노트와 문제 은행은 그들의 지적 재산(intellectual property)이며, 클라우드 API에 업로드하고 싶어 하지 않습니다. 또한 매주 수작업으로 모의고사, DPP(Daily Practice Problems), Set A/B 등의 변형 문제를 작성하는 데 시간을 소비합니다.
기능 (What it does):
- 모든 형식의 노트를 업로드할 수 있습니다. 로컬에서 청크화(chunked) 및 임베딩(embedded)되며, 파일은 수집 직후 디스크에서 삭제됩니다.
- 문서에 질문하기: 답변은 오직 사용자의 노트에서만 나오며, 페이지 출처가 명시됩니다.
- 시험 생성: 학원 이름, 시험 유형(코칭 모의고사, 대학 중간고사, 기업 SOP 퀴즈), 난이도(Recall, Application, Analytical/Edge Cases), 객관식 문항(MCQs) 수, 단답형 및 장문 답변 수를 선택할 수 있습니다.
- Set A/B/C: 각 세트는 문서의 다른 부분을 활용하여 이전 질문을 반복하는 것을 방지합니다.
- 정답지 포함: 설명이 있는 MCQ 정답, 단답형 및 장문 문제에 대한 모범 답안, 채점 기준 핵심 포인트, 그리고 교사가 확인할 수 있도록 모든 질문의 출처 페이지가 제공됩니다.
- 브라우저에서 바로 인쇄하거나 PDF로 저장할 수 있습니다.
데모 (Demo)
코드 (Code)
https://github.com/ronitsolanki-01/VaultExam.git
구축 과정 (How I Built It)
모든 것이 사용자의 자체 기기에서 실행됩니다. 클라우드 호출이나 토큰당 비용이 발생하지 않습니다.
- 백엔드: Java 21, Spring Boot 4.1.1 및 Spring AI 2.0.1
- LLM: 로컬 Ollama을 통해 제공되는 오픈 가중치 모델 (qwen3.5:4b)
- 임베딩(Embeddings): Ollama를 통한
nomic-embed-text - 벡터 저장소(Vector store): PostgreSQL with PGVector (docker compose를 통한 pgvector/pgvector:pg16),
document_id로 메타데이터 필터링 - 색인화(Ingestion): Spring AI의
TikaDocumentReader 및 PagePdfDocumentReader가 모든 청크에 페이지 번호를 유지하고, 이후TokenTextSplitter가 이를 청킹합니다. - 프론트엔드: 하나의 Next.js 페이지 (TypeScript, Tailwind)이며, 출력용으로 window.print()를 사용했습니다.
시험 생성기가 작동하는 방식은 다음과 같습니다. 문서에서 일부 청크 샘플을 검색하고, 모델에게 객관식 문제(MCQs), 단답형 질문(short answers), 장문 답변(long answers)을 별도의 구조화된 출력 호출(structured-output calls)로 요청한 다음, 각 결과를 검증합니다 (문제 개수, 정확히 네 개의 선택지 유무, 유효한 정답 인덱스). 그리고 로컬 모델이 잘못된 JSON을 반환할 경우 재시도합니다. 각 세트는 문서의 다른 시드 샘플과
폐쇄형 API(closed API)였다면 이 제품을 타겟 고객에게 판매하는 것이 불가능했을 것입니다. 학원(coaching institute)의 자료는 그들의 비즈니스이며, '질문 은행을 제3자에게 전송하라'는 것은 거래를 파기할 만한 문제(dealbreaker)입니다.
오픈 웨이트 모델(open-weight models) 덕분에 전체 파이프라인을 고객 자신의 기기 내부에서 실행할 수 있습니다. 이는 경제성 측면도 변화시킵니다: 100개의 시험지를 생성하는 것은 토큰 비용이 아니라 전기료가 들기 때문에, 과외 선생님은 청구서를 걱정하지 않고 밤 11시에 Set B를 재현할 수 있습니다. 그리고 스택(stack) 자체가 오픈되어 있기 때문에, 학원은 하드웨어 사양에 맞춰 모델을 더 큰 것으로 교체할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기

