📝 한줄 요약
방대한 공공계약·법률 자료를 검색하는 내 AI 위키가 "그럴듯하게 틀리는" 게 불안해서, AI가 스스로 검색을 고치고 → 전체 성적표로 채점하고 → 좋으면 남기고 나쁘면 되돌리는 자가개선 루프를 한 달간 돌렸습니다. 그 과정에서 "점수는 오르는데 실력은 안 느는" 함정까지 잡았습니다.
바쁘시면 이것만 읽어도 돼요:
사용한 도구와 목표: Claude Code(설계·디버깅) + Codex(자동 실험 실행), 목표는 "믿을 수 있는 법률 자료 검색"
AI가 검색을 작게 고치고 → 전체 시험으로 채점 → keep/discard 하는 자가개선 루프를 한 달간 33번 반복
가장 큰 발견: 점수가 만점이어도 실력이 아니라 시험을 "외운" 것일 수 있다 → 비공개 시험지(holdout)로 진짜 실력만 따로 측정
"오!" 했던 순간: 한 달간 0%였던 복합 질문의 비공개 점수가 처음으로 움직였다 = 외운 게 아니라 진짜 실력이 늘었다는 첫 신호
법률 실무의 핵심: AI가 없는 근거를 지어내지 않고 "근거 부족"이라고 말하게 만든 것
배운 교훈: AI 결과물은 "좋아진 것 같다"가 아니라 안 본 문제 점수로 증명해야 한다
🎯 이런 분들께 도움돼요
법률·공공기관처럼 방대한 문서를 찾아 인용해야 하는 전문직
내 자료로 AI 검색(RAG)을 만들고 싶은 비개발자·세컨드브레인 사용자
AI 결과물이 "진짜 좋아졌는지"를 감이 아니라 증거로 관리하고 싶은 실무자
AI가 근거 없이 단정하는 환각(지어내기)이 무서워 업무에 못 쓰는 분
😫 문제 상황 (Before)
저는 공공기관에서 법률 자료를 다룹니다. 지방계약법, 시행령, 시행규칙, 계약집행기준, 질의회신 사례집… 이런 자료가 수백 건 쌓여 있고, 실무에서는 "이 상황에 맞는 정확한 조문 한 줄"을 빠르게 찾아야 합니다.
그래서 제 자료들을 AI가 검색해 주는 위키(LLM Wiki)를 만들어 쓰고 있었는데, 결정적인 불안이 하나 있었습니다.
검색을 믿을 수가 없었습니다.
문제는 세 갈래였습니다.
자료는 분명히 있는데, 검색이 엉뚱한 문서를 위에 올려서 정작 필요한 조문을 못 찾았습니다.
검색 규칙을 감으로 고치면 한 쪽이 좋아지고 다른 쪽이 망가지는데, 그걸 객관적으로 확인할 방법이 없었습니다.
가장 무서운 건, AI가 비슷한 자료만 보고 없는 근거를 있는 것처럼 단정하는 것이었습니다. 법률 실무에서 "모르면 모른다"는 건 정확한 답만큼이나 중요한데, AI는 일단 답을 지어내려는 경향이 있었습니다.
"잘 찾는 것 같다"는 느낌만으로는 업무에 쓸 수 없었습니다. 검색을 증명할 수 있는 시스템으로 바꿔야 했습니다.
🛠️ 사용한 도구
도구명: Claude Code (설계·디버깅·문서화), Codex (자동 실험 실행기)
보조: fablize (작업이 중간에 멈추지 않게 잡아주는 "작업 안전벨트")
특이사항: 검색 코드를 직접 짜기보다, "채점 → 실험 → 채택/폐기"라는 운영 절차를 AI에게 맡긴 것이 핵심
🔧 작업 과정
1. 시험이 너무 쉬워졌다 — 일부러 어려운 시험을 새로 냈다
처음엔 기쁜 일이었습니다. 검색을 다듬다 보니 기존 평가 문제 126개가 전부 만점이 나왔거든요. 그런데 곧 이게 함정이라는 걸 깨달았습니다. 전부 만점이면, 시스템을 고쳤을 때 좋아졌는지 나 빠졌는지를 더 이상 알 수가 없습니다.
그래서 AI에게 일부러 어려운 시험을 새로 내달라고 했습니다.
실무에서 진짜 물어볼 법한, 어려운 평가 질문을 새로 만들어줘.
법률 용어를 안 쓰고 묻는 구어체 질문, 조문 두 개를 한꺼번에 찾아야 하는 복합 질문,
자료에 없는 걸 물었을 때 "모른다"고 하는지 보는 질문도 넣어줘.이렇게 네 유형의 어려운 시험이 만들어졌습니다. 예를 들어 "지체상금 요율이 얼마인가" 대신 "공사 끝나는 날짜를 못 맞췄는데 하루에 얼마씩 물려야 하나요?" 처럼 일반인 말투로 묻는 식이죠.
첫 채점은 38점(100점 만점)이었습니다. 일부러 어렵게 냈으니 당연한 결과고, 이제부터 이 점 수가 오르는지가 진짜 개선의 증거가 됩니다. 만점짜리 쉬운 시험을 버리고, 점수가 움직이는 어려운 시험을 손에 쥔 순간이었습니다.
2. AI가 스스로 검색을 고치게 했다 — 자가개선 루프(Autoresearch)
여기서부터가 이 프로젝트의 핵심입니다. 검색 규칙을 제가 일일이 손으로 고치는 대신, AI가 스스로 실험하게 만들었습니다. 이름은 거창하지만 원리는 단순합니다.
1. 문제 하나를 고른다
2. 왜 안 되는지 가설을 세운다
3. 아주 작은 수정만 한다
4. 전체 성적표를 다시 채점한다
5. 좋아졌으면 남긴다 (keep)
6. 나빠졌으면 되돌린다 (discard)중요한 건 "어려운 시험 점수만 오르면 무조건 좋은 것"이 아니라는 점이었습니다. 검색 규칙을 세게 밀어붙이면 특정 어려운 문제는 맞히지만, 평소 잘 되던 질문의 답이 깨질 수 있거든요. 그래서 항상 두 가지를 동시에 봤습니다.
기존 126문항 품질검사 → 평소 질문이 안 깨졌는지
어려운 시험 → 까다로운 질문이 좋아졌는지
실제로 자동 실험 초반엔, 어려운 점수는 올랐는데 기존 품질검사가 떨어진 변경이 여럿 나왔습니다. 전부 버렸습니다. 이게 핵심입니다 — "잠깐 점수 올랐지만 다른 걸 망가뜨린" 변경을 AI가 스스로 폐기하게 한 것. 이 루프를 한 달간 33번 돌렸습니다.
여기서 "오!" 했던 장면도 있었습니다. 부정당업자 관련 문서 연결을 보강했더니, 정당해 보이던 그 수정이 엉뚱하게 다른 질문 하나를 망가뜨렸고, 안전장치가 그걸 곧바로 잡아냈습니다. AI가 규칙대로 변경을 전부 되돌리는 걸 보면서, "이제 감이 아니라 증거로 굴러가는구나" 싶었습니다.
3. 점수는 만점인데 실력은 제자리였다 — "외운 것 vs 실력"을 잡은 장치
한 달쯤 지나 이상한 걸 발견했습니다. 자동 실험이 어려운 시험 점수를 계속 만점으로 끌어올렸는데, 새 시험지를 만들 때마다 시작 점수가 0.5~0.6으로 뚝 떨어지는 겁니다.
시험 v1: 만점 → 더 어려운 v2 만듦 → 만점 → v3 → 만점 → v4 → 만점 → v5
(그런데 새 시험을 낼 때마다 처음엔 0.5점대로 추락)원인은 충격적일 만큼 단순했습니다. AI가 "어떤 문제를 틀렸는지" 목록을 보고, 딱 그 문제만 맞히는 규칙을 손으로 추가해 온 거였습니다. 검색 코드가 그 사이 5,400줄까지 불어나 있었고요. 한마디로 실력이 는 게 아니라 시험을 외운 것이었습니다.
그래서 학교 시험에서 기출만 외운 학생을 가려내듯, 장치를 하나 넣었습니다.
공개 문제(dev) 12개: AI가 틀린 걸 보고 고칠 수 있음
비공개 문제(holdout) 6개: 점수만 보이고, 문제 내용은 숨김이제 진짜 실력은 "비공개 문제 점수"로만 잽니다. 공개 점수만 오르고 비공개가 안 오르면 = 외운 것. 이 장치를 넣자마자 효과를 봤습니다. 어떤 보강을 했더니 공개 복합질문은 25%→50%로 올랐는데 비공개는 0%→0% 그대로. 즉 그것도 "그 문서에만 통하는 땜질"이었다는 걸 장치가 정확히 짚어준 거죠.
이 장치를 넣기 전이었다면 그 변경은 "점수 올랐네" 하고 그냥 채택됐을 겁니다. 지난 30여 번의 채택이 왜 실력으로 이어지지 않았는지가, 이 한 번의 실험에서 그대로 드러났습니다.
4. 한 달을 붙든 복합 질문의 천장 — 그리고 첫 진전
가장 어려웠던 건 복합 질문이었습니다. "한 번에 근거 2~3개를 다 찾아야 답할 수 있는" 질문인데, 이걸 풀려고 방법을 바꿔 가며 계속 시도했습니다. 그런데 세 번 연속 실패했습니다.
1차: 관련 문서 연결 보강 → 공개 점수만 오르고 비공개는 그대로
2차: 질문 속 조문번호로 자료 찾기 → 법·시행령·시행규칙이 같은 "제31조"를 각각 갖고 있어 엉뚱한 게 딸려옴
3차: "어느 법의 몇 조인지"까지 구분 → 엉뚱한 자료는 사라졌지만 점수는 그대로세 번 실패하자 규칙대로 멈추고 원인부터 봤습니다. 그랬더니 놀라운 결론이 나왔습니다 — 이건 "어디서 찾을지"의 문제가 아니라 "비슷한 여러 자료 중 진짜 맞는 하나를 고르는" 문제였고, 더 깊이 파보니 검색이 아니라 채점이 발목을 잡고 있었습니다.
예를 들어 "하자담보책임 존속기간"을 물으면 시스템은 "존속기간 해석 사례"를 1순위로 가져오는데, 제가 만든 정답표는 "존속기간 조문" 하나만 정답으로 못박아 뒀습니다. 둘 다 맞는 자료인데, 옳게 찾고도 틀렸다고 채점되고 있었던 거죠.
그래서 순서를 바꿔, 채점부 터 고쳤습니다.
이전: "공사용지 확보" = 특정 문서 하나만 정답
이후: 같은 내용의 두 문서 중 하나만 찾아도 정답 인정 (any-of)(단, "시험을 통과시키려고 아무거나 정답에 넣지는 않는다"는 원칙은 지켰습니다. 똑같이 맞는 자료일 때만 여럿 인정.)
이 토대 위에서 "긴 질문을 작은 질문 여러 개로 쪼개서 각각 답을 찾는" 방법을 다시 붙였습니다. 그리고 드디어 — 한 달간 0%였던 비공개 시험의 복합질문 점수가 처음으로 움직였습니다.
공개 시험 복합질문: 50% → 83%
비공개 시험 복합질문: 0% → 17% (처음으로 0 탈출!)제가 보지도 않은 문제가 좋아졌다는 건, 외운 게 아니라 진짜 실력이 늘었다는 첫 신호였습니다. 한 달을 붙들고 처음 본 진짜 진전이었죠. 최종적으로 채택된 방식은 "앞줄(1~3위 검색결과)은 건드리지 않고, 부족한 근거가 있을 때만 뒤쪽 빈자리에 조심스럽게 보충"하는 것이었습니다. 예전 시험은 만점을 유지하면서 새 시험과 비공개 시험이 함께 올라간, 처음으로 깨끗한 개선이었습니다.
5. AI가 "모른다"고 말하게 만들었다 — 법률 실무의 진짜 핵심
마지막은 정확도가 아니라 정직함에 관한 이야기입니다. 검색 시스템은 보통 "무언가를 찾아오는 능력"에 집중합니다. 하지만 법률·계약 실무에서는 없는 근거를 있는 것처럼 말하지 않는 능력이 그만큼 중요합니다.
그래 서 자료에 없는 걸 물었을 때 AI가 어떻게 반응하는지를 따로 시험했습니다. 예를 들면 이런 것들입니다.
- 특정 지방공기업의 2026년 최신 내부 특수조건
- 개인정보보호위원회 과징금 산정자료
- 행정안전부 표준시장단가 단가표 수치처음엔 시스템이 비슷한 문서를 찾으면 그냥 답을 만들어내려 했습니다. 이걸 고쳐서, 최신 자료나 외부기관 자료가 빠진 경우엔 답을 지어내지 않고 "근거 부족"으로 보류하도록 만들었습니다. 채점 방식도 함께 손봤습니다 — 사용자가 질문에 쓴 위험한 표현까지 AI의 단정으로 오해하지 않도록, 실제 답변 본문이 단정했는지만 보게 좁혔습니다.
최종 결과:
- 답이 없는 질문 3문항: 3개 모두 "근거 부족"으로 올바르게 보류
- 표준 답변 평가 28문항: 28문항 전부 통과
- 전체 품질검사: PASS이제 이 위키는 비슷한 문서가 검색돼도 바로 답을 만들지 않고, 근거가 부족하면 멈춰 섭니다. 법률 자료를 다루는 사람에게는 이게 정확도보다 더 안심되는 변화였습니다.
✅ 결과 (After)
Before vs After
항목
Before
After
검색 신뢰도
"잘 찾는 것 같다"는 느낌뿐
안 본 문제(비공개) 점수로 증명
어려운 시험 점수
38점
77점 이상 (계속 측정 중)
복합(멀티홉) 질문
비공개 0%
비공개 첫 진전(0→17%)
근거 없는 질문
답을 지어냄
"근거 부족"으로 보류
개선 방식
감으로 코드 수정
작게 고치고 전체 채점 후 keep/discard
새 자료 추가
검색 규칙 수동 추가(25개 누적)
문서를 만들면 검색이 자동으로 따라옴
결과물
검색 규칙을 감이 아니라 성적표로 판단하는 운영 체계 (Autoresearch 루프)
"외운 것 vs 실력"을 가려내는 비공개 시험 장치
법률 자료를 지어내지 않고 보류하는 정직한 검색
새 정리 문서를 만들면 검색이 자동으로 연결되어, 자료가 스스로 자라는 구조
💬 이 과정에서 배운 AI 활용 팁
효과적이었던 것
점수 말고 "안 본 문제"로 측정하라. 공개 점수만 보면 AI가 문제를 외웁니다. 일부를 숨긴 비공개 시험(holdout)을 만들어야 진짜 실력을 알 수 있습니다.
작게 고치고 전체를 다시 채점하라. 한 번에 크게 바꾸지 말고, 작은 수정 → 전체 성적표 → keep/discard. 한 쪽을 고치다 다른 쪽을 망가뜨리는 걸 바로 잡아냅니다.
AI가 "모른다" 하게 허용하라. 특히 법률·의료 같은 고위험 분야에선, 지어내는 것보다 "근거 부족"이라 말하는 게 더 가치 있습니다.
막히면 시제품으로 빨리 시험하라. 완벽하게 만들기 전에 거친 시제품으로 돌려보면, 진짜 막힌 곳이 "검색"이 아니라 "채점"이었다는 걸 적은 비용으로 알 수 있습니다.
이렇게 하면 안 돼요
틀린 문제만 콕 집어 고치지 마라. 그건 실력 향상이 아니라 시험 암기입니다. 코드만 5,400줄로 불어나고 새 문제 앞에선 무너집니다.
"점수 올랐네" 하고 바로 채택하지 마라. 다른 곳을 망가뜨렸는지(기존 품질검사) 반드시 같이 확인하세요.
정답표를 너무 좁게 못박지 마라. 똑같이 맞는 자료가 둘인데 하나만 정답으로 두면, AI가 옳게 찾고도 틀렸다고 채점됩니다. 채점이 잘못되면 검색을 아무리 고쳐도 점수에 안 잡힙니다.
🌍 다른 업무에 적용한다면?
이건 법률 자료라서 특별한 게 아닙니다. "내 자료가 많고, AI가 그걸 정확히 찾아 인용해야 하는" 모든 상황에 그대로 적용됩니다.
사내 규정·매뉴얼이 수백 건인 기업의 헬프데스크
논문·임상자료를 인용해야 하는 연구·의료 분야
판례·계약서를 찾아야 하는 법무팀
강의자료·교재가 쌓인 교육 현장
공통 원리는 하나입니다 — AI 검색을 "느낌"으로 운영하지 말고, 시험지와 성적표를 먼저 만들고, 그 점수로 개선을 증명하세요. 그리고 그 시험엔 반드시 AI가 못 보는 비공개 문제를 섞어 두세요.
🚀 앞으로의 계획
복합 질문 천장 뚫기: 질문을 똑똑하게 쪼개는 AI를 검색에 넣거나, 의미 기반 검색 단계를 추가해 지금 구조의 한계를 넘는다.
생활어 → 실무용어 번역: 사용자가 법률용어를 몰라도 예정가격·검사·보증금·물가변동 같은 실무 주제로 잘 번역하는 능력을 높인다.
답변 생성 능력 강화: "찾는 능력"을 충분히 키웠으니, 이제 찾은 근거로 "잘 답하는 능력"을 어려운 문제로 시험한다.
다른 분야 확장: 지금은 공공계약 분야지만, 같은 자가개선 틀을 다른 법률·업무 자료로 넓힌다.
📋 재사용 가능한 프롬프트
프롬프트 1: 어려운 평가 시험지 만들기
내 [자료 분야] 자료를 검색하는 시스템을 평가하려고 해.
실무에서 진짜 물어볼 법한 어려운 질문을 만들어줘. 다음 네 유형을 섞어줘:
(1) 전문용어 없이 일반인 말투로 묻는 질문
(2) 근거 두세 개를 한 번에 찾아야 답할 수 있는 복합 질문
(3) 비슷하지만 다른 제도로 잘못 답하는지 보는 함정 질문
(4) 자료에 없는 걸 물었을 때 "모른다"고 하는지 보는 질문
[자료 분야]를 본인 상황에 맞게 바꾸세요.
프롬프트 2: 외우기 방지 — 비공개 시험 장치
평가 문제의 일부를 "비공개(holdout)"로 떼어 놔줘.
너에게는 비공개 문제의 점수만 보여주고, 어떤 문제인지는 숨겨줘.
개선할 때 공개 점수만 오르고 비공개 점수가 안 오르면,
그건 일반화가 아니라 그 문제들에만 통하는 땜질이라고 알려줘.
프롬프트 3: 안전한 자가개선 루프
검색을 개선할 때 이 절차를 지켜줘:
문제 하나를 고르고 원인 가설을 세운다
아주 작은 수정만 한다
어려운 시험 점수와 함께, 기존에 잘 되던 질문들도 다시 채점한다
둘 다 괜찮으면 남기고(keep), 하나라도 나빠지면 되돌린다(discard)
같은 방향으로 3번 연속 실패하면 멈추고 원인부터 다시 보자.
프롬프트 4: AI가 "모른다"고 말하게 하기
자료에 근거가 없거나 최신·외부기관 자료가 빠진 경우엔,
비슷한 문서가 검색돼도 답을 만들지 말고 "근거 부족"이라고 보류해줘.
특히 [수치·최신 단가·특정 기관 내부자료]는 근거 없이 단정하면 안 돼.
[대괄호 부분]을 본인 분야의 민감한 정보로 바꾸세요.