LangChain을 이용한 간단한 RAG(Retrieval-Augmented Generation) 파이프라인 구성 (250528)

WonTerry·2025년 5월 28일

LLM

목록 보기
2/40

*ChatGPT 결과 : 랭체인과 RAG 구성 관련하여 궁금한 내용을 질문하고, 응답 결과를 정리하여 포스팅함. (250528)

LangChain을 이용한 간단한 RAG(Retrieval-Augmented Generation) 파이프라인 구성

RAG는 단순한 질의응답을 넘어서 ‘검색 + 생성’을 결합한 강력한 LLM 활용 기법입니다.
이 글에서는 Python 기반의 LangChain을 이용해 가장 기본적인 RAG 파이프라인을 구성하고, 그 동작 원리를 구체적으로 설명합니다.


Contents

  1. RAG란 무엇인가?
  2. LangChain으로 RAG 구성하기
  3. 코드로 보는 전체 파이프라인
  4. LLM은 retriever 결과만 쓰는가?
  5. 마무리 정리

1. RAG란 무엇인가?

**RAG(Retrieval-Augmented Generation)**는 다음 두 단계를 결합한 방식입니다:

  • Retrieval (검색): 벡터 유사도 등을 이용해 질문과 관련된 문서를 찾아냄
  • Generation (생성): 해당 문서를 바탕으로 LLM이 자연스러운 답변을 생성

즉, LLM이 스스로 알고 있는 정보뿐 아니라 외부 문서 정보를 활용해서 더 정확한 답변을 할 수 있게 해줍니다.


2. LangChain으로 RAG 구성하기

LangChain은 이런 파이프라인을 구성할 때 매우 직관적이고 모듈화된 인터페이스를 제공합니다.

아래는 기본적인 RAG 구성 예시입니다:

from langchain.schema.runnable import RunnablePassthrough
from langchain.output_parsers import StrOutputParser

rag_chain = (
    {
        "context": retriever | format_docs,
        "question": RunnablePassthrough()
    }
    | prompt_template
    | model
    | StrOutputParser()
)

설명:

  • retriever: 질문과 유사한 문서를 벡터 기반으로 검색
  • format_docs: 검색된 문서를 문자열 형태로 정리
  • prompt_template: context와 질문을 넣을 템플릿
  • model: OpenAI나 다른 LLM
  • StrOutputParser: 출력 문자열 정리

3. 실행 예제: "노동법에 대해 설명해 주세요."

query = "노동법에 대해 설명해 주세요."
answer = rag_chain.invoke(query)
print(answer)
이 실행에서 일어나는 일은?
  1. query가 retriever에 들어감
  2. 유사 문서들이 context로 변환됨
  3. question + context가 prompt에 들어감
  4. LLM이 답변을 생성함

4. LLM은 retriever 결과만 쓰는가?

많은 분들이 궁금해하는 부분입니다:

“LLM은 retriever가 가져온 문서만 바탕으로 답하는 걸까?”

정답은 “부분적으로 맞지만, 완전히는 아님” 입니다.

구분설명
✅ retriever질문과 관련된 문서를 찾아서 context로 사용
✅ pretrained knowledgeLLM 자체가 사전에 학습한 지식도 함께 활용

예시:

  • retriever가 불완전한 문서를 제공하면,
    LLM은 자신의 사전 지식을 이용해 보완할 수 있습니다.
  • 반대로 retriever가 정확한 문서를 제공하면,
    LLM은 이를 바탕으로 정돈된 요약을 할 수 있습니다.

즉, LLM은 context + 사전 지식을 조합하여 답변을 생성합니다.


마무리 요약

  • LangChain은 RAG 파이프라인을 매우 간단하게 구성할 수 있게 도와줍니다.
  • retriever는 문서를 찾고, LLM은 그것을 기반으로 답변을 만듭니다.
  • 하지만 LLM은 retriever 내용만 사용하지 않고, 자신의 사전 지식도 활용합니다.
  • RAG는 특히 최신 정보나 사내 자료 기반의 Q\&A 시스템에서 매우 유용합니다.

다음에 추천할 주제

  • LangChain의 retriever 커스터마이징하기 (FAISS, Weaviate 등)
  • Prompt tuning으로 RAG 정확도 높이기
  • RAG에 Guardrails 추가하기 (예: 출처 표기, 토큰 길이 제약 등)
  • LangChain + Streamlit을 이용한 미니 Q\&A 웹앱 만들기
profile
Hello, I'm Terry! 👋 Enjoy every moment of your life! 🌱 My current interests are Signal processing, Machine learning, Python, Database, LLM & RAG, MCP & ADK, Multi-Agents, Physical AI, ROS2...

0개의 댓글