2026년 6월 30일 | 개인 프로젝트 · GraphRAG
GraphRAG profile registry에서 가장 애매한 순간은 후보를 바로 버리기에도, 바로 살리기에도 근거가 조금 모자랄 때다. 지난 회차에서는 exit policy가 어떤 조건을 만족했는지 summary에서 보이게 만들었다. 다만 거기서 한 칸 더 남아 있었다. `needs-manual-confirmation`이라는 상태는 보이는데, 실제로 사람이 다음에 어떤 버튼을 눌러야 하는지는 여전히 JSON을 열어 해석해야 했다.
이번에 바꾼 지점
이번 회차에서는 evaluator가 새 리포트 하나를 더 남기게 했다. 이름은 registry-exit-policy-action-preview다. 관찰 대상 profile의 exit policy condition 중 실제로 충족된 항목을 읽고, 그것을 registry에 바로 쓰지 않는 action 후보로 바꾼다. 핵심은 자동 반영이 아니라 비파괴적인 preview다.
예를 들어 `path_bridge_probe`는 아직 observe 상태다. warning streak가 길어졌고, warning scope도 좁혀야 한다. 이전 리포트는 이 사실을 조건 수준으로 보여 줬다. 새 리포트는 거기서 한 단계 더 나아가 `manual-review-required`와 `narrow-warning-scope`라는 후보 행동을 한 곳에 모은다. 대신 `configs/profile_registry.json`은 손대지 않는다.
왜 바로 registry를 고치지 않았나
이 프로젝트에서 registry는 단순 설정 파일이 아니라 실험 운영의 기억장치에 가깝다. 어떤 scoring profile이 active인지, observe인지, disabled인지가 여기에 남고, 그 상태가 다음 sweep의 실행 범위를 바꾼다. 그래서 조건 하나가 맞았다고 곧장 상태를 바꾸면, 평가 루프가 생각보다 빨리 한쪽으로 굳어질 수 있다.
특히 지금 다루는 exit policy는 아직 draft이고 activation gate도 manual confirmation이다. 나는 이 상태에서는 evaluator가 “이 행동을 고려하라”까지만 말하는 게 맞다고 봤다. 사람이 한 번 확인한 뒤 별도 명령으로 registry update를 적용해야, 실험 기록과 실제 상태 변경 사이의 간격이 보인다.
리포트에 담긴 정보
새 preview는 profile 이름, 현재 registry status, 최신 품질 상태, exit policy readiness를 같이 담는다. 그리고 조건별 후보 action을 배열로 내려준다. 이번 smoke run에서는 profile 하나가 잡혔고, action 후보는 두 개였다.
- manual-review-required: warning streak가 policy threshold에 도달했다.
- narrow-warning-scope: 다음 sweep 전에 warning scope를 줄여야 한다.
텍스트 summary에도 한 줄을 붙였다. 이제 긴 JSON을 열기 전에도 `profiles=1`, `actions=manual-review-required:1, narrow-warning-scope:1`, `readiness=needs-manual-confirmation:1` 정도는 바로 읽힌다. 작은 변화지만 반복 실험에서는 이런 한 줄이 꽤 중요하다. 어디까지가 측정 결과이고, 어디부터가 운영 판단인지 덜 섞이기 때문이다.
테스트와 smoke run
작업은 작게 끊었다. 먼저 기존 observation review 테스트에 action preview 경로와 payload 검증을 추가해서 실패를 확인했고, 그 다음 evaluator에 preview builder와 trace writer를 붙였다. 마지막에는 profile evaluation과 registry 관련 테스트를 같이 돌린 뒤 전체 테스트를 다시 확인했다.
결과는 47개 테스트 통과였다. smoke bundle도 새로 만들었다. 이번 trace bundle의 summary 첫부분에는 profile registry, observation review, action preview 세 줄이 차례로 나온다. 이 흐름이면 다음 회차에서 registry update 명령을 만들 때도 어느 리포트를 입력으로 삼아야 하는지 훨씬 덜 헷갈릴 것 같다.
남은 일
다음 단계는 preview를 실제 registry update로 옮기는 명시적 명령이다. 다만 여기서도 자동화를 너무 빨리 밀면 안 된다. profile 이름과 action 이름을 직접 넘기고, draft/manual-gated policy는 확인 플래그가 없으면 거절하게 만들 생각이다. 그래야 “조건을 만족했다”와 “운영 상태를 바꿨다”가 한 로그 안에서 섞이지 않는다.
GraphRAG MVP가 검색 점수만 보는 단계에서 점점 운영 루프를 갖춘 실험 도구 쪽으로 가고 있다. 아직 화려한 기능은 아니지만, 나는 이런 작은 안전장치가 나중에 profile이 늘어났을 때 더 중요해질 거라고 본다. 이번 회차는 그 사이에 끼워 넣은, 꽤 실용적인 완충재 같은 작업이었다.
'[AI 실험실] > [개인 프로젝트] GraphRAG' 카테고리의 다른 글
| GraphRAG | Scoring Profile 후보 검증 (0) | 2026.07.07 |
|---|---|
| GraphRAG | Exit Policy preview action 적용 (0) | 2026.07.03 |
| GraphRAG | Exit Policy 조건 리포트 (0) | 2026.06.26 |
| GraphRAG | Exit Policy Draft의 registry 반영 (0) | 2026.06.23 |
| GraphRAG | Observation aging의 registry preview 연결 (0) | 2026.05.19 |