0Pricing
Learn AI with Python · 강의

처음부터 끝까지 RAG 질의응답 시스템 구축

RetrievalQA 체인, 사용자 지정 프롬프트, 출처 표시, RAGAS를 활용한 RAG 평가를 다룹니다.

처음부터 끝까지 RAG 질의응답 시스템 구축은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

RAG란 무엇인가요?

검색 증강 생성은 LLM이 사용자의 자체 데이터를 근거로 답변하도록 합니다. 질의 시 벡터 저장소에서 관련 청크를 검색해 프롬프트에 삽입하므로, 모델이 추측하는 대신 사실에 근거해 답변합니다.

RAG 흐름

모든 RAG 질의는 네 단계로 진행됩니다. (1) 질문을 임베딩하고, (2) 유사한 청크를 검색하고, (3) 이를 컨텍스트로 프롬프트에 삽입하고, (4) LLM이 해당 컨텍스트에 근거한 답변을 생성합니다.

저장소를 검색기로 변환하기

as_retriever로 벡터 저장소를 검색기로 변환합니다. search_kwargs 딕셔너리가 검색 방식을 제어하며, 그중 가장 중요한 설정은 질문마다 가져올 청크 수인 k입니다.

retriever = db.as_retriever(
    search_kwargs={"k": 4}
)

검색 인수 조정

search_kwargs로 점수 임계값이나 MMR 옵션도 설정할 수 있습니다. k=4부터 시작하고, 답변에서 컨텍스트가 빠지면 값을 높이며, 토큰 비용과 불필요한 내용을 줄이려면 낮춥니다.

retriever = db.as_retriever(
    search_type="similarity_score_threshold",
    search_kwargs={"k": 6, "score_threshold": 0.5}
)

RetrievalQA 체인

RetrievalQA 체인은 검색과 생성을 하나로 연결합니다. from_chain_type으로 만들고 llm과 retriever를 전달합니다. 이제 한 번의 호출로 문서에 근거한 질문 답변을 얻을 수 있습니다.

from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI

qa = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4o"),
    retriever=retriever
)

chain_type: 컨텍스트를 결합하는 방식

chain_type은 검색된 청크를 프롬프트에 넣는 방식을 제어합니다. "stuff"(기본값)는 모든 청크를 하나의 프롬프트에 넣는 방식으로, 간단하고 청크가 컨텍스트 창에 들어갈 때 가장 좋습니다. "map_reduce"와 같은 다른 방식은 크기가 큰 청크를 많이 처리합니다.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever
)

질문하기

query 키 아래에 질문을 넣고 invoke로 체인을 실행합니다. 체인이 검색을 수행하고 프롬프트를 구성한 다음 근거가 포함된 답변을 반환합니다.

response = qa.invoke({"query": "What is the refund window?"})
print(response["result"])

출처 문서 반환하기

return_source_documents=True를 설정하면 답변에 사용된 청크를 받을 수 있습니다. 이를 통해 인용을 표시하고 사용자가 각 사실의 출처를 확인할 수 있으므로 신뢰성 확보에 필수적입니다.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=retriever,
    return_source_documents=True
)
resp = qa.invoke({"query": "Refund window?"})
for d in resp["source_documents"]:
    print(d.metadata)

RAG를 평가하는 이유

RAG는 두 가지 방식으로 실패할 수 있습니다. 검색이 잘못된 청크를 가져오거나, 관련 청크가 충분해도 생성 과정에서 환각이 발생할 수 있습니다. 어느 부분을 수정해야 하는지 알려면 지표가 필요합니다. 답변을 눈대중으로 확인하는 방식은 규모를 키울 수 없습니다.

RAGAS 지표

RAGAS는 RAG 품질을 점수로 평가하는 라이브러리입니다. 핵심 지표로는 faithfulness(답변이 컨텍스트에 의해 뒷받침되는지), answer_relevancy(답변이 질문에 답하는지), context_precision(검색된 청크가 관련성이 있는지)가 있습니다.

pip install ragas

from ragas.metrics import faithfulness, answer_relevancy, context_precision

평가 실행하기

질문, 생성된 답변, 검색된 컨텍스트, 정답 답변으로 데이터 세트를 만든 다음 evaluate를 호출합니다. 점수를 보면 청크 분할 방식, 검색 k, 프롬프트 중 무엇을 개선해야 하는지 알 수 있습니다.

from ragas import evaluate

result = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevancy, context_precision]
)
print(result)

빠른 확인

RAG에 대한 이해도를 확인해 보세요.

복습: 전체 RAG

전체 RAG 처리 과정을 구축했습니다. search_kwargs를 사용하는 db.as_retriever, llm과 검색기를 사용하는 RetrievalQA.from_chain_type 체인, 인용을 위한 return_source_documents=True를 구성했습니다. 또한 충실도와 컨텍스트 정확도 같은 RAGAS 지표로 품질을 측정하는 방법도 배웠습니다.

자주 묻는 질문

“처음부터 끝까지 RAG 질의응답 시스템 구축” 강의는 무료인가요?

네 — “처음부터 끝까지 RAG 질의응답 시스템 구축” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

“처음부터 끝까지 RAG 질의응답 시스템 구축”에서 뭘 배우나요?

RetrievalQA 체인, 사용자 지정 프롬프트, 출처 표시, RAGAS를 활용한 RAG 평가를 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“처음부터 끝까지 RAG 질의응답 시스템 구축” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. LangChain 아키텍처와 LCEL
  2. 문서 불러오기, 분할, 임베딩
  3. 벡터 저장소: Chroma와 FAISS
  4. 처음부터 끝까지 RAG 질의응답 시스템 구축
← Learn AI with Python(으)로 돌아가기