*ChatGPT 결과 : 랭체인과 RAG 구성 관련하여 궁금한 내용을 질문하고, 응답 결과를 정리하여 포스팅함. (250528)
RAG는 단순한 질의응답을 넘어서 ‘검색 + 생성’을 결합한 강력한 LLM 활용 기법입니다.
이 글에서는 Python 기반의 LangChain을 이용해 가장 기본적인 RAG 파이프라인을 구성하고, 그 동작 원리를 구체적으로 설명합니다.
**RAG(Retrieval-Augmented Generation)**는 다음 두 단계를 결합한 방식입니다:
즉, LLM이 스스로 알고 있는 정보뿐 아니라 외부 문서 정보를 활용해서 더 정확한 답변을 할 수 있게 해줍니다.
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나 다른 LLMStrOutputParser: 출력 문자열 정리query = "노동법에 대해 설명해 주세요."
answer = rag_chain.invoke(query)
print(answer)
query가 retriever에 들어감많은 분들이 궁금해하는 부분입니다:
“LLM은 retriever가 가져온 문서만 바탕으로 답하는 걸까?”
정답은 “부분적으로 맞지만, 완전히는 아님” 입니다.
| 구분 | 설명 |
|---|---|
| ✅ retriever | 질문과 관련된 문서를 찾아서 context로 사용 |
| ✅ pretrained knowledge | LLM 자체가 사전에 학습한 지식도 함께 활용 |
즉, LLM은 context + 사전 지식을 조합하여 답변을 생성합니다.
retriever는 문서를 찾고, LLM은 그것을 기반으로 답변을 만듭니다.