KSCOLD LogoKSCOLD
Blog
Feed
Product
Admin Night
Vault
Guestbook
Info

Vault 목록

Retrieve-Generate 패턴

연결된 노트와 함께 읽기

Retrieve-Generate 패턴

2026년 7월 16일

Retrieve-Generate 패턴

정의

Retrieve-Generate 패턴은 답변을 만들기 전에 먼저 관련 정보를 가져오고, 그 정보를 바탕으로 LLM이 답변을 생성하는 구조이다.

Mermaid스크롤로 확대 · 드래그로 이동

이 패턴은 RAG(Retrieval-Augmented Generation)의 기본 실행 구조이다.

기본 예시

Python

retrieve는 질문에 답하기 위한 참고 문서를 준비한다.

Python

generate는 context와 question을 조합해 LLM에게 전달한다.

하드코딩 예제의 한계

아래처럼 작성된 retrieve는 실제 검색을 하지 않는다.

Python

문서를 직접 코드에 적어둔 하드코딩 예제이다.

실무에서는 이 부분이 다음으로 바뀐다.

Python

또는:

Python

LangGraph에서의 위치

Mermaid스크롤로 확대 · 드래그로 이동

retrieve와 generate는 둘 다 LangGraph Node이다.

Tool과의 차이

retrieve는 매번 실행되는 워크플로우 단계이다.

반면 검색 기능을 @tool로 만들면 LLM이 필요하다고 판단할 때만 검색한다.

Mermaid스크롤로 확대 · 드래그로 이동

관련:

  • Workflow Node vs Tool
  • Agentic RAG
  • LangGraph StateGraph

Synapse Map Insight

def retrieve(state: State): question = state["question"] docs = [ "생강차: 몸을 따뜻하게 하고 염증을 가라앉혀 목 통증 완화에 좋다.", "닭고기 수프: 수분과 단백질을 보충하고 코막힘을 풀어주는 데 도움이 된다.", ] return {"context": docs}
def generate(state: State): context = "\n".join(state["context"]) prompt = f"""다음 문맥을 참고해 질문에 답하세요. 문맥: {context} 질문: {state["question"]} 답변:""" response = llm.invoke(prompt) return {"answer": response.content}
docs = [...]
docs = vector_db.similarity_search(question)
docs = search_api.invoke(question)