NirDiamant/Controllable-RAG-Agent

This repository provides an advanced Retrieval-Augmented Generation (RAG) solution for complex question answering. It uses sophisticated graph based algorithm to handle the tasks.

Controllable-RAG-Agent

단순 유사성 검색으로 처리할 수 없는 복잡하고 사소하지 않은 질문을 위해 설계된 검색 증강 생성(RAG) 시스템. 가장 유사한 텍스트 조각을 가져와 답변을 생성하는 대신, 이 프로젝트는 에이전트의 '두뇌' 역할을 하는 결정적 결정 그래프를 구축합니다.

핵심 아이디어

전통적인 RAG는 유사 텍스트 찾기 → 답변 생성만 합니다. 이 프로젝트는 훨씬 더 많은 것을 수행합니다:

  1. 로드 및 준비: PDF를 장(chapter)으로 분할하고, 정리하고, LLM으로 요약합니다.
  2. 인덱스: 책 인용문과 장 요약을 벡터 저장소(FAISS)에 인코딩하여 빠른 검색을 가능하게 합니다.
  3. 계획: 질문은 익명화되어(명명된 엔터티가 자리 표시자로 대체됨) 플래너가 편향 없이 일반적으로 추론할 수 있습니다. 높은 수준의 계획이 생성된 다음 비익명화되고 구체적인 작업으로 분해됩니다.
  4. 실행: 각 작업은 정보를 검색(그런 다음 중요한 부분으로 증류)하거나 체인 오브 소트 추론을 사용하여 직접 답변합니다.
  5. 검증 및 재계획: 에이전트는 생성된 콘텐츠가 검색된 컨텍스트에 근거했는지(모델의 사전 훈련 메모리가 아닌) 검증하고 필요에 따라 계획을 업데이트합니다.
  6. 최종 답변: 축적되고 검증된 컨텍스트에서 생성됩니다.

왜 다른가

  • 환각 방지: 답변은 제공된 데이터에 추적 가능해야 합니다. 검증 루프가 이를 확인하며, Self-RAG 논문의 아이디어를 반영합니다.
  • 다단계 추론: 복잡한 쿼리를 하위 작업으로 분해합니다(예: "주인공이 악당의 조수를 어떻게 물리쳤는가?"의 경우 먼저 주인공, 악당, 조수를 식별한 다음 대결을 찾고 이유를 추론합니다).
  • 적응형 계획: 계획은 살아있는 문서로, 새로운 정보가 도착할 때마다 업데이트됩니다(Plan-and-Solve 및 babyagi에서 영감).

포함 내용

  • 첫 번째 해리포터 책을 테스트 사례로 사용하는 단계별 튜토리얼 노트북(sophisticated_rag_agent_harry_potter.ipynb)
  • 에이전트의 추론을 실시간으로 시각화하는 Streamlit 앱(simulate_agent.py)
  • Docker 지원(docker-compose up --build)
  • Ragas 메트릭을 통한 평가: 답변 정확성, 충실도, 답변 관련성, 컨텍스트 재현율, 답변 유사성

기술

  • LangChain(오케스트레이션용)
  • FAISS(벡터 저장소)
  • Streamlit(시각화)
  • Ragas(평가)
  • 유연한 LLM 지원: OpenAI(기본 gpt-4o), Groq 또는 LangChain 호환 제공업체

시작하기

Python 3.8+ 및 LLM API 키가 필요합니다. 저장소를 클론하고 .env 파일에 키를 추가하고 pip install -r requirements.txt로 설치한 다음 노트북을 열거나 Streamlit 앱을 실행합니다. 전체 README 지침은 프로젝트에 있습니다.

라이선스

Apache 2.0 — 오픈 소스, 상업적 사용 무료.

저자

Nir Diamant는 관련 저장소(RAG Techniques, GenAI Agents, Agents Towards Production)와 뉴스레터도 유지 관리합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트