이젠 AI를 더 잘 써보고 싶어졌다.

치덕치덕 욕심을 바르고 시작하는 프로젝트.

by HA

국어 강사이자 개발자라는 이상한 조합

나는 국어 강사이면서 공대생이다. 좀 재미있는 겸업이긴 한데, 둘 다 싫지 않다. 나이는 찰 만큼 찼지만 둘 중 하나를 선택하기가 어려웠다. 그래서 만든 게 'AI를 잘 활용하는 국어 강사'라는 포지션이다. 이 조합이면 우리나라에서 가장 잘할 수 있을 것 같았다.

문제는, 이 두 세계가 머릿속에서 따로 놀고 있다는 거였다. 수능 문제 만들 때는 개발 지식이 필요 없고, 코딩할 때는 국어 강사 경험이 쓸모없어 보였다. 근데 가끔 이 둘이 교차하는 순간이 있다. 예를 들어, 문제 자동 생성 시스템을 만들 때 "출제자의 의도"를 AI한테 어떻게 설명해야 할지 고민하다가, 내가 학생들한테 강의하던 방식을 떠올린 적이 있다.

그때 든 생각이 "내 모든 지식을 AI한테 학습시키면, 이 교차점이 더 많이 생기지 않을까?"였다.


첫 번째 실패: 수능 문제 생성기

작년 12월쯤, 야심 찬 프로젝트를 시작했다. 수능 국어 비문학 문제를 AI로 자동 생성하는 도구였다. 학원에서 매주 3명 학생들한테 줄 문제를 30개씩 만들어야 했다. 대형학원 강사는 아니기에 시험범위는 뒤죽박죽이었고, 그러다 보면 밤 11시까지 책상 앞에 앉아있는 게 한두 번이 아니었거든.

'AI한테 시키면 되지 않을까?' 싶어서 기존 수능 기출을 Chroma DB에 넣고 RAG를 돌렸다. 아이디어는 단순했다. 벡터화해서 넣어두면 AI가 출제 패턴을 학습해서 비슷한 수준의 문제를 쏟아낼 거라고.

돈이 진짜 웃겼다. GPT API로 문제 하나 생성할 때마다 $0.08씩 날아갔다. 15문제 돌리면 $1.2. 사실 욕심이긴 했다. 출제 포인트를 잡고, 문제를 내고, 그 문제를 리뷰하는 작업. 이 모든 걸 각각의 에이전트에게 맡기니 수능 비문학 지문을 최소 3번씩 읽고 있었으니 비쌀 수밖에. 퀄리티라도 좋았으면 모르겠다. Generator(내가 붙인 이름이다)가 문제를 기껏 만들면 Revewier는 그냥 기각했다. 기껏 만들어놓고 쓰레기라고 판단하다니. 아까운 API호출 비용. 이걸 실제 학원 수업에 쓰겠다고 시작한 프로젝트인데, 이러면 답이 없었다.

실패 로그를 뜯어보면서 깨달았다. RAG는 검색 도구일 뿐이었다. 벡터 유사도로 청크 몇 개 끌어와서 "이거 참고해서 써"라고 던져주는 거지, 출제 논리나 난이도 분포 같은 메타 수준의 패턴은 전혀 이해 못 한다. '좋은 문제란 무엇인가'에 대한 암묵지가 필요한데, 단순 검색으론 불가능했다.



갈증: 진짜 나를 아는 AI

이 실패 이후로 내가 원하는 게 뭔지 명확해졌다. AI를 단순 도구가 아니라 확장된 자아처럼 쓰고 싶었다. 기술 토론할 땐 내 개발 노트를, 수능 문제 만들 땐 내 출제 철학을, 해외 정세 물어볼 땐 관련 메모를, 감정 이야기할 땐 판단 없이 들어주는 존재.

Grok의 Projects 기능을 보면서 잠깐 "오, 이거네!" 싶었는데 금방 한계를 느꼈다. 파일 업로드는 수동이고, 여러 프로젝트에 걸친 지식은 연결 안 되고. 더 깊게, 더 프라이빗하게, 내 지식을 그래프처럼 엮고 싶었다.

핵심은 이거였다. 개인 지식은 정형 데이터가 아니라 관계와 맥락으로 엮인 그래프다. 내 노션엔 400개 넘는 메모가 있는데, 검색하면 관련 메모 5개가 나온다. 근데 어느 게 내가 찾던 건지 하나하나 열어봐야 한다. 이게 정말 답답했다.

예를 들어, FastAPI CORS 에러 해결법을 3달 전에 정리했는데 막상 같은 에러 만나면 그 메모를 못 찾는다. 노션 검색창에 "fastapi cors" 치면 관련 메모가 뜨긴 하는데, 2023년에 쓴 건지 2024년에 쓴 건지, 해결됐던 건지 미해결이었는지 맥락이 없다.

수능 문제도 마찬가지다. "2022학년도 13번 문제 스타일"이라고 메모해 뒀는데, 나중에 보면 그게 무슨 스타일이었는지 기억이 안 난다. 문제 파일을 다시 열어봐야 한다.

수만 개의 메모를 하나로 연결할 '디지털 분신'을 꿈꾸기 시작했다.



냉정하게 시장 보기

이 아이디어를 비즈니스화해볼까 고민했다. 근데 레딧 뒤지고 GitHub 검색해 보니까, 이미 비슷한 거 하는 사람들이 수십 명이었다. AnythingLLM, PrivateGPT, Obsidian 플러그인... 대부분 내 아이디어랑 거의 똑같다. 백그라운드로 돌고, 파일 드래그 앤 드롭하면 자동으로 벡터화하고, 동적 쿼리 지원하고.

유료화는 거의 불가능해 보였다. 오픈소스 포크가 너무 쉽고, 사용자들은 이미 무료 대안을 쓰고 있다. 수십 개 경쟁 프로젝트 README를 읽으면서 "이 시장에 내가 끼어들 틈이 있을까?" 싶었다.

고민 끝에 내린 결론은 이거였다. 비즈니스로는 좀 글렀다. 근데 또 생각해 보니까, 이거 내가 필요해서 만드는 거잖아? 그리고 나같이 한국어 RAG 필요한 사람 분명 있을 거 같고. 돈은 못 벌어도 뭐 깃헙에 올려서 쓰고 싶은 사람 쓰게 하면 되지. 어차피 내 포트폴리오도 되고.

오픈소스로 가기로 했다.



Claude Code가 준 깨달음

이 프로젝트를 진짜 시작하게 만든 건 Claude Code였다. 쓰다 보니까 주간 컴퓨팅 자원이 제한된다는 게 너무 답답했다. 토큰 하나하나가 아까운 상황이 온다. "이거 물어봐도 되나? 아껴야 하나?" 고민하게 된다.

개인이 자유자재로 AI 쓰기가 참 어렵다는 걸 실감했다. API 쓰면 돈 나가고, 무료 플랜 쓰면 제한 걸리고. 남들은 언제부터 이 문제를 해결하려고 했는지는 모르겠다. 다만 나는 이 문제를 해결하고 싶었다.

남들을 위하기도 했지만, 솔직히 날 위한 프로젝트다. 내가 쓸 거니까.



차별화: 살아남으려면 다르게 만들어야 한다

경쟁 제품을 뜯어보면서 찾은 세 가지 방향이 있다.


첫째, 설치를 미친 듯이 쉽게 만들자.

기존 도구들은 Docker 띄우고, Python 가상환경 만들고, CUDA 설정하고... 비개발자는 포기한다. 내가 만들 건 실행 파일 하나 더블클릭하면 끝. Tauri로 패키징 해서 Ollama를 백그라운드에서 자동 설치하고, GPU/CPU 감지해서 최적 모델(Llama 3.1 8B) 자동 다운로드. 초보자도 1분 만에 나만의 AI 비서를 가질 수 있도록.

둘째, 한국어를 제대로 지원하자.

영어 중심 도구가 놓치는 한글 뉘앙스를 잡고 싶었다. 형태소 분석이 안 되면 "먹었다"와 "먹다"가 다른 단어로 인식된다. bge-m3와 KoBGE를 기본 임베딩으로 탑재하고, Konlpy를 내장할 생각이다. Qwen2 한국어 특화 모델을 기본 제공하고, 한중일 문서 섞여 있으면 자동언어 감지.

이거 하나만 제대로 해도 국내 사용자한테는 엄청난 가치다.

셋째, Graph RAG를 개인 수준에서 구현하자.

이게 진짜 핵심이다. 단순 벡터 검색은 한계가 명확하다는 걸 실패로 배웠으니까. LlamaIndex Knowledge Graph 모듈이랑 Neo4j Lite 결합해서 엔티티와 관계를 자동 추출할 생각이다. 예를 들어, "FastAPI"와 "CORS 에러"와 "해결 방법"을 개별 노드로 만들고 관계로 연결. "2022학년도 13번"과 "추론 문제"와 "난이도 상"을 연결.

여기에 LangChain 에이전트로 주기적 요약도 돌린다. "이번 주 해외 정세 키워드 변화" 같은 인사이트를 자동으로 푸시. 지식이 스스로 진화하는 시스템.

개인 수준에서 Graph RAG를 실용적으로 구현한 사례는 거의 못 봤다. 이게 진짜 차별점이 될 것 같다.


마무리

이 프로젝트는 곧 시작할 계획이다. 개발하면서 배운 것들, 삽질한 것들, 성공한 것들 모두 연재로 풀어낼 생각이다. 모든 것이 초안 덩어리지만 벌써 설렌다.

AI는 도구가 아니라 나 자신을 확장하는 거울이다. 이 여정은 아직 시작일 뿐이다.