RAG2026-5일18차시 · State 이해6 / 19← 이전목차다음 →MetaContents

18차시. State 이해

3. State의 동작 규칙 4가지

출처: 원본 PDF 18차시_State이해.pdf 7~8쪽 · 쪽 그림 7쪽 8쪽

이 네 가지만 알면 State 관련 버그의 대부분이 사라집니다.

3-1) 규칙 ① — 하나의 딕셔너리다

State는 그래프 실행 내내 살아 있는 딕셔너리 하나입니다.
노드를 지날 때마다 내용이 채워집니다.
실행이 끝나면 최종 State가 결과로 나옵니다.

3-2) 규칙 ② — 바꾼 키만 반환한다

❌ 나쁜 예 — State 전체를 반환

출력
─────────────────────────────────
def retrieve(state):
    state["documents"] = search(state["query"])
    return state              # 전체를 돌려줌

→ 다른 키까지 덮어쓸 위험이 있습니다
→ 무엇을 바꿨는지 코드만 봐서는 모릅니다

✅ 좋은 예 — 바꾼 키만 반환

출력
─────────────────────────────────
def retrieve(state):
    docs = search(state["query"])
    return {"documents": docs}    # 이것만 돌려줌

→ 반환하지 않은 키는 이전 값이 그대로 유지됩니다
→ 이 노드가 무엇을 만드는지 한눈에 보입니다

🎯 "반환하지 않으면 유지된다"
이게 핵심입니다.
retrieve가 documents만 반환해도
question, query 같은 다른 값은 사라지지 않습니다.
LangGraph가 알아서 기존 State에 덮어씌워 줍니다.
그래서 노드는 자기 일만 신경 쓰면 됩니다.

3-3) 규칙 ③ — 기본은 덮어쓰기다

출처: 원본 PDF 8쪽

출력
노드 A가 반환 : {"answer": "첫 번째 답변"}
노드 B가 반환 : {"answer": "두 번째 답변"}

최종 State    : {"answer": "두 번째 답변"}
                 ↑ 앞의 값은 사라집니다

3-4) 규칙 ④ — 스키마로 미리 선언한다

출처: 원본 PDF 8쪽

TypedDict로 어떤 키가 있는지 먼저 선언합니다.
· 오타를 줄여줍니다 (documnets 같은 실수)
· 편집기가 자동완성을 도와줍니다
· 팀원이 State 구조를 바로 파악합니다

← 이전 절18차시 · 2. State — 하나의 공유 공책다음 절 →18차시 · 4. 실습 ① — State 정의하고 흐름 보기