Vane(Perplexica 2.0) Ollama 및 llama.cpp를 활용한 빠른 시작

로컬 LLM을 활용한 자체 호스팅 AI 검색

Page content

Vane은 “인용과 함께 하는 AI 검색” 분야에서 가장 실용적인 선택지 중 하나입니다. 이는 라이브 웹 검색과 로컬 또는 클라우드 LLM을 결합하는 자체 호스팅형 답변 엔진으로, 전체 스택을 사용자의 통제 아래에 두는 것이 특징입니다.

이 프로젝트는 원래 Perplexica 로 알려졌으며, Vane으로의 이름 변경은 단순히 cosmetiical(외형적)이 아닙니다. 브랜드 정리를 넘어, “클론"이라는 프레임에서 벗어나 일반 목적의 답변 엔진으로 나아가는 지속적인 변화를 반영합니다.

laptop-llama-server

유용한 스택의 부분은 UI뿐만 아니라 추론과 데이터의 위치이기도 하므로, 2026년 LLM 호스팅 비교에서 로컬, 자체 호스팅, 클라우드 설정을 하나로 묶어 Vane을 다른 런타임 및 배포 선택지와 나란히 놓을 수 있습니다.

이 글은 기술 독자가 실제로 중요하게 생각하는 부분에 초점을 맞춥니다: 시스템 작동 방식, 최소한의 Docker 퀵스타트, 그리고 Ollama와 llama.cpp를 통한 로컬 추론 실행 방법(직접 실행 또는 LM Studio 경유). 또한 각 FAQ 주제는 문맥 내에서 답해지며, 하단에 따로 모아두지 않았습니다.

Vane은 재귀적 연구 시스템이 아니라 답변 엔진으로 의도적으로 설계되었습니다. 이 구분에 대해 정확히 짚어볼 가치가 있습니다. 자체 호스팅 딥 리서치 시스템: 12가지 도구 비교에서 Vane을 12가지 자체 호스팅 연구 아키텍처와 비교하며, “여러 검색을 수행한다"는 것이 “Deep Research를 수행한다"는 것과 같지 않은 이유를 설명합니다.

Vane이란 무엇이며 AI 검색 엔진은 어떻게 작동하는가

고수준에서 Vane은 채팅 UI와 검색 및 인용을 결합한 Next.js 애플리케이션입니다. 핵심 아키텍처 구성 요소는 현대적인 AI 검색 엔진에서 기대할 수 있는 것들과 정확히 일치합니다: 채팅과 검색을 위한 API 경로, 검색 수행 시점을 결정하는 오케스트레이션, 그리고 인용 인식형 답변 생성기.

UI에서 쿼리를 제출하면, Vane은 POST /api/chat를 호출합니다. 내부적으로 워크플로우는 의도적으로 구조화되어 있습니다:

  • 먼저 질문을 분류하여 연구가 필요한지, 어떤 헬퍼를 실행해야 하는지 결정합니다. -研究和 위젯을 병렬로 실행합니다.
  • 최종 답변을 생성하고 인용을 포함합니다.

이 “AI 검색 엔진” 라벨은 중요합니다. 왜냐하면 이것은 단순한 채팅 프론트엔드가 아니기 때문입니다. 주요 차이는 검색 증강 생성(Retrieval Augmented Generation)에 있습니다. Vane은 LLM의 파라미터에만 의존하는 것이 아니라 외부 컨텍스트(웹 결과물 및 선택적으로 사용자 업로드)를 가져와 최종 답변의 기반(substrate)으로 사용합니다. 공식 문서에서는 웹 조회와 “사용자 업로드 파일 검색"을 연구의 일부로 명시적으로 언급하며, 업로드에 대한 시맨틱 검색에는 임베딩이 사용됩니다.

인용은 사후 고려 사항이 아닙니다. Vane은 모델이 사용한 참고 문헌을 인용하도록 프롬프트하고, UI는 해당 인용을 응답 옆에 렌더링합니다. 실질적으로, 이것이 “도움이 되는” AI 검색과 검색 버튼만 있는 확신에 찬 환각 생성기를 구분합니다.

대부분의 설정에서 웹 검색 레이어 아래에는 SearxNG가 위치합니다. SearxNG는 여러 검색 서비스의 결과를 집계하는 무료 메타검색 엔진으로, 디자인적으로 사용자를 추적하거나 프로필화하지 않습니다. 이는 유료 검색 API와 근본적으로 다른 철학입니다. 유료 검색 API는 보통 단일 벤더의 인덱스와 상업적 데이터 계약을 제공합니다.

Perplexica에서 Vane으로: 역사와 이름 변경

Perplexica는 Perplexity AI에 영감을 받은 오픈소스, 자체 호스팅 가능한 답변 엔진으로 시작되었습니다. 여러 공개 가이드는 여전히 이 프로젝트를 “이전에 Perplexica로 알려짐"으로 설명하며, Vane을 적대적인 포크가 아닌 연속체로 취급합니다.

이 이름 변경은 업스트림 저장소에서 직접 구현되었습니다. 마스터 브랜치의 커밋 히스토리에서 feat(app): rename to 'vane'라는 제목의 커밋은 2026년 3월 9일 (SHA 39c0f19)에 등장합니다.

“어떻게"가 헤드라인보다 더 흥미롭습니다. 그 이름 변경 커밋은 단순히 README 조정만이 아닙니다. Docker 이미지 이름을 itzcrazykns1337/perplexica에서 itzcrazykns1337/vane으로 변경하고, 컨테이너 파일 시스템 경로를 /home/perplexica에서 /home/vane으로 조정하며, 프로젝트 텍스트와 에셋을 그에 따라 업데이트합니다.

오픈소스 AI 프로젝트가 왜 이름이 바뀌는지 궁금하다면, Vane은 일반적인 동인들의 교과서적인 예시입니다:

  • 상업적 브랜드에 대한 이름의 근접성은 혼란(때로는 법적 리스크)을 일으킵니다.
  • 프로젝트 범위가 원래의 프레임(“클론”)을 넘어 확장됩니다(“답변 엔진"으로).
  • 분산 아티팩트(Docker 이미지, 문서, UI 레이블)는 일관된 정체성이 필요합니다.

또한, 생태계는 하루아침에 이름을 바꿀 수 없습니다. Docker Hub는 여전히 유지 관리자 계정에 두 개의 저장소(itzcrazykns1337/vane과 itzcrazykns1337/perplexica)를 표시하고 있습니다. 따라서 저장소 리브랜딩 이후에도 오래된 블로그 게시물, compose 파일, 레지스트리 참조에서 Perplexica 네이밍을 여전히 볼 수 있습니다.

Docker 퀵스타트와 기본 설정

Vane의 공식 README는 상쾌하게 직설적입니다: 단일 컨테이너를 실행하면 Vane과 번들된 SearxNG 검색 백엔드를 얻습니다. 최소한의 Docker 퀵스타트는 다음과 같습니다.

docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest

이 이미지는 “그냥 작동(just works)” 경로로 포지셔닝됩니다. SearxNG가 이미 포함되어 있기 때문에, UI를 테스트하기 위해 외부 검색 백엔드가 필요하지 않습니다. 설정은 http://localhost:3000에서 웹 UI를 연 후 설정 화면에서 수행됩니다.

이미 SearxNG를 실행 중이라면(홈랩에서 일반적임), “slim” Vane 이미지는 SEARXNG_API_URL을 사용하여 외부 SearxNG 인스턴스를 가리키도록 합니다. README는 또한 두 가지 실용적인 SearxNG 설정 기대치를 강조합니다: JSON 출력 활성화 및 Wolfram Alpha 엔진 활성화.

docker run -d -p 3000:3000 \
  -e SEARXNG_API_URL=http://your-searxng-url:8080 \
  -v vane-data:/home/vane/data \
  --name vane \
  itzcrazykns1337/vane:slim-latest

Vane 업데이트 유지도 저장소에 문서화되어 있습니다. 공식 업데이트 워크플로우는 기본적으로 최신 이미지를 풀링하고 동일한 볼륨으로 재시작하여 설정을 보존하는 것입니다.

docker pull itzcrazykns1337/vane:latest
docker stop vane
docker rm vane
docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest

실행이 완료되면, Vane은 커스텀 엔진을 http://localhost:3000/?q=%s로 가리켜 브라우저 검색 엔진 단축키로 사용할 수 있습니다. “AI 검색"을 앱으로 방문하는 것이 아니라 검색처럼 느끼게 하고 싶다면, 이것은 작은 기능이지만 outsized(과대)한 영향을 미칩니다.

자동화 및 통합을 위해, Vane은 API를 노출합니다. 문서에서는 구성된 프로바이더와 모델을 발견하기 위해 GET /api/providers를, 선택된 채팅 모델, 임베딩 모델, 소스, 그리고 optimizationMode(speed, balanced, quality)로 검색을 실행하기 위해 POST /api/search를 설명합니다.

Ollama를 사용한 로컬 LLM 설정

Vane은 Ollama를 통한 로컬 LLM과 클라우드 프로바이더를 동일한 UI에서 지원합니다. 이는 “벤더"가 아닌 “연결"과 “모델"이라는 관점에서 생각할 때 올바른 추상화입니다.

Ollama 치트시트는 모델 선택 및 Docker 네트워킹 문제를 추측하기 전에 Ollama를 검증하는 데 잘 어울리는 일반적인 CLI 명령어와 빠른 API 확인 사항을 나열합니다.

가장 일반적인 문제는 모델 선택이 아니라 네트워킹입니다. Vane이 Docker에서 실행되고 Ollama가 호스트에서 실행될 때, 컨테이너 내부에서 “localhost"는 당신이 생각하는 의미를 갖지 않습니다. Vane은 컨테이너에서 Ollama에 연결하기 위한 OS별 기본 URL을 문서화합니다.

Docker 연결 시 주의사항

Vane의 문제 해결 섹션은 명시적으로 권장합니다:

  • Windows 및 macOS: http://host.docker.internal:11434
  • Linux: http://<private_ip_of_host>:11434

Linux의 경우, Vane은 Ollama가 기본적으로 127.0.0.1에 바인딩되어 노출이 필요할 수 있음을 언급합니다. README는 systemd 서비스에서 OLLAMA_HOST=0.0.0.0:11434를 설정하고 서비스를 재시작하는 것을 제안합니다.

이것은 Ollama 자체의 serve 환경 변수와 일치하며, 여기서 OLLAMA_HOST는 서버 바인드 주소를 제어하고 기본값은 127.0.0.1:11434입니다.

모델을 따뜻하게 유지하고 모델 선택

로컬 추론을 실행하면 콜드 스타트를 체감하게 될 것입니다. Ollama는 모델을 로드된 상태로 유지하기 위한 두 가지 관련 메커니즘을 제공합니다:

  • 서버 설정으로 OLLAMA_KEEP_ALIVE.
  • /api/generate와 /api/chat의 요청별 파라미터로 keep_alive, 이는 서버 기본값을 덮어씁니다.

Vane은 Ollama 모델에 대한 자체 keep_alive 지원을 추가했습니다(앱이 모델이 메모리에 얼마나 머무르는지 영향을 미칠 수 있도록). 이 기능은 Vane의 v1.10.0 릴리스 노트에 등장합니다.

모델 선택은 인터넷에서 과하게 복잡해지는 부분입니다. Vane 스타일의 작업을 위해 가장 실용적인 구분은 다음과 같습니다:

  • 요약 및 종합을 위한 인스트럭트 튜닝된(chat model) 채팅 모델.
  • 업로드 및 검색된 텍스트에 대한 유사도 검색을 위한 임베딩 모델. Vane의 API 문서는 검색 요청이 명시적으로 채팅 모델과 임베딩 모델 모두를 선택함을 보여줍니다.

Ollama 자체도 임베딩 워크플로를 지원하며, 심지어 CLI 문서에도 nomic-embed-text를 사용하여 임베딩하는 예시가 포함되어 있습니다.

이것은 클라우드 API 없이 로컬에서 AI 검색을 실행하는 FAQ에 대한 답변이기도 합니다. Vane을 Docker로, SearxNG를 로컬로, Ollama를 사용자의 하드웨어로 실행하면 검색 쿼리와 개인 문서 업로드를 모두 자신의 네트워크 경계 내에 유지할 수 있습니다. (클라우드 프로바이더에 연결하기로 결정한 경우, 연결은 물론 데이터 패스를 변경합니다.)

llama.cpp를 사용한 로컬 LLM 설정

Vane을 llama.cpp와 페어링하는 두 가지 현실적인 방법이 있습니다:

  • LM Studio를 서버 레이어로 사용 (Vane이 그것과 대화하도록 함).
  • llama.cpp 자체의 HTTP 서버(llama-server)를 실행하고 OpenAI 호환 엔드포인트를 통해 연결.

Vane은 “로컬 OpenAI-API-호환 서버"를 명시적으로 지원하며, 일반적인 요구 사항을 강조합니다: 127.0.0.1 대신 0.0.0.0에 바인딩, 올바른 포트 사용, 서버에 존재하는 모델 이름 설정, 그리고 서버가 인증을 강제하지 않아도 API 키 필드를 비워두지 않기.

LM Studio는 여기서 관련이 있습니다. 로컬 백엔드(종종 llama.cpp) 위에 위치하면서 OpenAI 호환 API를 노출하기 때문입니다. Vane v1.12.1은 LM Studio 프로바이더 추가를 특정하여 언급합니다.

LM Studio의 문서는 지원되는 OpenAI 호환 엔드포인트를 나열하고 http://localhost:1234/v1을 사용하는 기본 URL 예시를 보여줍니다(포트 1234 가정). 이는 Vane의 관점에서는 “그냥 또 다른 OpenAI 스타일 서버"이기 때문에 중요합니다.

llama.cpp를 직접 실행하는 것을 선호한다면, llama.cpp CLI 및 서버 퀵스타트는 설치, llama-cli, llama-server를 다룹니다. 공식 llama.cpp HTTP 서버는 OpenAI API 호환 채팅 컴플리션, 응답, 임베딩 라우트를 지원하며, 긴 서버 기능 목록(배치 처리, 모니터링, 도구 사용)을 제공합니다.

플래그를 외우지 않더라도, 중요한 부분들은 다음과 같습니다:

  • 서버가 존재하며 활성적으로 문서화되어 있습니다.
  • API 표면은 OpenAI 스타일 클라이언트가 대화할 수 있을 정도로 호환되며, 이는 Vane이 그 “OpenAI 호환” 연결 패턴에 필요한 것과 정확히 일치합니다.

최근에 배포된 것과 현재 변하고 있는 것

지난 1년간 Vane이 무엇이 되었는지 이해하고 싶다면, 하이프가 아니라 릴리스 노트와 마스터 브랜치 히스토리를 따라가십시오.

2026년 4월 10일 기준(오스트레일리아/멜버른), 릴리스 페이지에서 보이는 최신 태그된 GitHub 릴리스는 v1.12.1(2025년 12월 31일)입니다. 이 릴리스는 LM Studio 프로바이더 추가와 OpenAI 호환 프로바이더의 함수 호출 및 JSON 파싱에 대한 수정 사항을 언급합니다.

이전 릴리스들은 더 큰 변화를 개요합니다:

  • v1.11.0 (2025년 10월 21일)은 새로운 설정 마법사와 재설계된 설정 시스템, 더 넓은 프로바이더 지원 및 단일 명령 Docker 설치 경로를 도입했습니다. 동적 모델 페칭과 다양한 UI 및 개발자 경험 개선 사항도 언급됩니다.
  • v1.12.0 (2025년 12월 27일)은 아키텍처 재설정입니다: 스트리밍, 생성, 프로바이더별 행동을 위한 LangChain을 제거하고 커스텀 구현으로 대체합니다. “providers"를 “connections"으로 이름 변경하고, UI 및 코드 렌더링 개선을 추가하며, 더 많은 기능을 프로젝트 자체의 추상화로 이동합니다(이전 파싱 접근 방식에 비해 개선된 함수 호출 포함).
  • 이전의 v1.10.0 (2025년 3월 20일)은 파일 업로드(PDF, TXT, DOCX)를 추가하고, Ollama keep_alive 파라미터를 추가하며, 유지보수 가능성 및 집중 모드 생성을 개선하기 위한 메타 검색 에이전트 클래스를 추가하고, 자동 이미지 및 비디오 검색 기능을 추가했습니다.

브랜딩 측면에서, Vane으로의 이름 변경은 2026년 3월 9일 마스터 브랜치(feat(app): rename to 'vane')에 정착했으며, 코드베이스 네이밍과 Docker 아티팩트 양쪽을 업데이트했습니다.

그리고 2025년 12월 릴리스 이후에도 프로젝트 진화가 멈추지 않았습니다. 2026년 4월 8-9일의 마스터 브랜치 커밋에는 “업데이트된 딥 리서치 모드, 컨텍스트 관리” 및 새로운 검색 실행 및 스크래핑 관련 변경 사항이 포함됩니다. 즉, “AI 검색 엔진” 부분은 릴리스 태그 뒤에 고정된 것이 아니라 여전히 활성적으로 반복 개발되고 있습니다.

참고 자료

구독하기

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