RAG (Retrieval Augmented Generation) 는 다른 시스템에서 정보를 검색하여 프롬프트를 통해 LLM의 컨텍스트 윈도우에 삽입함으로써 대형 언어 모델의 기능을 향상시키는 기법입니다. 이는 거의 모든 기업 사용 사례에 필요한 것으로, 훈련 데이터에 제공되지 않은 정보 (현재 웹 페이지 데이터, Confluence 나 Salesforce 같은 SaaS 앱 데이터, 판매 계약 및 PDF 문서 데이터 등) 를 제공합니다.
RAG 는 모델을 세밀하게 튜닝하는 것보다 비용이 적게 들고 빠르며, 응답마다 정보의 출처가 제공되므로 더 신뢰할 수 있습니다.
RAGstack 은 다음과 같은 리소스를 배포합니다:
- GPT4All: 로컬에서 실행할 때, RAGstack 는 Nomic AI 의 gpt4all 모델을 다운로드하여 소비자 CPU 에서 실행합니다.
- Falcon-7b: 클라우드에서는 Technology Innovation Institute 의 falcon-7b 모델을 GPU 를 갖춘 GKE 클러스터에 배포합니다.
- LLama 2: 클라우드에서는 Meta 의 Llama 2 모델의 7B 파라미터 버전을 GPU 를 갖춘 GKE 클러스터에 배포할 수 있습니다.
- Qdrant: Rust 로 작성된 오픈 소스 벡터 데이터베이스로, 성능이 뛰어나고 자체 호스팅이 가능합니다.
PDF 업로드를 처리하는 간단한 서버와 UI 를 제공하여 Qdrant 와 선택한 오픈 소스 LLM 을 사용하여 PDF 에 대해 채팅할 수 있습니다.
ragstack-ui/local.env 를 복사하여 ragstack-ui/.env 로 설정합니다.
server/example.env 를 복사하여 server/.env 로 설정합니다.
server/.env 에서 YOUR_SUPABASE_URL 을 Supabase 프로젝트 URL 로, YOUR_SUPABASE_KEY 를 Supabase 비밀 API 키로 변경합니다. ragstack-ui/.env 에서 YOUR_SUPABASE_URL 을 Supabase 프로젝트 URL 로, YOUR_SUPABASE_PUBLIC_KEY 를 Supabase 비밀 API 키로 변경합니다. 이 값은 Supabase 대시보드의 Settings > API 에서 찾을 수 있습니다. Supabase 에는 다음 컬럼을 가진 ragstack_users 테이블을 생성하세요:
- Column name: id (Type: uuid)
- app_id (Type: uuid)
- secret_key (Type: uuid)
- email (Type: text)
- avatar_url (Type: text)
- full_name (Type: text)
Row level security 를 추가한 경우, INSERT 와 SELECT 가 WITH CHECK 표현식 (auth.uid() = id) 을 포함하도록 확인하세요.
scripts/local/run-dev 를 실행합니다. 이는 ggml-gpt4all-j-v1.3-groovy.bin 을 server/llm/local/ 로 다운로드하고 서버, LLM, Qdrant 벡터 데이터베이스를 로컬에서 실행합니다.
다음 메시지를 볼 때 모든 서비스가 준비됩니다:
INFO: Application startup complete.
Falcon-7B 를 GPU 를 사용하여 Google Cloud 인스턴스에 배포하려면 다음 단계를 수행하세요:
scripts/gcp/deploy-gcp.sh 를 실행합니다. 이는 GCP 프로젝트 ID, 서비스 계정 키 파일 및 지역과 기타 매개변수 (모델, HuggingFace 토큰 등) 를 요청합니다.
- Falcon-7B 배포 단계에서 오류가 발생하면 다음 명령을 실행한 후 다시
scripts/gcp/deploy-gcp.sh 를 실행하세요:
gcloud config set compute/zone YOUR-REGION-HERE
gcloud container clusters get-credentials gpu-cluster
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
배포 스크립트는 Terraform 을 사용하여 구현되었습니다.
ragstack-ui 에 .env 파일을 생성하여 프론트엔드를 실행할 수 있습니다.
VITE_SERVER_URL 을 설정하여
Google Cloud run 의 ragstack-server 인스턴스 URL 로 설정합니다.
AWS EC2 인스턴스 (ECS 를 사용하여) 에 GPU 에서 실행되는 Falcon-7B 를 사용하여 RAG 스택을 배포하려면 다음 단계를 수행하세요:
scripts/aws/deploy-aws.sh
를 실행합니다. 이는 AWS 자격 증명 및 기타 매개변수 (모델, HuggingFace 토큰 등) 를 요청합니다.
배포 스크립트는 Terraform 을 사용하여 구현되었습니다.
ragstack-ui 에 .env 파일을 생성하여 ALB 인스턴스의 URL 로 VITE_SERVER_URL 을 설정하면 프론트엔드를 실행할 수 있습니다.
GPU 에서 실행되는 Falcon-7B 를 사용하여 AKS 에 RAG 스택을 배포하려면 다음 단계를 수행하세요:
를 실행합니다. 이는 AKS 구독 및 기타 매개변수 (모델, HuggingFace 토큰 등) 를 요청합니다.
배포 스크립트는 Terraform 을 사용하여 구현되었습니다.
ragstack-ui 에 .env 파일을 생성하여 AKS 의 ragstack-server 서비스의 URL 로 VITE_SERVER_URL 을 설정하면 프론트엔드를 실행할 수 있습니다.
참고: 이 AKS 배포는 NVIDIA Tesla T4 가속기를 사용하는 노드 풀을 사용하며 모든 구독에서 제공되지 않습니다
- ✅ GPT4all 지원
- ✅ Falcon-7b 지원
- ✅ GCP 배포
- ✅ AWS 배포
- ✅ Azure 배포
- 🚧 Llama-2-40b 지원
Falcon 7B 를 컨테이너화하기 위한 코드는 Het Trivedi 의 튜토리얼 리포지토리에서 가져왔습니다. Falcon 을 dockerize 하는 방법을 Medium 에 게시한 그의 글을 확인하세요!