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 검색 엔진” 부분은 여전히 릴리스 태그 뒤에 고정되지 않고 적극적으로 반복되고 있습니다.

참고 자료