DynamicRAG
DynamicRAG는 동적 검색 증강 생성(RAG) 시스템을 구현하는 React 기반 웹 애플리케이션입니다. 사용자가 텍스트를 입력하고, 임베딩으로 처리하고, 벡터 검색과 대규모 언어 모델을 조합하여 질문에 답하는 작업을 수행할 수 있습니다.
정보
이 예제를 설정하고 실행하기 위한 전체 소스 코드와 자세한 지침은 가이아 쿡북 리포지토리에서 확인할 수 있습니다.
스크린샷
텍스트 기반 동적 RAG 입력
깃허브 리포지토리를 동적 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
언어 모델(자동 다운로드가이아넷
폴더로 이동합니다. 사용 사례에 따라 모델을 교체할 수 있습니다.)
설정
- 리포지토리를 복제합니다:
git clone https://github.com/harishkotra/dynamic-rag-gaia
cd dynamic-rag
- 종속성을 설치합니다:
npm 설치
- GitIngest를 설치합니다:
pip 설치 gitingest
- Qdrant 서버가 실행 중이고 http://localhost:6333 에서 액세스할 수 있는지 확인합니다.
- Gaia 노드가 실행 중이고 http://localhost:8080 (튜토리얼: https://docs.gaianet.ai/node-guide/quick-start)에서 액세스할 수 있는지 확인하세요.
- 개발 서버를 시작합니다:
npm 실행 개발
사용법
- 입력 모드를 선택합니다:
- 텍스트 입력: 지식창고 텍스트를 입력 텍스트 영역에 붙여넣습니다.
- GitHub 리포지토리: GitHub 리포지토리 URL을 입력하여 콘텐츠를 분석합니다.
- 질문하기: 질문 필드에 질문을 입력합니다.
- 프로세스: '제출'을 클릭하여 쿼리를 처리합니다. 시스템이 처리합니다:
- 텍스트 입력의 경우: 입력 텍스트를 관리하기 쉬운 청크로 분할
- GitHub 리포지토리의 경우: GitIngest를 사용하여 리포지토리 콘텐츠 가져오기 및 처리하기
- 각 청크에 대한 임베딩 생성
- 임시 Qdrant 컬렉션에 임베딩을 저장합니다.
- 벡터 유사도 검색을 사용하여 관련 컨텍스트 찾기
- 로컬 Gaia 노드를 사용하여 답변 생성하기
- 결과 보기: 시스템에서 찾은 관련 컨텍스트를 기반으로 생성된 응답을 표시합니다.
기술 세부 정보
텍스트 처리
- 최대 청크 크기: 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/*)
정보
이 예제를 설정하고 실행하기 위한 전체 소스 코드와 자세한 지침은 가이아 쿡북 리포지토리에서 확인할 수 있습니다.