본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 15. 09:41

NirDiamant/Controllable-RAG-Agent

요약

복잡한 질문 처리를 위해 설계된 정교한 결정론적 그래프 기반의 고급 RAG 솔루션입니다. 자율 에이전트가 사용자의 데이터로부터 환각 없이 정확한 답변을 생성할 수 있도록 다단계 추론과 적응형 계획 기능을 제공합니다.

핵심 포인트

  • 결정론적 그래프를 통한 제어 가능한 자율 에이전트 구현
  • 다단계 추론 및 적응형 계획을 통한 복잡한 질의 해결
  • Ragas 지표를 활용한 체계적인 성능 평가 지원
  • PDF 로딩부터 벡터 스토어 인코딩까지의 전체 파이프라인 제공

단순한 의미론적 유사성 (semantic similarity) 기반 검색으로는 해결할 수 없는 복잡한 질문을 처리하기 위해 설계된 고급 검색 증강 생성 (Retrieval-Augmented Generation, RAG) 솔루션입니다. 이 프로젝트는 사용자의 데이터로부터 사소하지 않은 질문에 답할 수 있는, 매우 제어 가능한 자율 에이전트 (autonomous agent)의 "두뇌" 역할을 하는 정교한 결정론적 그래프 (deterministic graph)를 보여줍니다.

전체 참조 자료: 어떤 노트북보다 더 깊이 있게 다루는 400페이지 분량의 시각적 가이드입니다. 모든 기술 뒤에 숨겨진 직관 (intuition), 각 기술이 언제 승리하는지(그리고 언제 조용히 실패하는지)에 대한 나란히 비교 (side-by-side comparisons), 그리고 까다로운 부분을 마침내 이해하게 해주는 **도표 (diagrams)**를 제공합니다.

1,500부 이상 판매 · 출시 당시 아마존 생성형 AI (Generative AI) 부문 1위 달성 · ⭐ 별점 4.6점

📖 PDF + EPUB · GitHub 커뮤니티 가격: 코드 RAGKING 사용 시 33% 할인

🚀 저의 Agents Towards Production 저장소를 통해 수준을 높여보세요. 이 저장소는 프로덕션급 생성형 AI (GenAI) 에이전트 구축 생애주기의 모든 도구와 단계를 다루는 수평적이고 코드 우선적인 (code-first) 튜토리얼을 제공하며, 검증된 패턴과 실제 출시를 위한 재사용 가능한 청사진을 통해 아이디어 단계부터 확장 단계까지 안내합니다. 에이전트를 실제 프로덕션에 배포하는 것에 진심이라면 가장 스마트한 시작점이 될 것입니다.

📚 이 고급 에이전트 구현을 보완하기 위해 다양한 다른 RAG 기술을 담은 저의 RAG 기술 종합 가이드를 살펴보세요.

🤖 이 고급 에이전트 구현을 보완하기 위해 다른 다양한 AI 에이전트 (AI Agents) 구현 및 튜토리얼이 담긴 저의 GenAI 에이전트 저장소를 살펴보세요.

🚀최첨단 업데이트 |
💡전문가 통찰력 |
🎯상위 0.1% 콘텐츠 |

정교한 결정론적 그래프 (Sophisticated Deterministic Graph): 에이전트의 "두뇌" 역할을 하며 복잡한 추론을 가능하게 합니다.
제어 가능한 자율 에이전트 (Controllable Autonomous Agent): 커스텀 데이터셋으로부터 까다로운 질문에 답변할 수 있습니다.
환각 방지 (Hallucination Prevention): 답변이 오직 제공된 데이터에만 기반하도록 보장하여 AI 환각 (Hallucination)을 방지합니다.
다단계 추론 (Multi-step Reasoning): 복잡한 질의를 관리 가능한 하위 작업으로 분해합니다.
적응형 계획 (Adaptive Planning): 새로운 정보에 따라 계획을 지속적으로 업데이트합니다.
성능 평가 (Performance Evaluation): 종합적인 품질 평가를 위해 Ragas 지표를 활용합니다.

PDF 로딩 및 처리 (PDF Loading and Processing): PDF 문서를 로드하고 장(chapter) 단위로 분할합니다.
텍스트 전처리 (Text Preprocessing): 더 나은 요약 및 인코딩을 위해 텍스트를 정제하고 전처리합니다.
요약 (Summarization): 대규모 언어 모델 (LLM)을 사용하여 각 장에 대한 광범위한 요약을 생성합니다.
도서 인용 데이터베이스 생성 (Book Quotes Database Creation): 책의 인용구에 접근해야 하는 특정 질문들을 위한 데이터베이스를 생성합니다.
벡터 스토어 인코딩 (Vector Store Encoding): 효율적인 검색을 위해 도서 내용과 장 요약을 벡터 스토어 (Vector Store)에 인코딩합니다.
질문 처리 (Question Processing):

  • 개체명 (Named Entities)을 변수로 대체하여 질문을 익명화합니다.
  • 익명화된 질문에 답변하기 위한 상위 수준의 계획을 생성합니다.
  • 계획을 역익명화하고 이를 검색 가능하거나 답변 가능한 작업으로 분해합니다.

작업 실행 (Task Execution):

  • 각 작업에 대해 정보를 검색할지, 문맥에 기반하여 답변할지 결정합니다.
  • 검색하는 경우, 벡터 스토어에서 관련 정보를 가져와 추출(distill)합니다.
  • 답변하는 경우, 사고 사슬 (Chain-of-thought) 추론을 사용하여 응답을 생성합니다.

검증 및 재계획 (Verification and Re-planning):

  • 생성된 콘텐츠가 원래의 문맥에 근거(grounded)하는지 검증합니다.
  • 새로운 정보에 기반하여 남은 단계들을 재계획합니다.

최종 답변 생성 (Final Answer Generation): 축적된 문맥과 사고 사슬 (Chain-of-thought) 추론을 사용하여 최종 답변을 생성합니다.

이 솔루션은 Ragas 지표를 사용하여 평가됩니다:

  • 답변 정확도 (Answer Correctness)
  • 충실도 (Faithfulness)
  • 답변 관련성 (Answer Relevancy)
  • 문맥 재현율 (Context Recall)
  • 답변 유사도 (Answer Similarity)

해당 알고리즘은 해리 포터(Harry Potter) 첫 번째 권을 사용하여 테스트되었으며, 이를 통해 모델이 검색된 정보(retrieved information)에 의존하는지 아니면 사전 학습된 지식(pre-trained knowledge)에 의존하는지를 모니터링할 수 있습니다. 이러한 선택을 통해 모델이 사전 학습된 지식을 사용하는지, 아니면 벡터 저장소(vector stores)에서 검색된 정보에 엄격하게 의존하는지를 검증할 수 있습니다.

Q: 주인공은 어떻게 악당의 조수를 물리쳤습니까?

이 질문을 해결하기 위해서는 다음과 같은 단계가 필요합니다:

  • 줄거리의 주인공을 식별합니다.
  • 악당을 식별합니다.
  • 악당의 조수를 식별합니다.
  • 주인공과 악당 사이의 대립이나 상호작용을 검색합니다.
  • 주인공이 조수를 물리치게 된 이유를 추론합니다.

이러한 복잡한 쿼리(queries)를 분해하고 해결하는 에이전트의 능력은 정교한 추론(reasoning) 능력을 입증합니다.

  • Python 3.8+

  • 선택한 LLM 제공업체의 API 키

  • 저장소(repository)를 클론합니다:
    git clone https://github.com/NirDiamant/Controllable-RAG-Agent.git cd Controllable-RAG-Agent

  • 환경 변수를 설정합니다:
    루트 디렉토리에 API 키가 포함된 .env 파일을 생성합니다. 참고를 위해 .env.example 파일을 확인할 수 있습니다: OPENAI_API_KEY=, GROQ_API_KEY=

  • Docker 이미지를 빌드하려면 다음 명령어를 실행합니다:
    docker-compose up --build

  • 필요한 패키지를 설치합니다:
    pip install -r requirements.txt

  • 단계별 튜토리얼을 살펴봅니다:
    sophisticated_rag_agent_harry_potter.ipynb

  • 실시간 에이전트 시각화 실행 (Docker 미사용):
    streamlit run simulate_agent.py

  • 실시간 에이전트 시각화 실행 (Docker 사용):
    브라우저를 열고 다음 주소로 이동합니다:
    http://localhost:8501/

  • LangChain

  • FAISS Vector Store

  • Streamlit (시각화용)

  • Ragas (평가용)

  • 다양한 LLM과의 유연한 통합 (예: OpenAI GPT 모델, Groq 또는 사용자가 선택한 기타 모델)

  • 도서 콘텐츠를 청크(chunks) 단위로 인코딩하고, LLM에 의해 생성된 장별 요약(chapter summaries) 및 도서 내 인용구(quotes)를 포함합니다.

  • 질문을 익명화하여, 관련된 어떤 LLM의 편향이나 사전 학습된 지식(pre-trained knowledge) 없이 일반적인 계획을 수립합니다.

  • 계획된 각 태스크를 완전한 제어가 가능한 커스텀 함수(custom functions)에 의해 실행되도록 세분화합니다.

  • 검색된 콘텐츠를 증류(Distilling)하여 더 나은 정확한 LLM 생성을 유도하고, 환각(hallucinations)을 최소화합니다.

  • 긍정적 예시와 부정적 예시를 모두 포함하는 사고 사슬 (Chain of Thought, CoT)을 사용하여 문맥에 기반해 질문에 답함으로써, 단순한 응답이 아닌 논리적으로 추론된 답변에 도달합니다.

  • "Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection" (https://arxiv.org/abs/2310.11511)에서 제안된 바와 같이, 콘텐츠 검증 및 환각 없는 검증을 수행합니다.

  • 복잡한 질문을 해결하기 위해 LLM이 작성한 지속적으로 업데이트되는 계획을 활용합니다. 일부 아이디어는 "Plan-and-Solve Prompting" (https://arxiv.org/abs/2305.04091) 및 "babyagi" 프로젝트 (https://github.com/yoheinakajima/babyagi)에서 파생되었습니다.

  • 고품질의 답변을 보장하기 위해 답변의 정확성(answer correctness), 충실도(faithfulness), 관련성(relevancy), 재현율(recall) 및 유사도(similarity)와 같은 Ragas 지표를 사용하여 모델의 성능을 평가합니다.

기여를 환영합니다! 제안 사항이나 개선 사항이 있다면 언제든지 풀 리퀘스트(pull request)를 제출하거나 이슈(issue)를 생성해 주세요.

가치 있는 조언과 아이디어를 주신 Elad Levi에게 특별히 감사드립니다.

이 프로젝트는 Apache-2.0 라이선스 하에 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

⭐️ 이 저장소가 도움이 되었다면, 별(star)을 눌러주세요!

키워드: RAG, 검색 증강 생성 (Retrieval-Augmented Generation), 에이전트 (Agent), Langgraph, NLP, AI, 머신러닝 (Machine Learning), 정보 검색 (Information Retrieval), 자연어 처리 (Natural Language Processing), LLM, 임베딩 (Embeddings), 시맨틱 검색 (Semantic Search)

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0