Show HN: RAGstack – VPC 내 기업용 사내 채팅봇, Llama 2 기반
요약
RAGstack은 RAG(Retrieval Augmented Generation) 기법을 활용하여 VPC 내에서 작동하는 기업용 사내 채팅봇 솔루션입니다. 이 시스템은 Llama 2, Falcon-7b 등 다양한 오픈 소스 LLM과 Qdrant 벡터 데이터베이스를 결합하여, 웹 페이지나 PDF 문서 같은 비정형 데이터를 기반으로 신뢰성 높은 답변을 제공합니다. 개발자는 로컬 환경(GPT4All)부터 Google Cloud (GKE), AWS EC2, Azure AKS에 이르기까지 다양한 클라우드 플랫폼에서 Terraform 기반의 배포 스크립트를 통해 쉽게 시스템을 구축할 수 있습니다.
핵심 포인트
- RAGstack은 RAG 기법을 사용하여 LLM의 컨텍스트를 외부 사내 데이터(PDF, Confluence 등)로 확장하여 신뢰성을 높입니다.
- 다양한 오픈 소스 모델(Llama 2, Falcon-7b, GPT4All)과 고성능 벡터 DB인 Qdrant를 통합합니다.
- 개발자는 로컬 환경부터 GCP, AWS, Azure에 이르기까지 주요 클라우드 플랫폼에서 배포할 수 있는 자동화된 스크립트와 Terraform 기반의 인프라 구성을 제공받습니다.
- 시스템 구축을 위해 Supabase 연동 및 초기 환경 설정(환경 변수, 테이블 생성 등)이 필요합니다.
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 스택을 배포하려면 다음 단계를 수행하세요:
./azure/deploy-aks.sh
를 실행합니다. 이는 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 에 게시한 그의 글을 확인하세요!
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기