주요 콘텐츠로 건너뛰기
버전: 2.0.0

DynamicRAG

DynamicRAG는 동적 검색 증강 생성(RAG) 시스템을 구현하는 React 기반 웹 애플리케이션입니다. 사용자가 텍스트를 입력하고, 임베딩으로 처리하고, 벡터 검색과 대규모 언어 모델을 조합하여 질문에 답하는 작업을 수행할 수 있습니다.

정보

이 예제를 설정하고 실행하기 위한 전체 소스 코드와 자세한 지침은 가이아 쿡북 리포지토리에서 확인할 수 있습니다.

스크린샷

텍스트 기반 동적 RAG 입력

screencapture-localhost-3000-2024-12-24-00_55_11

깃허브 리포지토리를 동적 RAG로 전환하기

이미지

특징

  • 실시간 텍스트 처리 및 청크
  • Qdrant를 사용한 동적 벡터 데이터베이스 생성
  • 대용량 텍스트 입력의 일괄 처리
  • 로컬 Gaia 노드와 통합
  • GitIngest를 사용한 GitHub 리포지토리 분석
  • 진행 상황 추적 및 오류 처리
  • Tailwind CSS 및 shadcn/ui 컴포넌트를 사용한 깔끔하고 반응이 빠른 UI

전제 조건

  • Node.js(v16 이상)
  • Python(GitIngest 설치용)
  • 실행 중인 Qdrant 인스턴스(로컬 또는 원격)
  • 포트 8080에서 실행되는 Gaia를 통한 로컬 LLM 서버(튜토리얼: https://docs.gaianet.ai/node-guide/quick-start)
  • 그리고 노믹 임베드 임베딩 모델 ( 가이아넷 폴더에 설치됨)
  • 그리고 llama 3.2 언어 모델(자동 다운로드 가이아넷 폴더로 이동합니다. 사용 사례에 따라 모델을 교체할 수 있습니다.)

설정

  1. 리포지토리를 복제합니다:
git clone https://github.com/harishkotra/dynamic-rag-gaia
cd dynamic-rag
  1. 종속성을 설치합니다:
npm 설치
  1. GitIngest를 설치합니다:
pip 설치 gitingest
  1. Qdrant 서버가 실행 중이고 http://localhost:6333 에서 액세스할 수 있는지 확인합니다.
  2. Gaia 노드가 실행 중이고 http://localhost:8080 (튜토리얼: https://docs.gaianet.ai/node-guide/quick-start)에서 액세스할 수 있는지 확인하세요.
  3. 개발 서버를 시작합니다:
npm 실행 개발

사용법

  1. 입력 모드를 선택합니다:
    • 텍스트 입력: 지식창고 텍스트를 입력 텍스트 영역에 붙여넣습니다.
    • GitHub 리포지토리: GitHub 리포지토리 URL을 입력하여 콘텐츠를 분석합니다.
  2. 질문하기: 질문 필드에 질문을 입력합니다.
  3. 프로세스: '제출'을 클릭하여 쿼리를 처리합니다. 시스템이 처리합니다:
    • 텍스트 입력의 경우: 입력 텍스트를 관리하기 쉬운 청크로 분할
    • GitHub 리포지토리의 경우: GitIngest를 사용하여 리포지토리 콘텐츠 가져오기 및 처리하기
    • 각 청크에 대한 임베딩 생성
    • 임시 Qdrant 컬렉션에 임베딩을 저장합니다.
    • 벡터 유사도 검색을 사용하여 관련 컨텍스트 찾기
    • 로컬 Gaia 노드를 사용하여 답변 생성하기
  4. 결과 보기: 시스템에서 찾은 관련 컨텍스트를 기반으로 생성된 응답을 표시합니다.

기술 세부 정보

텍스트 처리

  • 최대 청크 크기: 2000자
  • 일괄 처리 크기: 한 번에 3개의 청크
  • 청크는 자연스러운 텍스트 경계(단락 및 문장)를 기반으로 만들어집니다.

벡터 데이터베이스

  • 벡터 저장 및 유사도 검색에 Qdrant 사용
  • 각 쿼리 세션에 대한 임시 컬렉션 만들기
  • 사용 후 자동으로 컬렉션 정리
  • 임베딩에 768차원 벡터 사용

API 통합

  • OpenAI 스타일 API 엔드포인트와 호환 가능
  • 임베딩과 채팅 완료 엔드포인트 모두 지원
  • 사용 노믹 임베드 임베딩용 모델
  • 사용 llama 텍스트 생성 모델
  • 리포지토리 분석을 위한 GitIngest와 통합
  • 명령줄 도구 통합을 위한 다음JS API 경로

구성 요소

  • DynamicRAG.js: RAG 시스템을 구현하는 주요 구성 요소
  • app/api/gitingest/route.js: GitHub 리포지토리 처리를 위한 API 경로
  • 입력 처리 및 유효성 검사
  • 진행 상황 추적 및 오류 표시
  • 벡터 데이터베이스 관리
  • LLM 통합

오류 처리

이 시스템에는 포괄적인 오류 처리 기능이 포함되어 있습니다:

  • 텍스트 처리 실패
  • GitHub 리포지토리 가져오기 및 분석 오류
  • 생성 오류 임베딩
  • 벡터 데이터베이스 작업
  • LLM 쿼리 실패
  • 네트워크 문제

종속성

  • React
  • 테일윈드 CSS
  • SHADCN/UI 컴포넌트
  • 유틸리티 기능을 위한 Lodash
  • 다양한 UI 컴포넌트(@/components/ui/*)
정보

이 예제를 설정하고 실행하기 위한 전체 소스 코드와 자세한 지침은 가이아 쿡북 리포지토리에서 확인할 수 있습니다.