본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 10. 08:35

Advanced RAG 시스템 구축 예제: LangGraph를 활용한 문서 질의응답 웹 애플리케이션

요약

LangGraph, Streamlit, ChromaDB를 활용하여 문서 질의응답이 가능한 고급 RAG 시스템 구축 방법을 소개합니다. 문서 내 답변이 없을 경우 온라인 검색으로 자동 전환되는 워크플로우와 상태 관리 기능을 포함합니다.

핵심 포인트

  • LangGraph를 통한 RAG 파이프라인 오케스트레이션 및 상태 관리
  • 문서 내 답변 부재 시 온라인 검색으로 전환되는 조건부 로직 구현
  • LangSmith 연동을 통한 디버깅 및 시스템 투명성 확보
  • 문서 관련성 및 답변 근거에 대한 상세 평가 지표 제공

이것은 문서를 업로드하고 그 문서에 대해 질문할 수 있게 해주는 웹 애플리케이션입니다. LangGraph, Streamlit, ChromaDB를 사용하여 구축되었습니다. 만약 귀하의 문서에 답변이 포함되어 있지 않다면, 자동으로 온라인을 검색하여 도움을 줍니다.

이 프로젝트는 LangGraph를 사용하여 RAG(Retrieval-Augmented Generation) 시스템을 구축하는 방법을 시연합니다. LangGraph는 문서 처리부터 답변 생성까지 RAG 파이프라인의 여러 단계를 내장된 오류 처리 및 상태 관리와 함께 오케스트레이션(orchestration)할 수 있도록 도와줍니다.

LangGraph가 RAG 시스템과 어떻게 작동하는지 이해하고 싶다면, 이 구현체는 적절한 워크플로우 오케스트레이션을 통해 문서 질의응답 애플리케이션을 구축하기 위한 실질적인 패턴을 보여줍니다.

이 애플리케이션을 사용할 때 발생하는 과정은 실제로 매우 간단합니다:

이 다이어그램은 모든 것이 백그라운드에서 어떻게 함께 작동하는지 보여줍니다.

다양한 유형의 파일 업로드: PDF, Word 문서, Excel 파일 또는 텍스트 파일을 드래그 앤 드롭하기만 하면 됩니다. 앱이 어떤 유형의 파일인지 파악하고 내용을 자동으로 읽습니다.

  • 모든 내용이 검색 가능한 형식으로 변환되어 저장되므로 나중에 질문할 수 있습니다.

  • 여러 파일 유형과 작동하는 간단한 드래그 앤 드롭 파일 업로드

질문하고 답변 받기: 업로드한 문서에 대해 어떤 질문이든 입력하세요.

  • 애플리케이션은 답변을 파일의 어느 위치에서 찾았는지 정확하게 알려줍니다.
  • 문서에서 찾을 수 없나요? 문제없습니다. 온라인으로 검색해 줄 것입니다.
  • 답변이 귀하의 파일에서 왔는지 아니면 인터넷에서 왔는지를 항상 알게 될 것입니다.

질문하고 답변 받기

평가 결과 보기 (View Evaluation Results):- 답변이 어떻게 생성되었는지에 대한 상세 시스템 정보를 확인할 수 있습니다.

  • 문서 관련성, 질문 일치도, 답변 근거(grounding)에 대한 평가 점수를 검토할 수 있습니다.
  • 어떤 문서가 사용되었고 그 관련성 점수가 어땠는지 이해할 수 있습니다.
  • 각 평가의 신뢰 수준과 추론 과정을 볼 수 있습니다.
  • 온라인 검색이 사용되었는지 아니면 답변이 귀하의 문서에서 왔는지를 확인할 수 있습니다.

종합적인 평가 지표와 시스템 투명성

스마트 답변 생성 (Smart Answer Generation):- LangGraph를 사용하여 답변이 관련성이 있고 정확하도록 만듭니다.

  • 무언가 잘못되었을 때 포착하는 내장 검사 기능이 있습니다.

  • 필요에 따라 다른 소스로 폴백(fallback)합니다.

  • 문서 관련성을 평가하여 더 나은 답변을 얻도록 합니다.

내부 작동 방식 보기 (See What's Happening Behind the Scenes):- LangSmith와 연결되어 어떻게 작동하는지 볼 수 있습니다.

  • 디버깅이나 단순히 무슨 일이 일어나고 있는지 이해하는 데 좋습니다.

선택 사항: 질문이 정확히 어떻게 처리되는지 확인

이 프로젝트는 LangGraph를 사용하여 RAG(검색 증강 생성)를 실용적인 방식으로 구현하는 방법을 보여줍니다. LangGraph가 문서 검색, 관련성 확인, 답변 생성과 같은 다양한 단계를 관리하며 워크플로우 오케스트레이션(workflow orchestration)을 처리합니다.

상태 관리 (State Management): LangGraph는 애플리케이션이 여러 처리 단계를 거치면서 상태를 관리합니다.
조건부 로직 (Conditional Logic): 발견한 내용에 따라 문서를 검색할지 아니면 온라인으로 갈지 워크플로우가 결정할 수 있습니다.
오류 처리 (Error Handling): 실패를 처리하고 대안적인 접근 방식을 시도하는 내장 메커니즘이 있습니다.
확장성 (Extensibility): 필요한 경우 새로운 단계를 추가하거나 워크플로우를 수정하기 쉽습니다.

  • 답변 생성 전 문서 평가
  • 다양한 검색 방법 간의 조건부 라우팅(Conditional routing)
  • 다단계 검증 및 품질 확인
  • 적절한 오류 복구와 함께하는 상태 전환

LangGraph RAG 구현을 배우고 싶다면, 이 코드베이스는 실제 세계 패턴을 적용한 완전한 작동 예제를 제공합니다.

다음 유형의 파일을 업로드할 수 있습니다:

텍스트 파일 (Text Files): .txt

PDF 문서 (PDF Documents): .pdf

Microsoft Word: .docx

Excel 파일 (Excel Files): .csv

,.xlsx

이 애플리케이션은 몇 가지 간단한 단계로 작동하지만, 그 뒤에서는 복잡한 처리가 이루어집니다:

  • 문서를 업로드할 때: 파일을 업로드합니다 (PDF, Word 문서, Excel 또는 텍스트 파일)

  • 앱이 내용을 읽고 더 작은 청크(chunk)로 나눕니다.

  • 이 청크들은 특별한 검색 가능한 형식으로 변환됩니다.

  • 모든 것이 ChromaDB라는 데이터베이스에 저장되어 빠르게 정보를 찾을 수 있게 합니다.

  • 질문을 할 때: 텍스트 상자에 질문을 입력합니다.

  • 앱이 질문의 의미가 통하는지 확인합니다.

  • 업로드된 문서를 검색하여 관련 정보를 찾습니다.

  • 답변이 좋을지 확실히 하기 위해 여러 검사를 수행합니다.

  • 답변 받기: 애플리케이션은 문서에서 찾은 내용을 살펴봅니다.

  • 관련 정보가 있다면, 그 내용을 기반으로 답변을 작성합니다.

  • 귀하의 문서에 필요한 내용이 없다면, 대신 온라인을 검색합니다.

  • 답변이 조작된 것이 아닌지 확인하기 위해 품질 검사를 수행합니다.

  • 모든 것이 제대로 작동하는지 보장: 애플리케이션에는 문제를 포착하기 위한 여러 체크포인트가 있습니다.

  • 답변이 부정확하거나 조작되었을 수 있는 경우를 식별할 수 있습니다.

  • 한 방법이 작동하지 않으면, 다른 접근 방식을 시도합니다.

  • 귀하의 답변이 어디에서 유래했는지 항상 알 수 있습니다.

  • 평가 및 투명성: 답변을 생성한 후, 시스템은 상세한 평가 지표를 제공합니다.

  • 문서 관련성 점수와 어떤 문서가 가장 도움이 되었는지를 보여줍니다.

  • 질문-답변 일치 품질과 완성도 등급을 표시합니다.

  • 각 평가에 대한 신뢰 수준(confidence level)과 추론 과정을 제공합니다.

  • 온라인 검색이 사용되었는지 또는 답변이 귀하의 문서에서 왔는지를 나타냅니다.

  • 모든 평가 데이터는 완전한 투명성을 위해 읽기 쉬운 표로 제시됩니다.

  • 작동 상황 보기(선택 사항): LangSmith를 설정하면, 앱이 정확히 무엇을 하고 있는지 볼 수 있습니다.

  • 프로세스를 이해하거나 문제를 해결하는 데 유용합니다.

  • 타이밍 및 성능 정보를 보여줍니다.

워크플로우는 전체 RAG 파이프라인을 관리하기 위해 LangGraph를 사용합니다:

상태 관리 (State Management): 모든 데이터는 질문(questions), 문서(documents), 평가 결과(evaluation results)를 추적하는 정의된 GraphState를 통해 흐릅니다.조건부 라우팅 (Conditional Routing): 시스템은 발견한 내용에 따라 문서 검색을 사용할지 온라인 검색을 사용할지 결정합니다.오류 복구 (Error Recovery): 문서 검색이 실패하면, 워크플로우는 자동으로 온라인 검색을 시도합니다.다단계 검증 (Multi-Step Validation): 각 단계에는 다음 단계로 넘어가기 전에 품질 검사가 포함됩니다.확장 가능한 설계 (Extensible Design): 새로운 평가 단계를 추가하거나 워크플로우 로직을 수정하기 쉽습니다. 이 LangGraph RAG 구현은 더 복잡한 문서 처리 시스템을 구축하기 위한 좋은 기반을 제공합니다.

시작하기 전에 다음 항목들이 준비되었는지 확인하세요:

Python 3.11 이상: [여기에서 받기]
Git: [여기서 다운로드]
OpenAI API Key: LLM(대규모 언어 모델) 작동에 필요합니다.
Tavily API Key: 온라인 검색용입니다 (선택 사항이지만 매우 유용합니다).
LangSmith API Key: 워크플로우 상세 정보를 보고 싶을 때만 사용합니다 (선택 사항)

git clone https://github.com/chitralputhran/Advanced-RAG-LangGraph.git
cd Advanced-RAG-LangGraph

이렇게 하면 모든 것이 체계적으로 정리되고 다른 Python 프로젝트에 영향을 주지 않습니다.

Mac 또는 Linux를 사용하는 경우:

python3 -m venv rag_env
source rag_env/bin/activate

Windows를 사용하는 경우:

python -m venv rag_env
rag_env\Scripts\activate

이 명령은 필요한 모든 패키지를 설치합니다:

pip install --upgrade pip
pip install -r requirements.txt

메인 폴더에 .env 파일을 생성하고 API 키를 추가하세요:

OPENAI_API_KEY=your_openai_api_key_here
TAVILY_API_KEY=your_tavily_api_key_here
LANGCHAIN_API_KEY=your_langsmith_api_key_here
...

streamlit run app.py

브라우저가 자동으로 http://localhost:8501에서 열립니다.

파일 업로드: 파일 업로더를 클릭하고 PDF, Word 문서, Excel 파일 또는 텍스트 파일을 선택하세요.
잠시 기다리기: 앱이 문서를 읽고 질문에 대비할 수 있도록 준비합니다.
질문하기: 질문을 입력하고


앱 시작하기: streamlit run app.py

그런 다음 브라우저에서

http://localhost:8501로 이동하세요.

  • 파일 업로드하기:
    • 페이지에서 파일 업로더를 찾으세요.
    • 파일을 선택하세요 (PDF, Word 문서, Excel 파일 또는 텍스트 파일).
    • 작은 진행 표시줄이 끝날 때까지 기다리세요.


질문하기:

  • 텍스트 상자에 질문을 입력하세요.
  • “Ask”를 클릭하거나 Enter 키를 누르세요.
  • 답변을 확인하세요.

애플리케이션이 시작되지 않을 때

  • 모든 것이 설치되었는지 확인하세요:
    pip install -r requirements.txt

  • Python 버전을 확인하세요:
    python --version
    (3.11 이상이어야 함) - 가상 환경이 활성화되어 있는지 확인하세요.

API 키 문제

  • .env 파일에 올바른 API 키가 포함되어 있는지 다시 확인하세요.
  • OpenAI 계정에 충분한 크레딧이 있는지 확인하세요.
  • Tavily API 키가 작동하는지 확인하세요 (온라인 검색을 사용하는 경우).

파일 업로드가 안 될 때

  • 파일 유형이 지원되는지 확인하세요 (PDF, Word, Excel 또는 텍스트).
  • 대용량 파일은 시간이 더 걸립니다. 인내심을 가지세요!

느리게 실행될 때

  • 대용량 문서는 느릴 수 있습니다. 이는 정상입니다.

코드 구조는 다음과 같습니다:

Advanced-RAG-LangGraph/
├── app.py # 메인 앱 파일
├── config.py # 모든 설정
...

.env

이 파일은 반드시 필요합니다

OPENAI_API_KEY=your_openai_api_key_here

이 파일도 매우 유용합니다

TAVILY_API_KEY=your_tavily_api_key_here

백그라운드에서 무슨 일이 일어나는지 보고 싶을 때만

LANGCHAIN_API_KEY=your_langsmith_api_key_here
LANGCHAIN_TRACING_V2=true
LANGCHAIN_PROJECT=Advanced-RAG-LangGraph


이 프로젝트는 MIT 라이선스를 사용합니다. 자세한 내용은 LICENSE 파일을 확인하세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0