[AI 실험실]/[개인 프로젝트] GraphRAG / GraphRAG | Exit Policy action preview 리포트.md

GraphRAG | Exit Policy action preview 리포트

조회

시리즈: GraphRAG 구축기 #23

이전: 22편 | 목록 | 다음: 24편

2026년 6월 30일 | 개인 프로젝트 · GraphRAG


GraphRAG profile registry에서 가장 애매한 순간은 후보를 바로 버리기에도, 바로 살리기에도 근거가 조금 모자랄 때다. 지난 회차에서는 exit policy가 어떤 조건을 만족했는지 summary에서 보이게 만들었다. 다만 거기서 한 칸 더 남아 있었다. `needs-manual-confirmation`이라는 상태는 보이는데, 실제로 사람이 다음에 어떤 버튼을 눌러야 하는지는 여전히 JSON을 열어 해석해야 했다.

GraphRAG exit policy action preview 흐름도
조건 충족 상태를 registry 변경이 아니라, 먼저 검토 가능한 action preview로 접는 흐름.

이번에 바꾼 지점

이번 회차에서는 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이 늘어났을 때 더 중요해질 거라고 본다. 이번 회차는 그 사이에 끼워 넣은, 꽤 실용적인 완충재 같은 작업이었다.

시리즈: GraphRAG 구축기 #23

이전: 22편 | 목록 | 다음: 24편

댓글

홈으로 돌아가기

검색 결과

"" 검색 결과입니다.