RAG

패스트캠퍼스 환급챌린지 35일차 : 테디노트의 RAG 비법노트 강의 후기

Sssadie 2025. 12. 16. 18:04
반응형

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

 

LCEL 고급 문법

  • LCEL은 Runnable 단위들을 파이프라인처럼 연결해서 체인을 구성하는 문법.
    Runnable 단위들을 파이프라인처럼 연결해서 체인을 구성하는 문법
  • 모든 구성요소는 Runnable 인터페이스를 따름
    → 입력을 받아 출력으로 변환하는 블록

RunnablePassthrough : 데이터 전달

run()메서드를 통해 입력된 데이터를 그대로 반환 → 데이터를 변경하지 않고 파이프라인의 다음 단계로 전달하는 데 사용

 

RunnablePassthrough는 다음과 같은 시나리오에서 유용함

  • 데이터를 변환하거나 수정할 필요가 없는 경우
  • 파이프라인의 특정 단계를 건너뛰어야 하는 경우
  • 디버깅 또는 테스트 목적으로 데이터 흐름을 모니터링해야 하는 경우

RunnablePassthrough의 핵심 역할

  • 변환이 아닌 전달
  • 입력 데이터를 
    → 그대로 다음 단계로 넘기거나
    → 다른 Runnable과 결합해서 새로운 구조로 전달

⇒ 이 값은 가공하지 말고 그대로 써야할 때 쓰는 도구

 

데이터 전달하기

- RunnablePassthrough는 입력을 변경하지 않고 그대로 전달하거나 추가 키를 더하여 전달할 수 있음.

- 일반적으로 RunnableParallel과 함께 사용되어 데이터를 맵의 새로운 키에 할당하는 데 활용.

- RunnablePassthrough()를 단독으로 호출하면 단순히 입력을 받아 그대로 전달함.

 

RunnableParallel과 함께 쓰이는 이유

  • LCEL에서는 종종 하나의 입력을 여러 경로로 나누어 처리해야 하는데, 이 때, 어떤 값은 그대로 전달, 어떤 값은 변환하는 역할 분담을 깔끔하게 해주는 것이 RunnablePassthrough

RAG에서 자주 쓰이는 패턴

{
  "context": retriever,
  "question": RunnablePassthrough()
}
  • 질문은 그대로 유지
  • context만 검색 결과로 치환

⇒ 이후 prompt 단계에서 두 값이 함께 사용됨.


오늘 배운 내용은 LCEL에서 고급 문법 중 하나인 RunnablePassthrough에 대해 학습했어요. LCEL은 체인이나 에이전트를 선언적으로 구성할 수 있는 문법으로, 여러 Runnable 컴포넌트를 파이프라인처럼 연결해 하나의 흐름을 만듭니다. 이때 각 Runnable은 입력을 받아 출력으로 전달하는 역할을 수행하죠.

RunnablePassthrough는 이름 그대로 입력된 데이터를 변경하지 않고 그대로 다음 단계로 전달하는 Runnable입니다. 처음에는 아무 일도 하지 않는 객체처럼 보이지만, 실제로는 LCEL 파이프라인에서 가장 중요한 역할을 합니다. 가장 유용하게 쓰이는 대표적인 상황은, 데이터를 굳이 변환할 필요가 없을 때 입니다. 예를 들어 사용자의 질문은 그대로 유지한 채, 검색된 문서(context)만을 가공해 프롬프트에 전달하고 싶은 경우가 많은데, 이때 질문을 RunnablePassthrough로 연결하면, 질문은 변하지 않은 상태로 다음 단계에 안전하게 전달됩니다. RunnablePassthrough는 RunnableParallel과 함께 사용될 때 진가를 발휘하는데, 하나의 입력을 여러 키로 나누어 맵 구조로 전달할 때, 어떤 값은 그대로 유지하고 어떤 값은 변환해야하는 경우에 사용합니다. 이때 불필요한 래핑이나 추가 코드 없이 데이터 흐름을 명확하게 표현할 수 있습니다.

RAG 체인에서 자주 등장하는 패턴도 바로 이 구조인데, 검색 결과는 retriever를 통해 context로 변환하고, 질문은 RunnablePassthrough를 통해 그대로 전달한 뒤, prompt 단계에서 두 값을 함께 사용합니다. 이 구조 덕분에 데이터 흐름이 직관적으로 드러나고, 디버깅이나 테스트도 훨씬 수월해집니다.

LCEL에서 중요한 것은 얼마나 복잡한 처리를 하느냐가 아니라, 데이터가 어디서 어떻게 흘러가는지를 명확하게 표현하는 것이라는 점을 깨달았습니다. RunnablePassthrough는 아무것도 하지 않는 것처럼 보이지만, LCEL 파이프라인을 깔끔하고 읽기 쉽게 만들어주는 핵심 도구라는 점을 잊지 말아야겠어요. 이 내용을 몰랐다면 RunnablePassthrough를 오해할 뻔 했네요ㅎㅎ

 

 

 

 

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr

 

 

반응형