기업 환경에서 방대한 내부 문서를 효과적으로 관리하고 필요한 정보를 신속하게 찾아내는 것은 중요한 과제입니다. 특히 민감한 사업 프로세스, 기술 솔루션, 고객 데이터 등이 포함된 문서는 클라우드 기반 서비스 사용 시 데이터 보안 및 규정 준수 문제에 직면할 수 있습니다. 이러한 요구사항을 충족시키기 위해 Dify와 온프레미스 대규모 언어 모델(LLM)을 결합하여 데이터 유출 걱정 없는 안전한 로컬 AI 문서 지식 저장소를 구축하는 방법을 소개합니다.
Dify란?
Dify는 오픈소스 LLM 애플리케이션 개발 플랫폼입니다. BaaS(Backend as a Service) 및 LLMOps 개념을 통합하여 개발자가 생산 수준의 생성형 AI 애플리케이션을 빠르게 구축할 수 있도록 돕습니다. 비기술 인력도 AI 애플리케이션 정의 및 데이터 운영에 참여할 수 있는 유연성을 제공합니다.
Dify 배포하기
Docker Compose를 이용한 배포
Dify 공식 문서에서는 Docker Compose를 통한 배포 방식을 제공합니다. 아래 명령어를 사용하여 Dify를 설치할 수 있습니다.
$ git clone https://github.com/langgenius/dify.git --branch 0.15.3
$ cd dify/docker
$ cp .env.example .env
$ docker-compose up -d
환경에 따라 GitHub 코드나 Docker 이미지 다운로드 시 네트워크 문제가 발생할 수 있습니다.
Rainbond를 이용한 배포
Kubernetes에 익숙하지 않은 사용자도 Dify를 Kubernetes 환경에 쉽게 배포할 수 있도록 Rainbond를 활용할 수 있습니다. Rainbond는 시각적 인터페이스를 통해 컨테이너화된 애플리케이션을 관리하며, 애플리케이션 마켓플레이스 원클릭 배포, 소스 코드 빌드 등 기능을 제공하여 사용자가 K8s 심층 지식 없이도 애플리케이션을 배포하고 운영할 수 있도록 지원합니다.
Rainbond Cloud를 통한 빠른 체험 (선택 사항)
별도의 서버 환경 구축 없이 클라우드 환경에서 Dify를 빠르게 경험하고 싶다면 Rainbond Cloud를 고려할 수 있습니다. 회원가입 후 클라우드 환경에서 Dify를 원클릭으로 배포하여 5분 이내에 AI 애플리케이션 개발을 시작할 수 있습니다.
자체 서버에 프라이빗 배포 (데이터 보안 우선)
자체 서버 또는 데이터 센터에 Dify를 배포해야 하는 경우(데이터 로컬화, 규정 준수), Rainbond는 간소화된 프라이빗 배포 솔루션을 제공합니다. 수동으로 K8s 구성을 작성할 필요 없이 10분 이내에 생산 환경을 구축할 수 있습니다.
curl -o install.sh https://get.rainbond.com && bash ./install.sh
설치 후 몇 분이 지나면 http://IP:7070으로 Rainbond에 접속하여 등록하고 로그인할 수 있습니다.
애플리케이션 마켓플레이스를 통한 Dify 원클릭 배포
Rainbond 대시보드에서 새 애플리케이션을 생성하고 애플리케이션 마켓플레이스를 통해 배포를 선택합니다. 오픈소스 애플리케이션 스토어에서 Dify를 검색한 후 원클릭 설치를 진행합니다.
토폴로지 뷰의 모든 구성요소 색상이 녹색으로 변하면 배포가 성공적으로 완료된 것입니다.
초기 애플리케이션 템플릿은 각 구성요소에 최소한의 리소스만 할당하여 기본 작동을 보장합니다. 실제 사용 중 약 200개 문서 인덱싱 시 Worker 서비스 등에서 OOM(Out Of Memory)이 발생할 수 있으므로, 설치 후 API, Worker, Plugin, Sandbox 구성요소의 리소스 할당량을 수동으로 조정해야 합니다. 각 구성요소 설정에서 '스케일링' 메뉴로 이동하여 리소스를 500m, 1G 등으로 조정하며, 이는 실제 상황에 따라 달라질 수 있습니다.
접속 버튼을 클릭하면 플랫폼에서 생성된 도메인을 통해 Dify 웹 UI에 접속할 수 있습니다. 등록 후 AI 애플리케이션 개발을 시작하세요.
Dify에서 로컬 대규모 언어 모델 구성하기
로컬에 DeepSeek R1과 같은 대규모 언어 모델을 배포하는 방법은 이전 문서를 참조하거나 Ollama와 같은 도구를 활용할 수 있습니다.
임베딩 모델 추가
임베딩 모델은 텍스트를 기계가 이해하고 계산할 수 있는 숫자 벡터(Numerical Vector)로 변환하는 역할을 합니다. 예를 들어 "파일 백업 방법"과 "파일 백업 단계"는 의미상 유사하며, 임베딩 모델을 거치면 유사한 벡터로 변환됩니다. 이를 통해 시스템은 단어 일치뿐만 아니라 의미적 유사성을 기반으로 관련 내용을 찾을 수 있게 됩니다. 지식 저장소에서는 업로드된 자료가 먼저 임베딩 모델을 통해 벡터로 변환된 후 전용 데이터베이스에 저장됩니다. 사용자가 자연어로 질문하면, 시스템은 키워드 매칭이 아닌 질문의 의미를 파악하여 데이터베이스에서 가장 관련성이 높은 내용을 정확하게 찾아냅니다. 이는 지식 저장소에 의미적 인덱스를 구축하는 것과 같으며, AI가 우리의 사설 데이터를 이해하도록 돕는 핵심 단계입니다.
Ollama를 이용한 로컬 임베딩 모델 배포:
Rainbond의 Ollama 구성요소에 접속하여 웹 터미널에서 다음 명령어를 실행합니다.
ollama pull bge-m3
bge-m3 모델은 특히 한국어와 같은 아시아 언어 검색 시나리오에 최적화되어 있으며, 뛰어난 의미 이해 능력을 제공합니다. Ollama 내에서 다른 임베딩 모델을 검색하여 사용할 수도 있습니다.
Dify에서 로컬 임베딩 모델 및 LLM 모델 구성
Dify 페이지에 접속한 후, 우측 상단 아바타 아이콘을 클릭하여 '설정' → '모델 공급자'로 이동하여 Ollama 플러그인을 설치합니다. 플러그인 설치에는 시간이 걸릴 수 있으며, 실패 시 재설치를 시도할 수 있습니다.
로컬에 배포된 LLM 및 Text Embedding 모델 관련 정보를 각각 연결합니다. 본 가이드에서는 Dify와 Ollama가 동일한 Rainbond 클러스터 내에 배포되어 있으므로 Ollama의 내부 네트워크 주소를 사용합니다. 내부 주소는 Ollama 구성요소 내 '포트' 메뉴에서 확인할 수 있습니다.
참고: 모델 정보를 저장한 후 모델이 즉시 추가되지 않을 수 있습니다. 플러그인 로딩에 시간이 필요하므로 몇 분 정도 기다리면 이전에 중복 추가된 모델들도 모두 나타나는 경우가 있습니다.
시스템 기본 모델을 설정합니다.
지식 저장소 생성
상단 '지식 저장소' 버튼을 클릭하여 새 지식 저장소를 생성하고 로컬 문서를 업로드한 후 다음 단계로 진행합니다.
문서 분할 및 정제 설정은 기본값을 사용해도 충분하며, Dify 지식 저장소 문서를 참조하여 세부 조정을 할 수 있습니다.
모델 선택 시 위에서 구성한 bge-m3 임베딩 모델을 선택해야 합니다.
모든 문서의 상태가 '사용 가능'으로 변경될 때까지 기다린 후 다음 단계로 넘어갑니다.
채팅 어시스턴트 생성
먼저 채팅 어시스턴트 애플리케이션을 생성합니다.
위에서 생성한 지식 저장소를 추가합니다.
우측 상단의 '게시'를 클릭한 다음 '실행'을 클릭합니다.
대화 테스트
기본적인 답변 품질은 만족스러운 수준입니다. 답변 효과를 더욱 개선하고 싶다면, Dify 문서에서 회수(Recall) 파라미터 조정 방법을 참조할 수 있습니다.
이로써 기업의 사설 문서를 이해하고 데이터가 완전히 로컬에 보관되어 통제 가능한 AI 지식 저장소 구축이 완료되었습니다. Dify 배포부터 임베딩 모델 구성, 문서 업로드, 채팅 어시스턴트 생성까지의 모든 과정은 기술을 실제 요구사항에 맞춰 구현하는 데 중점을 두었습니다. 이는 기존 문서 검색의 비효율성을 해결하는 동시에, 로컬 배포를 통해 데이터 보안을 확보하는 이점을 제공합니다.