
Dify와 로컬 LLM으로 만드는, 완전한 온프레미스 AI 앱 개발 환경 구축 가이드
요약
Dify와 Ollama를 활용하여 데이터 유출 걱정 없는 온프레미스 AI 앱 개발 환경을 구축하는 방법을 소개합니다. 보안, 비용, 자유도 측면에서 이점을 가진 로컬 LLM 기반의 챗봇 및 RAG 환경 구축 절차를 다룹니다.
핵심 포인트
- Dify와 Ollama 조합으로 보안성이 높은 로컬 AI 환경 구축 가능
- 데이터 외부 전송 없이 사내 서버 내에서 모든 처리 완결
- Docker 환경에서 host.docker.internal 설정을 통한 연결 핵심
- Llama 3.1 등 오픈소스 모델을 활용한 맞춤형 AI 앱 개발
ChatGPT나 Claude의 API를 사용하면 놀라울 정도로 쉽게 AI 앱을 만들 수 있는 시대가 되었습니다. 하지만 실제로 업무에 사용하려고 할 때, 다음과 같은 벽에 부딪힌 경험은 없으신가요?
- "사내 기밀 정보나 고객 데이터를 외부 API로 전송하는 것은 피하고 싶다"
- "API 이용료가 쌓여서 비용 예측이 어렵다..."
- "오프라인 환경에서도 작동하는 AI 앱이 필요하다"
- "PoC(개념 증명)로 만들고 싶은데, 정보 시스템 부서의 승인이 나지 않는다"
이러한 과제들을 한 번에 해결해 주는 것이 바로 Dify × 로컬 LLM 조합입니다.
모든 처리를 자신의 머신이나 사내 서버 내에서 완결시킴으로써, 데이터를 외부로 일절 전송하지 않고 AI 앱을 개발하고 운영할 수 있습니다. 게다가 노코드/로우코드(No-code/Low-code) 방식으로 직관적으로 구축할 수 있다는 장점도 있습니다.
이 글에서는 Dify와 Ollama를 사용하여 완전히 로컬에서 작동하는 보안성이 높은 AI 앱 개발 환경을 구축하는 절차를 초보자도 이해하기 쉽게 자세히 설명합니다. 이 글을 다 읽고 나면, 여러분의 PC 위에서 '나만의 ChatGPT'가 작동하고 있을 것입니다.
**Dify(디파이)**는 오픈소스 LLM 애플리케이션 개발 플랫폼입니다. GUI 기반으로 다음과 같은 AI 앱을 구축할 수 있습니다.
- 챗봇
- RAG(사내 문서 검색 AI)
- 워크플로우형 AI 에이전트
- 텍스트 생성 앱
프롬프트 관리, 데이터셋 관리, API 엔드포인트 공개 등이 모두 통합되어 있어 **'LLM 앱의 WordPress'**라고도 불립니다.
로컬 LLM이란, **자신의 머신 위에서 작동하는 대규모 언어 모델(Large Language Model)**을 의미합니다. 대표적인 실행 환경이 Ollama이며, 다음과 같은 특징이 있습니다.
- Llama 3, Qwen, Gemma, Mistral 등 주요 OSS 모델 지원
- 명령어 한 번으로 모델 다운로드 및 실행 가능
- REST API로도 이용 가능
- macOS / Linux / Windows 모두 대응
| 항목 | 클라우드 API (OpenAI 등) | Dify × 로컬 LLM |
|---|---|---|
| 데이터 전송지 | 외부 서버 | 로컬 완결 |
| ... | ||
| 보안성, 비용, 자유도 세 가지 측면에서 큰 이점이 있습니다. |
그럼 실제로 직접 해봅시다. 전제 조건으로 Docker Desktop이 설치되어 있어야 합니다.
먼저 로컬 LLM의 실행 기반인 Ollama를 설치합니다.
macOS / Windows의 경우:
공식 웹사이트에서 인스톨러를 다운로드합니다.
Linux의 경우:
curl -fsSL https://ollama.com/install.sh | sh
설치 후, 모델을 다운로드해 봅시다. 한국어도 처리할 수 있는 경량 모델로, 우선 llama3.1을 시도하는 것이 좋습니다.
ollama pull llama3.1:8b
작동 확인:
olllama run llama3.1:8b
⚠️ **주의사항**: `localhost`가 아니라 `host.docker.internal`을 사용하는 것이 포인트입니다. Dify는 컨테이너 내부에서 동작하기 때문에, `localhost`를 사용하면 컨테이너 자신을 가리키게 되어 Ollama에 연결할 수 없습니다.
Linux 환경에서는 `host.docker.internal`을 사용할 수 없는 경우가 있으므로, 그럴 때는 `docker-compose.yml`에 다음과 같이 추가합니다.
```yaml
services:
api:
extra_hosts:
- "host.docker.internal:host-gateway"
Dify 대시보드에서 **「처음부터 만들기」→「챗봇」**을 선택합니다.
- 앱 이름 입력 (예: 「사내 헬프데스크 Bot」)
- 모델 선택에서 방금 등록한
llama3.1:8b를 선택 - 프롬프트 설정
프롬프트 예시:
당신은 친절하고 상냥한 사내 헬프데스크 어시스턴트입니다.
다음 규칙에 따라 답변해 주세요:
- 경어를 사용한다
...
「디버그 및 미리보기」 화면에서 동작을 확인하고, 문제가 없다면 「게시」 버튼을 누르면 완성입니다. 이제 API 엔드포인트로서 외부에서도 이용할 수 있게 됩니다.
단순한 챗봇만 만들기에는 아쉬우므로, **RAG (Retrieval-Augmented Generation, 검색 증강 생성)**를 통해 사내 문서를 검색할 수 있는 AI도 만들어 봅시다.
- Dify의 「지식 (Knowledge)」에서 데이터셋 생성
- PDF, Word, Markdown, 텍스트 파일 등을 업로드
- 임베딩 (Embedding) 모델 설정 (Ollama에서
nomic-embed-text를 사용하는 것을 추천)
ollama pull nomic-embed-text
- 챗봇 앱의 「컨텍스트 (Context)」에 데이터셋을 연결
- 동작 확인
이것만으로 사내 매뉴얼을 학습한 전용 AI가 완성됩니다. 모든 과정이 로컬에서 완결되므로, 기밀 문서를 안전하게 다룰 수 있습니다.
RAG를 사용할 경우, 다음과 같은 프롬프트가 효과적입니다.
당신은 사내 문서의 내용에 기반하여 답변하는 어시스턴트입니다.
다음 컨텍스트를 참고하여 질문에 답해 주세요.
【중요 규칙】
...
🛠️ 트러블슈팅 (Troubleshooting)
연결이 안 될 때
- Ollama가 실행 중인지 확인:
ollama list - 방화벽이 11434 포트를 차단하고 있지 않은지 확인
- Docker 측의 URL이
host.docker.internal로 되어 있는지 재확인
성능이 느릴 때
- 모델 크기 조정 (8B → 3B 등)
- Apple Silicon Mac이라면 문제없지만, CPU로 실행할 경우 버거울 수 있음
- GPU를 보유하고 있다면 Ollama가 자동으로 활용함
llama3.1보다 일본어(또는 특정 언어)에 강한qwen2.5나gemma2를 시도해 보기- 모델 크기가 클수록 정확도는 올라가지만, 메모리 소비도 늘어남
📝 요약
지금까지의 내용을 정리해 봅시다.
- Dify × Ollama 조합으로 완전한 로컬 AI 앱 개발 환경을 구축할 수 있음
- 보안, 비용, 오프라인 대응이라는 세 가지 측면에서 큰 이점이 있음
- Docker Compose로 간편하게 실행하며, GUI를 통해 직관적으로 앱을 제작 가능
- RAG 기능을 사용하면 사내 문서 검색 AI도 단시간에 구축 가능
- 호스트와 컨테이너 간의 연결에는
host.docker.internal을 사용하는 것이 핵심
한 번 이 환경을 구축해 두면 사내 도구, 개인 어시스턴트, 문서 검색, 코드 생성 지원 등 아이디어에 따라 다양한 AI 앱을 만들 수 있는 기반을 갖게 됩니다.
이 글에서는 기본적인 구축 흐름을 소개했지만, 실제로 업무에서 사용할 수 있는 수준의 AI 앱을 만들려면 조금 더 깊이 있는 지식이 필요합니다.
- Docker 관련 문제를 스스로 해결하고 싶다
- 여러 모델의 활용법이나 워크플로우 구축을 체계적으로 배우고 싶다
- RAG, 에이전트 (Agent), 외부 도구 연동 등 Dify의 기능을 풀 활용하고 싶다
- 업무 수준에서 운용 가능한 로컬 AI 기반을 구축하고 싶다
이러한 학습 방향에 관심이 있는 분들을 위해 참고할 만한 강의를 하나 소개해 드립니다.
Dify와 Ollama, Docker를 조합하여, 완전한 로컬 AI 앱을 처음부터 구축해 나가는 구성의 강좌입니다. 영상으로 환경 구축의 모든 과정을 체험할 수 있기 때문에, "글로만 보면 어딘가에서 막히고 만다"는 분들에게 보조 교재로 활용하기에 매우 적합할 것입니다. 공식 문서(Official Documentation)나 본 기사와 함께 활용한다면 이해도가 훨씬 깊어질 것입니다.
생성형 AI (Generative AI)의 활용은 "사용하는 측"에서 "만드는 측"으로 확실히 페이즈 (Phase)가 이동하고 있습니다. 수중에 직접 구동 가능한 AI 기반을 보유하고 있는 것은, 앞으로의 엔지니어에게 큰 무기가 될 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기