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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기