본문 바로가기
카테고리 없음

AnythingLLM Docker 설치 가이드: 올인원 문서 AI 플랫폼

by 3604 2026. 8. 4.
728x90
 


개요

AnythingLLM은 문서와 대화할 수 있는 올인원 AI 애플리케이션입니다. PDF, Word, 웹페이지 등 모든 문서를 업로드하면 AI가 내용을 이해하고 질문에 답변합니다. RAG(검색 증강 생성), AI 에이전트, 노코드 에이전트 빌더, MCP 호환성을 제공하며, 로컬 LLM(Ollama)부터 클라우드 API(OpenAI, Claude)까지 모든 LLM을 지원합니다.

프로그래밍
항목내용
GitHub https://github.com/Mintplex-Labs/anything-llm
공식 사이트 https://anythingllm.com
문서 https://docs.anythingllm.com
라이선스 MIT
GitHub Stars 30K+

AnythingLLM이란?

왜 AnythingLLM인가?

 기존 문서 AI의 문제점:
   - 복잡한 RAG 파이프라인 구축 필요
   - LLM, 벡터DB, 임베딩 각각 설정
   - 기술적 지식 필요
 AnythingLLM의 해결책:
   - 올인원: 드래그 앤 드롭으로 문서 업로드
   - 제로 설정: 내장 벡터DB (LanceDB)
   - 유연한 LLM: 로컬부터 클라우드까지
   - 멀티 유저: 팀 협업 지원
   - 에이전트: 노코드로 AI 에이전트 구축

핵심 슬로건

"Chat with your docs"
- 모든 문서를 AI 컨텍스트로 변환
- 워크스페이스로 문서 분류
- 출처 인용 답변
- 완전 오픈소스, 셀프호스팅

아키텍처

┌─────────────────────────────────────────┐
│           AnythingLLM UI                 │
│     (워크스페이스 + 채팅 + 설정)         │
├─────────────────────────────────────────┤
│         Node.js Backend                  │
│   (문서 처리 + 벡터화 + LLM 연결)        │
├──────────────┬──────────────────────────┤
│   LanceDB    │         LLM              │
│ (내장 벡터DB) │ (Ollama/OpenAI/Claude)  │
└──────────────┴──────────────────────────┘

주요 기능

 문서 지원

형식지원
PDF  
Word (DOCX)  
TXT, Markdown  
HTML, 웹페이지  
YouTube 자막  
GitHub 저장소  
Notion  
Confluence  

 LLM 제공자

제공자설명
Ollama 로컬 LLM (Llama, Mistral 등)
OpenAI GPT-4o, GPT-4, GPT-3.5
Anthropic Claude 3.5, Claude 3
Google Gemini Pro
Azure OpenAI 엔터프라이즈
Groq 초고속 추론
LocalAI OpenAI 호환 로컬
LM Studio 로컬 GUI
OpenRouter 모든 모델 통합

 벡터 데이터베이스

벡터DB설명
LanceDB 내장 (기본값, 설정 불필요)
Chroma 로컬
Pinecone 클라우드
Qdrant 로컬/클라우드
Weaviate 로컬/클라우드
Milvus 대규모

 임베딩 엔진

엔진설명
내장 AnythingLLM 기본 임베더
Ollama nomic-embed-text 등
OpenAI text-embedding-3-small
Cohere
LocalAI 로컬 임베딩

 고급 기능

기능설명
워크스페이스 문서 분류 및 컨텍스트 분리
AI 에이전트 도구 사용 에이전트
노코드 에이전트 빌더 드래그 앤 드롭 에이전트
MCP 호환 Model Context Protocol
임베드 위젯 웹사이트에 채팅 위젯
브라우저 확장 웹페이지 수집
Whisper 음성 입력
TTS 텍스트 음성 변환

 멀티 유저 (Docker)

기능설명
멀티 유저 여러 사용자 지원
권한 관리 관리자/일반 사용자
워크스페이스 공유 팀 협업
API 키 프로그래밍 접근

시스템 요구 사항

항목최소권장
CPU 2 코어 4+ 코어
RAM 2GB 8GB+
저장소 10GB 50GB+
포트 3001

Docker 설치

방법 1: 원커맨드 설치 (권장)

# 저장 위치 설정
export STORAGE_LOCATION=$HOME/anythingllm

# 디렉토리 생성
mkdir -p $STORAGE_LOCATION

# Docker 실행
docker run -d -p 3001:3001 \
  --cap-add SYS_ADMIN \
  -v ${STORAGE_LOCATION}:/app/server/storage \
  -e STORAGE_DIR="/app/server/storage" \
  --name anythingllm \
  mintplexlabs/anythingllm:latest

접속: http://localhost:3001

방법 2: Docker Compose (기본)

# docker-compose.yml
services:
  anythingllm:
    image: mintplexlabs/anythingllm:latest
    container_name: anythingllm
    restart: unless-stopped
    ports:
      - "3001:3001"
    cap_add:
      - SYS_ADMIN
    environment:
      - STORAGE_DIR=/app/server/storage
    volumes:
      - ./anythingllm_storage:/app/server/storage

방법 3: Ollama 통합 (로컬 LLM)

# docker-compose.yml
services:
  anythingllm:
    image: mintplexlabs/anythingllm:latest
    container_name: anythingllm
    restart: unless-stopped
    ports:
      - "3001:3001"
    cap_add:
      - SYS_ADMIN
    environment:
      - STORAGE_DIR=/app/server/storage
      - LLM_PROVIDER=ollama
      - OLLAMA_BASE_PATH=http://host.docker.internal:11434
      - OLLAMA_MODEL_PREF=llama3.2
      - EMBEDDING_ENGINE=ollama
      - EMBEDDING_BASE_PATH=http://host.docker.internal:11434
      - EMBEDDING_MODEL_PREF=nomic-embed-text:latest
      - VECTOR_DB=lancedb
    volumes:
      - ./anythingllm_storage:/app/server/storage
    extra_hosts:
      - "host.docker.internal:host-gateway"

  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ./ollama:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

방법 4: OpenAI 사용

# docker-compose.yml
services:
  anythingllm:
    image: mintplexlabs/anythingllm:latest
    container_name: anythingllm
    restart: unless-stopped
    ports:
      - "3001:3001"
    cap_add:
      - SYS_ADMIN
    environment:
      - STORAGE_DIR=/app/server/storage
      - LLM_PROVIDER=openai
      - OPEN_AI_KEY=${OPENAI_API_KEY}
      - OPEN_MODEL_PREF=gpt-4o
      - EMBEDDING_ENGINE=openai
      - EMBEDDING_MODEL_PREF=text-embedding-3-small
      - VECTOR_DB=lancedb
    volumes:
      - ./anythingllm_storage:/app/server/storage

방법 5: Anthropic Claude

# docker-compose.yml
services:
  anythingllm:
    image: mintplexlabs/anythingllm:latest
    container_name: anythingllm
    restart: unless-stopped
    ports:
      - "3001:3001"
    cap_add:
      - SYS_ADMIN
    environment:
      - STORAGE_DIR=/app/server/storage
      - LLM_PROVIDER=anthropic
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
      - ANTHROPIC_MODEL_PREF=claude-3-5-sonnet-20241022
      - EMBEDDING_ENGINE=openai
      - OPEN_AI_KEY=${OPENAI_API_KEY}
      - EMBEDDING_MODEL_PREF=text-embedding-3-small
      - VECTOR_DB=lancedb
    volumes:
      - ./anythingllm_storage:/app/server/storage

방법 6: Qdrant 벡터DB

# docker-compose.yml
services:
  anythingllm:
    image: mintplexlabs/anythingllm:latest
    container_name: anythingllm
    restart: unless-stopped
    ports:
      - "3001:3001"
    cap_add:
      - SYS_ADMIN
    environment:
      - STORAGE_DIR=/app/server/storage
      - VECTOR_DB=qdrant
      - QDRANT_ENDPOINT=http://qdrant:6333
    volumes:
      - ./anythingllm_storage:/app/server/storage
    depends_on:
      - qdrant

  qdrant:
    image: qdrant/qdrant:latest
    container_name: qdrant
    restart: unless-stopped
    ports:
      - "6333:6333"
    volumes:
      - ./qdrant_storage:/qdrant/storage

방법 7: PostgreSQL 데이터베이스

# docker-compose.yml
services:
  anythingllm:
    image: mintplexlabs/anythingllm:pg
    container_name: anythingllm
    restart: unless-stopped
    ports:
      - "3001:3001"
    cap_add:
      - SYS_ADMIN
    environment:
      - STORAGE_DIR=/app/server/storage
      - DATABASE_CONNECTION_STRING=postgresql://anythingllm:password@postgres:5432/anythingllm
    volumes:
      - ./anythingllm_storage:/app/server/storage
    depends_on:
      - postgres

  postgres:
    image: postgres:15
    container_name: anythingllm-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_USER=anythingllm
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=anythingllm
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

방법 8: Traefik + HTTPS

# docker-compose.yml
services:
  anythingllm:
    image: mintplexlabs/anythingllm:latest
    container_name: anythingllm
    restart: unless-stopped
    cap_add:
      - SYS_ADMIN
    environment:
      - STORAGE_DIR=/app/server/storage
    volumes:
      - ./anythingllm_storage:/app/server/storage
    networks:
      - traefik_network
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.anythingllm.rule=Host(`ai.example.com`)"
      - "traefik.http.routers.anythingllm.entrypoints=websecure"
      - "traefik.http.routers.anythingllm.tls.certresolver=letsencrypt"
      - "traefik.http.services.anythingllm.loadbalancer.server.port=3001"

networks:
  traefik_network:
    external: true

환경 변수

기본 설정

변수설명기본값
STORAGE_DIR 저장 디렉토리 /app/server/storage
SERVER_PORT 서버 포트 3001
JWT_SECRET JWT 시크릿
DISABLE_TELEMETRY 텔레메트리 비활성화 false

LLM 제공자

변수설명
LLM_PROVIDER ollama, openai, anthropic, gemini, azure 
OLLAMA_BASE_PATH Ollama API URL
OLLAMA_MODEL_PREF Ollama 모델
OPEN_AI_KEY OpenAI API 키
OPEN_MODEL_PREF OpenAI 모델
ANTHROPIC_API_KEY Anthropic API 키
ANTHROPIC_MODEL_PREF Claude 모델

임베딩 엔진

변수설명
EMBEDDING_ENGINE native, ollama, openai 
EMBEDDING_BASE_PATH 임베딩 API URL
EMBEDDING_MODEL_PREF 임베딩 모델
EMBEDDING_MODEL_MAX_CHUNK_LENGTH 청크 최대 길이

벡터 데이터베이스

변수설명
VECTOR_DB lancedb, chroma, qdrant, pinecone 
QDRANT_ENDPOINT Qdrant URL
CHROMA_ENDPOINT Chroma URL
PINECONE_API_KEY Pinecone API 키

음성

변수설명
WHISPER_PROVIDER local, openai
TTS_PROVIDER native, openai, elevenlabs

인증

변수설명
AUTH_TOKEN 싱글 유저 인증 토큰
PASSWORDMINCHAR 최소 비밀번호 길이

초기 설정

1) 첫 접속

URL: http://localhost:3001
→ 설정 마법사 시작

2) LLM 선택

  1. Settings  LLM Preference
  2. 제공자 선택 (Ollama, OpenAI 등)
  3. API 키 또는 URL 입력
  4. 모델 선택

3) 임베딩 설정

  1. Settings  Embedder
  2. 엔진 선택 (Ollama, OpenAI 등)
  3. 모델 선택 (nomic-embed-text 등)

4) 첫 워크스페이스 만들기

  1. New Workspace 클릭
  2. 이름 지정 (예: “회사 문서”)
  3. 문서 업로드 (드래그 앤 드롭)
  4. 채팅 시작

사용 가이드

워크스페이스 이해

워크스페이스는 문서 그룹을 분리하는 컨테이너입니다:

소프트웨어
워크스페이스 A: 회사 정책 문서
워크스페이스 B: 기술 문서
워크스페이스 C: 연구 논문

→ 각 워크스페이스는 서로 분리된 컨텍스트
→ 같은 문서를 여러 워크스페이스에 공유 가능

문서 업로드

  1. 워크스페이스 선택
  2. 업로드 버튼 클릭 또는 드래그 앤 드롭
  3. 자동 청킹 및 임베딩
  4. 완료 후 채팅 가능

채팅 모드

모드설명
Chat 문서 컨텍스트 + LLM 지식
Query 문서 컨텍스트만 (환각 방지)

AI 에이전트 사용

  1. Settings  Agent Skills
  2. 도구 활성화 (웹 검색, 코드 실행 등)
  3. 워크스페이스에서 @agent 명령

임베드 위젯

웹사이트에 채팅 위젯 추가:

법률 양식
  1. Settings  Embed Chat
  2. 워크스페이스 선택
  3. 코드 생성
  4. 웹사이트에 붙여넣기
<script src="https://your-server:3001/embed/widget.js"></script>

API 사용

# 채팅 API
curl -X POST "http://localhost:3001/api/v1/workspace/{workspace-slug}/chat" \
  -H "Authorization: Bearer {api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "이 문서의 핵심 내용은?",
    "mode": "chat"
  }'

백업 및 복원

데이터 구조

./anythingllm_storage/
├── anythingllm.db       # SQLite 데이터베이스
├── documents/           # 업로드된 문서
├── vector-cache/        # 벡터 캐시
└── lancedb/             # LanceDB 데이터

백업

# 컨테이너 정지
docker compose down

# 전체 백업
tar -czvf anythingllm-backup-$(date +%Y%m%d).tar.gz anythingllm_storage/

# 재시작
docker compose up -d

복원

tar -xzvf anythingllm-backup.tar.gz
docker compose up -d

업데이트

# 최신 이미지 가져오기
docker pull mintplexlabs/anythingllm:latest

# 재시작
docker compose down
docker compose up -d

트러블슈팅

Ollama 연결 안 됨

Docker 내에서 호스트 접근:

머신러닝 및 인공지능
# Linux
OLLAMA_BASE_PATH=http://172.17.0.1:11434

# Mac/Windows
OLLAMA_BASE_PATH=http://host.docker.internal:11434

Linux에서 host.docker.internal 사용:

extra_hosts:
  - "host.docker.internal:host-gateway"

권한 오류

UID/GID 확인:

교육 자료
# 현재 사용자 ID 확인
id -u  # UID
id -g  # GID

# Docker Compose에서 설정
environment:
  - UID=1000
  - GID=1000

메모리 부족

대용량 문서 처리 시:

  • 청크 크기 감소
  • 더 작은 임베딩 모델 사용
  • RAM 증가

이미지 태그

태그설명
latest 최신 안정 버전
pg PostgreSQL 지원

대안 비교

기능AnythingLLMPrivateGPTOpen WebUI
문서 RAG  내장  내장  플러그인
워크스페이스      
멀티 유저  Docker    
에이전트      
노코드 빌더      
MCP      
임베드 위젯      
설치 난이도 쉬움 중간 쉬움
LLM 선택 다양 다양 Ollama 중심

선택 가이드

용도추천
문서 Q&A AnythingLLM
팀 협업 AnythingLLM
프라이버시 RAG PrivateGPT
Ollama UI Open WebUI
임베드 위젯 AnythingLLM

활용 사례

1. 회사 지식 베이스

구성:

  • 정책 문서, 매뉴얼 업로드
  • 워크스페이스별 분류 (HR, IT, 영업)
  • 멀티 유저로 팀 접근

결과: 사내 정보 즉시 검색

개발 도구

2. 연구 논문 분석

구성:

  • PDF 논문 업로드
  • 연구 주제별 워크스페이스
  • Query 모드로 정확한 인용

결과: 논문 요약 및 비교

3. 고객 지원 챗봇

구성:

  • FAQ, 제품 문서 업로드
  • 임베드 위젯으로 웹사이트 배포
  • AI 에이전트로 자동 응답

결과: 24/7 고객 지원

데이터 관리

4. 코드 문서화

구성:

  • GitHub 저장소 연결
  • README, 코드 주석 임베딩
  • 개발팀 워크스페이스

결과: 코드베이스 Q&A

5. 개인 지식 관리

구성:

  • 노트, 북마크, 기사 수집
  • 브라우저 확장으로 웹페이지 저장
  • 로컬 Ollama로 프라이버시

결과: 개인 AI 비서

프로그래밍

마무리

AnythingLLM은 문서와 대화할 수 있는 가장 쉬운 올인원 AI 플랫폼입니다. 드래그 앤 드롭으로 문서를 업로드하고, 내장 LanceDB로 별도 설정 없이 바로 RAG를 사용할 수 있습니다. 로컬 LLM부터 클라우드 API까지 모든 LLM을 지원합니다.

핵심 장점

장점설명
올인원 RAG + 에이전트 + 채팅
제로 설정 내장 벡터DB (LanceDB)
유연한 LLM Ollama, OpenAI, Claude 등
워크스페이스 문서 분류 및 컨텍스트 분리
멀티 유저 팀 협업 (Docker)
임베드 위젯 웹사이트 배포
노코드 에이전트 드래그 앤 드롭
MCP 호환 Model Context Protocol

이런 분께 추천

문서와 대화하고 싶은 분
복잡한 RAG 설정 없이 시작하고 싶은 분
팀용 지식 베이스가 필요한 분
웹사이트에 AI 채팅을 임베드하고 싶은 분
로컬 LLM으로 프라이버시를 지키고 싶은 분

출처: https://blog.jackerlab.com/docker-anythingllm-document-ai-rag-chat-with-docs/

728x90