Files
2nd/10_Wiki/Topics/Topic_Programming/Subsystems/Intelligence_검증_레이어.md
T
Antigravity Agent e2c5471046 wiki: Topic_Blog 신규 문서 일괄 추가 + ASTRA 성장 자산 동기화
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 09:55:38 +09:00

8.8 KiB

id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
id title category status verification_status canonical_id aliases duplicate_of source_trust_level confidence_score created_at updated_at review_reason merge_history tags raw_sources applied_in github_commit
intelligence-verification-layer Intelligence 검증 레이어 AI_and_ML draft applied
self-evolving
critic
confidence engine
epistemic guard
correction loop
anti-hallucination
자기검증
환각 방지
A 0.93 2026-06-13 2026-06-13
intelligence
verification
hallucination
self-evolving
ai
connectai
ConnectAI/src/intelligence/criticAgent.ts
ConnectAI/src/intelligence/confidenceEngine.ts
ConnectAI/src/intelligence/epistemicGuardBlock.ts
ConnectAI/src/intelligence/correctionLoop.ts
ConnectAI

Intelligence 검증 레이어

🎯 한 줄 통찰 (One-line insight)

작은 로컬 LLM 의 환각·오류를 시스템이 잡으려면 "저렴한 결정론적 검사를 항상, 비싼 LLM 검사는 조건부로" 돌리고, 사용자 정정 한 번을 시스템 성장으로 환원하는 폐루프가 핵심이며, ConnectAI 는 Epistemic Guard(사전 억제)·Confidence Engine(측정)·Critic(사후 검수)·Correction Loop(학습)로 이를 계층화한다 [S1][S2][S3][S4].

🧠 핵심 개념 (Core concepts)

  1. Epistemic Guard (사전): 시스템 프롬프트에 "확실/추정/모름 3등급" 을 강제하는 블록을 주입. 검색 근거가 없을수록 지시가 강해진다("지어내지 말고 질문하라") [S3].
  2. Confidence Engine (측정): LLM 호출 없이 검색 그라운딩 신호 + 답변 텍스트 신호(정규식)만으로 0~100 확신도를 결정론적 산출. latency 0 [S2].
  3. Critic Agent (사후): 결정론적 검사가 문제를 신호할 때만 LLM 검수 1회 — 조건부 1-pass. 누락·근거 없는 단정·미결 구분을 검사 [S1].
  4. Correction Loop (학습): 사용자 정정을 Ground Truth 로 보고 레슨 저장 + 회귀 케이스 적립 + 약점 프로필 → 다음 턴 프롬프트에 자동 주입 [S4].
  5. CoVe vs Epistemic Guard 분업: CoVe 는 출처가 있을 때 주장-출처 매핑 검증, Epistemic Guard 는 출처 유무 무관 등급 표시 강제 [S3].

🧩 추출된 패턴 (Extracted patterns)

  • 저렴한 것 항상, 비싼 것 조건부: 결정론적(정규식/카운트) 검사는 매 턴, LLM 검수는 신호가 있을 때만 — 로컬 모델 latency 비용 통제 [S1][S2].
  • "확신도는 모델 자신감이 아니라 검증 가능성": 모델이 솔직히 "(확인 필요)" 를 쓰면 점수가 내려가는 게 올바른 동작 — 사용자 검토를 유도해야 하므로 [S2].
  • 가중치 합산 + factor 기록: 확신도를 요인별 delta 합으로 계산하고 각 factor 를 footer 에 노출 — 점수가 왜 그렇게 나왔는지 설명가능 [S2].
  • 정답지를 사람이 안 만든다: 정정 발화 자체가 Ground Truth. 회귀 테스트가 "같은 실수 반복?" 을 LLM-judge 로 판정 [S4].
  • 통찰→행동의 기계화: 태그 통계가 리포트에 머물지 않고 buildSelfReviewBlock 으로 다음 턴 시스템 프롬프트를 바꾼다(같은 태그 2회+일 때만) [S4].
  • JSON 강건 파싱: LLM 의 JSON 출력에 잡설이 섞여도 첫 균형 {} 블록을 스캔해 추출 [S1].
  • fire-and-forget 캡처: 정정 캡처는 비동기로 흘려 응답 속도에 영향 없음 [S4].

📖 세부 내용 (Details)

Confidence Engine — 결정론적 가중 합산

중립 출발점 55에서 시작해 요인별로 가감한다 [S2]:

  • 그라운딩: 청크 3건+ & topScore 0.5+ → +25, 1건+ → +12, 없음 → -15.
  • 출처 인용 +8 / 모델 지식만 -5.
  • 출처 충돌 건당 -8(최대 -16), 요청 모호성 -10.
  • Requirement 커버리지 전부 충족 +10 / 누락당 -6(최대 -18).
  • 헤지 표현 개당 -4(최대 -12). 구간: 90+ 높음 / 70-89 보통 / 50-69 낮음 / <50 매우 낮음(에스컬레이션).

Critic — 조건부 1-pass 검수

완전한 작성→비판→재작성 debate 는 로컬 Gemma latency 때문에 미룬다. v1 은 "커버리지 누락 또는 확신도 <70" 일 때만 Critic LLM 1회 호출, 결과를 답변 아래 보완 카드로 표시. maxRounds knob 만 준비해 두고 다회전은 후속 [S1].

Correction Loop — 정정 1회가 3곳을 성장

사용자 정정 → ① 감지(보수적 정규식) + LLM 분류(6개 오류 태그)
  ├→ 태깅된 레슨 저장 (lessons/)
  └→ 회귀 케이스 적립 (.astra/eval/corrections.jsonl)
② 주간 성장 사이클: 회귀 재검사 + 태그 통계 → 약점 프로필
③ 약점 프로필 → 시스템 프롬프트 자기검토 블록 자동 주입

설계 원칙: 정답지는 정정 자체, 통찰→행동은 기계적, 모든 산출물은 사람이 열어 수정/삭제 가능(Permission Based Learning), 캡처는 fire-and-forget [S4].

폭주 방지 장치들

  • 자기검토 블록은 같은 태그 2회+일 때만(1회성 실수로 프롬프트 어지럽힘 방지) [S4].
  • 지식 공백 학습 큐는 같은 질문 1회만 등록(해시 id) + proposed 20건 쌓이면 사람이 정리할 때까지 중단 [S4].

⚖️ 모순 및 업데이트 (Contradictions & updates)

  • 휴리스틱 가중치의 임시성: Confidence 가중치는 "휴리스틱 v1" 으로, 골든셋이 쌓이면 사람 평가와의 상관으로 보정 예정 — 현재 절대 점수보다 상대 비교 와 추세에 의미가 있다.
  • 정규식 정정 감지의 한계: 보수적이라 미묘한 정정("음 그건 좀…")은 놓친다. 오탐이 레슨 노이즈를 만들기에 의도적으로 보수적.
  • Critic 의 1-pass 한계: 다회전 debate 가 더 정확하지만 비용 때문에 보류 — 정확도 vs latency 트레이드오프의 현실적 타협.

🛠️ 적용 사례 (Applied in summary)

  • ConnectAI/src/intelligence/confidenceEngine.ts — 결정론적 확신도 + footer [S2].
  • ConnectAI/src/intelligence/criticAgent.ts — 조건부 검수 + 균형 JSON 파싱 [S1].
  • ConnectAI/src/intelligence/epistemicGuardBlock.ts — 사전 억제 프롬프트 [S3].
  • ConnectAI/src/intelligence/correctionLoop.ts — 정정→레슨→약점프로필→프롬프트 폐루프 [S4].

💻 코드 패턴 (Code patterns)

// 1) 결정론적 확신도 — 요인별 delta 합산 + 설명가능 (src/intelligence/confidenceEngine.ts)
let score = 55;  // 중립 출발점
if (retrieval.chunkCount >= 3 && retrieval.topScore >= 0.5) factors.push({ label: '검색 근거 강', delta: +25 });
else if (retrieval.chunkCount >= 1) factors.push({ label: '검색 근거 있음', delta: +12 });
else factors.push({ label: '검색 근거 없음', delta: -15 });
if (answer.hedgeCount > 0) factors.push({ label: '불확실 표시', delta: -Math.min(12, answer.hedgeCount * 4) });
for (const f of factors) score += f.delta;
score = Math.max(0, Math.min(100, Math.round(score)));   // 0~100 clamp

// 2) 균형 괄호 JSON 추출 — LLM 잡설 내성 (src/intelligence/criticAgent.ts)
let depth = 0, end = -1, inString = false, escaped = false;
for (let i = start; i < raw.length; i++) {
    const ch = raw[i];
    if (escaped) { escaped = false; continue; }
    if (ch === '\\') { escaped = true; continue; }
    if (ch === '"') { inString = !inString; continue; }
    if (inString) continue;
    if (ch === '{') depth++; else if (ch === '}' && --depth === 0) { end = i; break; }
}

// 3) 통찰→행동 — 약점 통계를 다음 턴 프롬프트로 (src/intelligence/correctionLoop.ts)
const significant = profile.tagCounts.filter(t => t.count >= 2).slice(0, 2); // 2회+만
// → "너는 최근 '사실오류' 정정을 N회 받았다. 수치·날짜는 근거 없으면 '확인 필요'로 표시하라."

검증 상태 및 신뢰도

  • 상태: draft
  • 검증 단계: applied
  • 출처 신뢰도: A
  • 신뢰 점수: 0.93
  • 중복 검사 결과: 신규 생성 (New discovery)

🔗 지식 그래프 (Knowledge Graph)

📚 출처 (Sources)

  • [S1] ConnectAI/src/intelligence/criticAgent.ts — 조건부 검수, 균형 JSON 파싱, 함수 주입
  • [S2] ConnectAI/src/intelligence/confidenceEngine.ts — 결정론적 확신도 산출
  • [S3] ConnectAI/src/intelligence/epistemicGuardBlock.ts — 3등급 인식론 가드
  • [S4] ConnectAI/src/intelligence/correctionLoop.ts — 정정 폐루프, 약점 프로필, 폭주 방지

📝 변경 이력 (Change history)

  • 2026-06-13: ConnectAI 코드 분석 기반 초안 생성.