NEW코딩일지 · 11.05코퍼스 메인에 주장 연구실을 세웠다: 사유고2 주장 29만 개를 자동 등록하고 스파크 두 대가 반증 조건까지 검토한다
← 개발로그
·3분

사유고 개발로그 · 6화

AI 강의 품질을 쟀다: 모델이 쓴 인용은 문구가 바뀌고 쪽수가 틀렸다

완독 코스를 모델에게 맡기다 품질을 재기 시작했다. 인용을 모델이 직접 쓰게 하면 문구가 바뀌고 쪽수가 틀렸다.

▸ 사유고#llm#evaluation#citation

사유고의 완독 코스는 책 한 권을 여러 강의로 나눠, 강의마다 이 강의의 질문, 본문, 한 문단 정리, 객관식 이해 점검 세 문항, 다음 강 예고를 만든다. 같은 범위를 고등학생·대학원생·초등학생 수준으로 다시 풀어 주는 작가의 수업도 있다. 책이 수백 권이 되자 이 원고의 양이 사람이 다 읽을 수 없을 만큼 늘었다. 그래서 9월에는 모델이 쓴 강의를 어떻게 믿을지를 붙들었다.

모델부터 하나로

먼저 누가 쓰는지부터 정리했다. 그동안 기능마다 로컬 모델, 클라우드 모델, 에이전트를 섞어 썼다. 9월 8일, 새로 만드는 모든 글과 해석, 번역, 검수를 클라우드 모델 하나(Luna)로 고정했다. 로컬 모델은 운영자가 직접 켜고, 그 요청에서 클라우드 연결이나 인증, 한도 장애가 확인됐을 때만 비상용으로 쓴다. 응답 형식 오류나 품질 문제, 거절은 로컬로 넘어갈 이유가 아니다. 여기서 로컬로 넘기면 문제를 고치는 대신 가리게 된다. OCR, 음성 인식, 임베딩처럼 글을 만들지 않는 단계는 그대로 뒀다. 회귀 테스트 608개를 통과시킨 뒤 반영했다.

같은 범위로 비교한다

모델을 비교하려면 같은 문제를 풀게 해야 한다. 《생각에 관한 생각》의 같은 강의 범위(등록 원본 30~50쪽)로 두 모델에게 완독 코스와 작가의 수업을 쓰게 하고, 사람이 읽기 쉬운 텍스트로 뽑아 나란히 읽었다. 우리 기준으로 한쪽은 완독 코스 9.5점, 작가의 수업 9.0점이었고, 다른 쪽은 9.1점과 7.6점이었다. 점수보다 중요한 것은 차이가 어디서 나는지였다. 원문 장면에서 저자의 선택과 발견으로 이어지는 연결이 얼마나 촘촘한지, 저자의 말과 강의하는 쪽의 해석이 구분되는지가 갈랐다.

《대중의 반역》은 한 걸음 더 나갔다. 기존 원고를 보지 않고 1강부터 끝까지 새로 쓰게 해 보고, 1장과 2장은 등록된 원문 16~39쪽을 직접 읽고 다시 써서 앱의 강의를 바꿔 끼웠다. 진도와 퀴즈 개수, 원문 인용 같은 틀은 그대로 두고 강의 본문만 교체했다. 그러다 2장의 핵심 주장 요약에 원문과 반대되는 문장이 남아 있는 것도 발견했다. 그 파일은 그날 작업 범위 밖이라 고치지 않고 기록으로 남겼다.

기준부터 만든다

비교를 하다 보니 기준이 먼저 필요했다. 잘 쓴 강의가 무엇인지 정해 두지 않으면 점수는 그날 기분이 된다. 일곱 권을 골라 완독 강의 103개와 작가의 수업 226개, 모두 329개 원고(본문 약 127만 자)의 구조를 전부 대조했다. 퀴즈가 아예 없는 코스, 범위 정보가 한 강에만 붙은 코스가 있었고, 출처 정보를 제대로 가진 수업은 한 권의 35개뿐이었다. 이 조사에서 책마다 다른 사실 대신, 논증이 어떻게 이어지는지, 사례가 무슨 역할을 하는지, 저자와 인용된 사람과 해석하는 사람을 구분하는지 같은 기준을 뽑았다.

인용은 쓰게 하지 말고 고르게 한다

마지막으로 강의마다 핵심 주장, 근거와 논리, 사례를 나눈 표를 붙였다. 처음에는 모델에게 원문 인용을 직접 쓰게 했다. 결과는 검증에서 떨어졌다. 문구가 조금씩 바뀌어 있었고, 쪽수가 틀린 곳도 있었다. 그럴듯하지만 원문과 글자가 다른 인용이었다. 이 결과는 저장하지 않았다.

방식을 바꿨다. 원문을 번호 붙은 구절로 나눠 주고, 모델은 구절 번호만 고른다. 실제 인용 문장과 쪽수는 서버가 그 번호로 원문에서 꺼내 붙인다. 이렇게 하자 원문 일치 검증을 통과했다. 사례가 근거 칸으로 몰리던 첫 결과는 비교용으로 남겨 두고 지시를 보강했고, 원문에 없는 조건을 붙인 칸 하나는 지웠다. 이미 만든 강의 본문과 퀴즈, 진도는 건드리지 않고 빠진 표만 채웠다. 작업 전후로 관련 파일 24개의 해시가 같은 것을 확인했다.

배운 것

모델이 쓴 글을 믿으려면 모델이 틀릴 수 있는 자리를 줄여야 한다. 인용처럼 원문과 한 글자도 달라서는 안 되는 것은 모델에게 쓰게 하지 말고 고르게 하고, 나머지는 코드가 채운다. 그리고 모델을 비교하기 전에 무엇이 좋은 강의인지부터 적어 둬야 한다. 기준 없이 매긴 점수는 비교가 아니라 인상이다.

다음 화는 이렇게 쓴 강의를 600권 전부에 미리 만들어 두는 이야기다.

사유고 개발로그 · 전 11화

  1. 1화종이책 사진에 물어보는 서재: 글자·그림 검색 두 갈래로 세웠다
  2. 2화저자 토론 기능을 붙였다: GPT가 저자 연기를 거부했다
  3. 3화학습 루프를 만들었다: 증거 없이 완료되는 구멍이 나왔다
  4. 4화저자 인터뷰와 대목 연결 기능을 붙였다: 결함 5개를 먼저 고쳤다
  5. 5화책 587권 자동 등록: 파일은 왔는데 페이지가 빠져 있었다
  6. 6화AI 강의 품질을 쟀다: 모델이 쓴 인용은 문구가 바뀌고 쪽수가 틀렸다
  7. 7화600권 완독 코스·마인드맵을 배치로 미리 만들기 시작했다
  8. 8화배치 사용량 문지기: 5시간 한도 80%에서 쉬고 주간 90%에서 멈춘다
  9. 9화사유고2는 책 795권을 원문 10분의 1 크기 지도로 바꿨다: 답하는 서재에서 늘어놓는 서재로
  10. 10화투자 책 50권만으로 노트 2,094개짜리 지식 연결망이 나왔다: 795권으로 키우기 전에 고민할 것
  11. 11화사유고 촬영 자동화를 맥북 프로에서 맥북 에어로 옮겨 같은 작업을 이어 갔다: 바꾼 코드는 두 줄이었다