RAG2026-5일23차시 · Modular RAG 개념15 / 18← 이전목차다음 →MetaContents

23차시. Modular RAG 개념

퀴즈 1 — 모듈 계약 표를 딕셔너리로 만들기

모듈 계약 표를 딕셔너리로 만드세요. retriever는 documents를 쓰고 answer는 쓰지 않습니다.

빈칸 코드에서 시작합니다.

Python
def contracts():
    pass
결과 보기 (예시 풀이)
Python
# 모듈마다 State 에서 무엇을 읽고 무엇을 쓰는지 적은 '계약 표'입니다.
# 딕셔너리 안에 딕셔너리를 두어 모듈 이름 → {"reads": [...], "writes": [...]} 로 만듭니다.
def contracts():
    return {
        "retriever": {"reads": ["query", "top_k"],
                      "writes": ["documents", "scores", "retrieval_ok"]},
        "generator": {"reads": ["documents", "question"],
                      "writes": ["answer", "insufficient", "has_citation"]},
        "verifier":  {"reads": ["answer", "documents", "question"],
                      "writes": ["grade", "reason"]},
    }

table = contracts()

# 확인 1: 모듈마다 쓰는 키를 한 줄씩 보기
for name, c in table.items():
    print(name, "→ 쓰는 키:", c["writes"])

# 확인 2: retriever 가 answer 를 쓰지 않는지 (남의 키를 쓰지 않는다)
print("retriever 가 answer 를 쓰나?", "answer" in table["retriever"]["writes"])

# 확인 3: generator 가 documents 를 읽기만 하는지
print("generator 가 documents 를 쓰나?", "documents" in table["generator"]["writes"])

실행 결과

출력
retriever → 쓰는 키: ['documents', 'scores', 'retrieval_ok']
generator → 쓰는 키: ['answer', 'insufficient', 'has_citation']
verifier → 쓰는 키: ['grade', 'reason']
retriever 가 answer 를 쓰나? False
generator 가 documents 를 쓰나? False

채점 기준: retriever의 writes에 answer가 있으면 오답이다.

관련 교안: 23차시 「4. 모듈 간 계약 (인터페이스)」

← 이전 절23차시 · 실습 1 — Modular RAG 개념 실습 따라 하기다음 절 →23차시 · 퀴즈 2 — 답은 고치지 않고 판정만 돌려주는 Verifier