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

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

Page content

Vane 은 “인용된 AI 검색” 분야에서 더 실용적인 솔루션 중 하나입니다. 이는 실시간 웹 검색과 로컬 또는 클라우드 LLM 을 결합하면서도 전체 스택을 사용자의 통제 하에 두는 자체 호스팅형 답변 엔진입니다.

이 프로젝트는 원래 Perplexica 로 알려져 있었으며, Vane 으로의 명칭 변경은 단순히 외적인 변화가 아닙니다. 이는 브랜드 정리를 반영할 뿐만 아니라, “복제본"으로 규정되던 틀에서 벗어나 일반적인 답변 엔진으로의 꾸준한 전환을 의미합니다.

laptop-llama-server

이 스택의 유용성은 UI 에만 있는 것이 아니라 추론과 데이터가 어디에 위치하는지도 중요하기 때문에, 2026 년 LLM 호스팅 비교 는 로컬, 자체 호스팅, 클라우드 설정을 모두 아우르므로 Vane 을 다른 런타임 및 배포 선택지와 비교할 수 있습니다.

이 글은 기술적 독자가 실제로关心的한 부분에 초점을 맞춥니다: 시스템의 작동 방식, 최소 Docker 빠른 시작 가이드, 그리고 Ollama 와 llama.cpp(직접 또는 LM Studio 를 통해) 를 통한 로컬 추론 실행 방법입니다. 또한 각 FAQ 주제는 문서 하단에 따로 두는 것이 아니라 문맥 속에서 즉시 답변됩니다.

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

높은 수준에서 볼 때, Vane 은 채팅 UI 에 검색과 인용 기능을 결합한 Next.js 애플리케이션입니다. 핵심 아키텍처 요소 역시 현대적인 AI 검색 엔진에서 기대할 수 있는 것들과 정확히 일치합니다: 채팅 및 검색용 API 경로, 검색 필요 시점을 판단하는 오케스트레이션, 그리고 인용 정보를 인지하는 답변 작성기입니다.

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

  • 먼저 질문을 분류하여 연구가 필요한지, 어떤 도우미가 실행되어야 하는지 결정합니다.
  • 연구와 위젯을 병렬로 실행합니다.
  • 최종 답변을 생성하고 인용 정보를 포함합니다.

이 “AI 검색 엔진"이라는 라벨은 중요합니다. 이는 단순한 채팅 프론트엔드가 아니기 때문입니다. 핵심적인 차이는 검색 증강 생성 (Retrieval Augmented Generation) 입니다: Vane 은 LLM 의 파라미터에만 의존하지 않고 외부 컨텍스트 (웹 결과 및 선택적으로 사용자가 업로드한 파일) 를 가져와서 이를 최종 답변의 기반 자료로 사용합니다. Vane 의 문서는 웹 조회와 “사용자 업로드 파일 검색"을 연구의 일부로 명시하며, 업로드 된 파일에 대한 의미론적 검색을 위해 임베딩을 사용한다고 명시합니다.

인용은 사후 처리가 아닙니다. Vane 은 모델이 사용된 참고 문헌을 인용하도록 프롬프트를 제공하고, UI 는 해당 인용 정보를 응답 옆에 렌더링합니다. 실제로 이것이 “도움이 되는” AI 검색과, 단순히 검색 버튼이 달린 자신감 있는 환각 (Hallucination) 생성기를 구분하는 요소입니다.

대부분의 설정에서 SearxNG 는 웹 검색 계층의 하단에 위치합니다. SearxNG 는 여러 검색 서비스의 결과를 집계하는 무료 메타검색 엔진이며, 설계상 사용자를 추적하거나 프로파일링하지 않습니다. 이는 일반적으로 단일 벤더 인덱스와 상업적 데이터 계약을 제공하는 유료 검색 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/vaneitzcrazykns1337/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

이 이미지는 “그냥 작동한다"는 경위로 위치 지어지며, 이미 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 검색"이 방문하는 앱이 아니라 검색처럼 느껴지기를 원한다면 작지만 큰 영향을 미치는 기능입니다.

자동화 및 통합을 위해 Vane 은 API 를 노출합니다. 문서는 구성된 제공업체와 모델을 발견하기 위한 GET /api/providers와 선택된 채팅 모델, 임베딩 모델, 소스, 그리고 optimizationMode(속도, 균형, 품질) 를 사용하여 검색을 실행하기 위한 POST /api/search를 설명합니다.

Ollama 로 로컬 LLM 설정

Vane 은 Ollama 와 클라우드 제공업체를 통해 로컬 LLM 을 지원하며, 이는 “벤더"가 아니라 “연결"과 “모델"이라는 관점에서 생각한다면 올바른 추상화입니다.

가장 흔한 문제는 모델 선택이 아니라 네트워킹입니다. 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 스타일의 작업에 가장 실용적인 구분은 다음과 같습니다:

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

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

이는 클라우드 API 없이 로컬에서 AI 검색을 실행하는 FAQ 에 대한 답변이기도 합니다: Docker 에 있는 Vane, 로컬 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(포트 1234 가정) 를 사용한 기본 URL 예시를 보여줍니다. 이는 V 의 관점에서 볼 때 “단순히 또 다른 OpenAI 스타일 서버"이기 때문에 중요합니다.

llama.cpp 를 직접 실행하는 것을 선호한다면, 공식 llama.cpp HTTP 서버는 OpenAI API 호환 채팅 완료, 응답, 임베딩 경로를 지원하며 긴 서버 기능 목록 (배칭, 모니터링, 도구 사용 등) 을 제공합니다.

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

  • 서버가 존재하며 적극적으로 문서화되어 있습니다.
  • API 표면이 OpenAI 스타일 클라이언트가 대화하기에 충분히 호환되며, 이는 Vane 이 “OpenAI 호환” 연결 패턴을 위해 필요한 것입니다.

최근 출시된 내용 및 현재 변화

Vane 이 지난 1 년 동안 어떻게 변해왔는지 이해하려면, 허ype 가 아닌 릴리스 노트와 마스터 브랜치 기록을 따라야 합니다.

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 을 제거했습니다. 또한 “제공업체"를 “연결"로 명칭을 변경하고, 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 엔지니어링에 관한 새 글을 받아보세요.