Ollama 를 활용한 Perplexica 자체 호스팅

로컬에서 코파일럿 스타일 서비스를 실행하시나요? 간단합니다!

Page content

정말 흥미진진합니다!

코파일럿 (Copilot) 이나 perplexity.ai 에 접속하여 전 세계에 당신의 의도를 알릴 필요 없이, 이제 자신의 PC 나 노트북에서 유사한 서비스를 직접 호스팅할 수 있습니다!

Perplexica 는 코파일럿과 Perplexity.ai 와 유사한 시스템입니다.

  • 질문을 던집니다.
  • AI 가 인터넷을 통해 답변을 검색합니다 (검색 범위를 지정할 수 있습니다: 학술 논문, 글쓰기, YouTube, Reddit 등).
  • AI 가 찾은 모든 정보를 요약합니다.
  • 원래 웹사이트에 대한 참조 자료와 함께 결과를 제시합니다.
  • 또한 우측에 이미지와 YouTube 동영상 목록을 제공합니다.
  • 주제를 더 깊이 탐구하고 싶다면 클릭할 수 있는 후속 질문들도 준비되어 있습니다.

이러한 시스템들은 클라우드에 호스팅되어 있으며 특정 기업 (예: Microsoft 나 Meta) 에 소속되어 있습니다. Perplexica 는 PC 나 강력한 노트북에서 호스팅할 수 있는 오픈 소스 소프트웨어입니다.

동일한 업스트림 코드베이스는 현재 Vane으로 배포되고 있으며, 이름이 변경된 프로젝트에 맞춰진 최신 Docker 이미지, SearxNG, 로컬 추론 경로를 보려면 Vane (Perplexica 2.0) Quickstart With Ollama and llama.cpp 를 참조하세요.

로컬 Ollama 와 vLLM, Docker Model Runner, LocalAI 및 클라우드 제공업체 간의 광범위한 비교 (비용 및 인프라 트레이드오프 포함) 를 보려면 LLM 호스팅: 로컬, 자체 호스팅 및 클라우드 인프라 비교 를 참조하세요.

perplexica response with llama3.1 8b q6 and jina embeddings 여기서 Who is Elon Mask?라는 질문에 대한 Chat 모델 llama3.1 8b q6 과 jina Embedding 모델을 사용한 Perplexica 의 응답을 볼 수 있습니다.

Perplexica 는 여러 모듈로 구성되어 있습니다.

  1. SearxNG - 메타 검색 엔진입니다. 10 개 이상의 다른 검색 엔진을 호출하여 결과를 얻으므로 Perplexica 는 이를 통합할 수 있습니다. SearxNG 는 자체적으로 매우 구성 가능하며 각 엔진을 켜거나 끌 수 있고 새로운 엔진을 추가할 수도 있습니다. 하지만 우리의 목적에는 기본 설정이 잘 작동합니다.
  2. Perplexica 백엔드 및 프론트엔드. 기술적으로 이는 두 개의 별도 모듈로, 하나는 API 를 제공하고 다른 하나는 UI 를 제공합니다.
  3. Ollama 서비스 - Perplexica 프로젝트의 일부는 아니지만, LLM 을 로컬에서 호스팅하려면 Ollama 를 사용하는 것이 유일한 방법입니다.

따라서 전체 시스템 설치는 두 가지 큰 단계로 구성됩니다:

  1. Ollama 설치 및 Ollama 모델 다운로드
  2. SearxNG 와 함께 Perplexica 설치

Ollama 설치

Ollama 를 시작하려면 다음 단계를 따르세요:

스크립트를 실행하여 Ollama 를 설치합니다:

curl -fsSL https://ollama.com/install.sh | sh

Ollama 에 좋아하는 LLM 을 다운로드하도록 지시합니다. Llama3.1 8b q4 라면 다음 스크립트를 실행하세요:

ollama pull llama3.1:latest

Nomic-Embed-Text 의 최신 버전을 가져와서 임베딩 모델로 사용하려면 (이 모델을 선호한다면) 다음을 실행하세요:

ollama pull nomic-embed-text:latest

Ollama 서비스 파일을 편집하려면 다음을 실행합니다:

sudo systemctl edit ollama.service

다음 줄을 추가하여 Ollama 를 네트워크에 노출합니다 (Perplexica 가 Docker 내부에서 연결해야 하므로):

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

systemd 데몬을 다시 로드하고 Ollama 서비스를 재시작합니다:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Ollama 가 성공적으로 시작되었는지 확인합니다:

systemctl status ollama.service
sudo journalctl -u ollama.service --no-pager

Ollama 설치, 업데이트 및 구성에 대한 자세한 내용은 다음을 참조하세요: Ollama 설치 및 구성

Perplexica 와 함께 다른 Ollama 모델 사용에 대한 자세한 내용은 아래의 ‘다른 Ollama 모델 설치’ 섹션을 참조하세요.

Perplexica 설치

저는 Linux 에서 Docker 화된 Perplexica 를 설치했지만, 매우 유사한 docker-compose 를 Windows 또는 Mac 에서도 사용할 수 있습니다.

시작해 보겠습니다!

Docker 로 시작하기 (권장) 시스템에 Docker 가 설치되어 있고 실행 중인지 확인하세요.

Perplexica 저장소를 복제합니다:

git clone https://github.com/ItzCrazyKns/Perplexica.git

복제 후 프로젝트 파일이 있는 디렉터리로 이동합니다.

cd Perplexica

sample.config.toml 파일을 config.toml 로 이름을 변경합니다. 나중에 Perplexica 를 업데이트하여 이 저장소에서 git pull 을 할 계획이라면, sample.config.toml 파일을 config.toml 로 복사하세요.

cp sample.config.toml config.toml

설정 파일을 편집합니다:

nano config.toml

Docker 설정의 경우 다음 필드만 채우면 됩니다:

OLLAMA: Ollama API URL 입니다.

http://host.docker.internal:PORT_NUMBER 형식으로 입력해야 합니다.

Ollama 를 포트 11434(기본값) 에 설치했다면 http://host.docker.internal:11434 을 사용하세요. 다른 포트의 경우 accordingly 조정하세요.

Perplexica 디렉터리에 여전히 있는 상태에서 다음을 실행합니다:

docker compose up -d

이 명령은 SearxNG 와 기본 node Docker 이미지를 가져오고, 두 개의 Perplexica Docker 이미지를 빌드하며, 3 개의 컨테이너를 시작합니다. 설정이 완료될 때까지 몇 분 기다리세요.

웹 브라우저에서 http://localhost:3000 에서 Perplexica 에 접속할 수 있습니다.

설정으로 이동합니다. 아시죠? 왼쪽 하단의 톱니바퀴 아이콘을 클릭하여 Ollama 모델을 선택합니다.

perplexica settings - configuring ollama models

여기서 Chat 모델로 llama3.1:8b-instruct-q6_K (양자화 q6_K 를 사용한 Llama 3.1 8b) 가 선택되어 있고, 임베딩 모델로 nomic-embed-text:137m-v1.5-f16 이 선택된 것을 볼 수 있습니다.

원하는 경우 라이트 또는 다크 테마 중 하나를 선택할 수도 있습니다.

Perplexica 검색 옵션 (상자에 있는 눈 아이콘을 클릭): 다크 테마에서: perplexica search options

다른 Ollama 모델 설치

앞서 ‘Ollama 설치’ 섹션에서 모델 llama3.1:latest 와 nomic-embed-text:latest 를 이미 설치했습니다.

채팅을 위한 모델은 하나만 필요하지만, 사용할 수 있는 모델이 많습니다. 각 모델의 동작 방식이 약간 다르므로, 가장 일반적인 모델로 시작하는 것이 좋습니다: Llama3.1, Gemma2, Mistral Nemo 또는 Qwen2.

채팅 모델

설치 섹션에서 본 채팅 모델의 전체 이름인 llama3.1:latestllama3.1:8b-text-q4_0입니다. 이는 80 억개의 매개변수와 양자화 4_0 을 의미합니다. 빠르고 상대적으로 작지만 (4.8GB), GPU 에 메모리가 더 있다면 다음을 시도해 보시기를 권장합니다.

  • llama3.1:8b-instruct-q6_K (6.7GB) - 저의 테스트에서 훨씬 더 나은 응답을 보여주었으나 조금 더 느렸습니다.
  • llama3.1:8b-instruct-q8_0 (8.5GB) - 아니면 이 모델을 사용해보세요.

전반적으로 llama3.1:8b 그룹의 모든 모델은 상대적으로 빠릅니다.

시도해 보라고 권장한 모델을 다음 스크립트로 가져올 수 있습니다:

ollama pull llama3.1:8b-instruct-q6_K
ollama pull llama3.1:8b-instruct-q8_0

Llama3.1:8b 와 비교하여 Gemma2 는 더 간결하고 예술적인 응답을 생성합니다. 다음을 시도해 보세요:

# 9.8GB
ollama pull gemma2:9b-instruct-q8_0

# 14GB
ollama pull gemma2:27b-instruct-q3_K_L

Mistral Nemo 모델은 gemma2 와 llama3.1 사이의 응답을 생성합니다.

# 기본 모델, 7.1GB
ollama pull mistral-nemo:12b-instruct-2407-q4_0

# 10GB
ollama pull mistral-nemo:12b-instruct-2407-q6_K

# 13GB
ollama pull mistral-nemo:12b-instruct-2407-q8_0

Qwen2 모델도 시도해 볼 가치가 있습니다.

# 기본 모델, 4.4GB
ollama pull qwen2:7b-instruct-q4_0

# 8.1GB
ollama pull qwen2:7b-instruct-q8_0

제가 가장 마음에 들어 한 모델은: llama3.1:8b-instruct-q6_K 와 mistral-nemo:12b-instruct-2407-q8_0 입니다.

로컬 저장소에 있는 Ollama 모델을 확인하려면:

ollama list

필요 없는 모델을 제거하려면:

ollama rm qwen2:7b-instruct-q4_0 # 예시

임베딩 모델

이 모델을 설치하지 않아도 됩니다. Perplexica 에는 3 개의 임베딩 모델 (BGE Small, GTE Small, Bert bilingual) 이 사전 설치되어 있습니다. 이 모델들은 나쁘지 않게 작동하지만, 다른 임베딩 모델을 시도해 보고 싶을 수도 있습니다.

위 Ollama 설치 섹션에서 nomic-embed-text:latest 임베딩 모델을 설치했는데, 이는 좋은 모델이지만 다음과 같이 다른 모델도 시도해 보시기를 권장합니다:

ollama pull jina/jina-embeddings-v2-base-en:latest
# 그리고
ollama pull bge-m3:567m-fp16

jina/jina-embeddings-v2-base-en:latest의 결과가 가장 마음에 들었지만, 직접 확인해 보세요.

Perplexica 네트워크 설치

네트워크 서버에 설치하는 경우,

docker compose up -d

명령을 실행하기 전에, 또는 이미 Perplexica 가 실행 중이고 이미지를 다시 빌드해야 하는 경우:

# 중지하고 모든 컨테이너를 제거합니다 (!!! 필요한 경우에만)
docker compose down --rmi all

perplexica 서버 IP 주소를 docker-compose.yaml 에 넣으세요: 그리고 다음을 실행하세요:

nano docker-compose.yaml
perplexica-frontend:
    build:
      context: .
      dockerfile: app.dockerfile
      args:
      - NEXT_PUBLIC_API_URL=http://127.0.0.1:3001/api   # << 여기
      - NEXT_PUBLIC_WS_URL=ws://127.0.0.1:3001          # << 여기
    depends_on:
      - perplexica-backend

이제 Perplexica 와 SearxNG 컨테이너를 시작합니다:

docker compose up -d

또는 다시 빌드하고 시작합니다:

docker compose up -d --build

Perplexica 업데이트

Docker 에서 실행 중인 Perplexica:

# 중지하고 모든 컨테이너를 제거합니다 (!!! 필요한 경우에만)
docker compose down --rmi all

# 프로젝트 폴더로 이동합니다
# 설치 당시 perplexica 를 복제한 곳
cd Perplexica

# 업데이트를 가져옵니다
git pull

# Docker 컨테이너 업데이트 및 재빌드:
docker compose up -d --build

비 Docker 설치의 경우 다음을 참조하세요: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md

FAQ

  • Q: Perplexica 란 무엇인가요?

  • A: Perplexica 는 사용자가 컴퓨터에서 로컬로 자체 검색 엔진을 실행할 수 있는 무료 자체 호스팅 AI 검색 엔진이며, perplexity.ai 및 Copilot 시스템의 대안입니다.

  • Q: Ollama 와 함께 Perplexica 를 설치하고 설정하는 단계는 무엇인가요?

  • A: 단계에는 Ollama 설치, 모델 가져오기, 그리고 Perplexica 설치가 포함됩니다.

  • Q: Perplexica 에서 사용할 수 있는 커스터마이징 옵션은 무엇인가요?

  • A: 옵션에는 LLama 3.1, Mistral Nemo 또는 Gemma2 와 같은 다양한 모델 선택, 로컬 임베딩 모델 설정, 뉴스, 학술 논문, YouTube 동영상 및 Reddit 포럼과 같은 다양한 검색 옵션 탐색이 포함됩니다.

  • Q: Perplexica 와 함께 어떤 Ollama 모델을 사용해야 하나요?

  • A: 테스트에서 가장 좋은 결과를 얻은 것은 Perplexica 를 llama3.1:8b-instruct-q6_K 와 jina/jina-embeddings-v2-base-en:latest 와 함께 실행했을 때였습니다.

Ollama (Perplexica 의 일반적인 백엔드) 가 vLLM, Docker Model Runner, LocalAI 및 클라우드 제공업체와 어떻게 통합되는지 보려면 LLM 호스팅: 로컬, 자체 호스팅 및 클라우드 인프라 비교 가이드를 확인하세요.

유용한 링크

구독하기

시스템, 인프라, AI 엔지니어링에 관한 새 글을 받아보세요.