RAG2026-5일25차시 · Generator Node 분리5 / 19← 이전목차다음 →MetaContents

25차시. Generator Node 분리

2. Generator Node의 4가지 설계 포인트

출처: 원본 PDF 25차시_GeneratorNode분리.pdf 5~6쪽 · 쪽 그림 5쪽 6쪽

2-1) ① 근거만 사용하게 강제

13차시에서 만든 프롬프트 v3의 규칙을 그대로 씁니다.
· 아래 [자료]에 있는 내용만 근거로 답하십시오
· 질문의 일부만 자료에 있다면 있는 부분만 답하십시오
· 추측하거나 일반 상식으로 보충하지 마십시오

2-2) ② 부족 신호를 남긴다

출력
NO_INFO = "자료에서 확인할 수 없습니다"

answer = _chain.invoke({...})

# LLM이 정해진 문구를 출력했는지 감지
insufficient = NO_INFO in answer

🚩 이 플래그가 왜 중요한가
26차시 Verifier가 이렇게 동작합니다.
if state["insufficient"]:
return {"grade": "retry"} # LLM 호출 없이 즉시 판정
근거 부족은 검증할 필요도 없이 재시도 대상입니다.
LLM 심판을 부르지 않으니 비용이 절약됩니다.
생성 노드가 미리 알려주면 뒤 단계가 편해집니다.

2-3) ③ 출처 인용을 기계 검증

Python
import re

nums = [int(n) for n in re.findall(r"\[(\d+)\]", answer)]
has_citation = bool(nums) and all(1 <= n <= len(docs) for n in nums)

⚠️ 두 가지를 함께 봅니다
① 인용 번호가 있는가
없으면 근거 추적이 불가능합니다
② 존재하는 번호인가
근거가 2개인데 [3]을 인용했다면
→ 명백한 환각 신호입니다
실제로 자주 발생합니다. 반드시 검사하세요.

2-4) ④ 프롬프트를 외부 파일로

출처: 원본 PDF 6쪽

prompts.py에 버전명을 붙여 보관합니다.
config.PROMPT_VER로 어느 것을 쓸지 정합니다.
→ 실험과 롤백이 자유로워집니다

← 이전 절25차시 · 1. 생성 모듈이 따로 있어야 하는 이유다음 절 →25차시 · 3. 실습 ① — Generator Node 완성