Ollama を使用した Perplexica のセルフホスティング

ローカルで Copilot 風サービスを実行?簡単です!

目次

それはとても素晴らしいことです! Copilot や Perplexity.ai を呼び出して、世界中に何を求めているかを知られる代わりに、 今ではご自身の PC やラップトップで同様のサービスをホストできるようになりました!

Perplexica は、Copilot や Perplexity.ai と似たシステムです。

  • 質問を入力します
  • AI がインターネット上で回答を検索します(検索対象を指定できます:学術論文、文章、YouTube、Reddit など)
  • 次に、AI が発見したすべての情報を要約します
  • 結果を元の Web サイトへの参照と共に提示します
  • 右側に関連する画像や YouTube ビデオのリストも表示されます
  • さらに、トピックをもう少し掘り下げたい場合のために、クリックして使える追加質問も用意されています

これらのシステムはクラウド上でホストされており、マイクロソフトやメタなどの企業に所属しています。 一方、Perplexica はオープンソースソフトウェアであり、ご自身の PC や高性能なラップトップでホストすることができます。

同じアップストリームコードベースは現在、Vane として配布されています。Vane (Perplexica 2.0) Quickstart With Ollama and llama.cpp では、現在の Docker イメージ、SearxNG、およびローカル推論パスについて、プロジェクト名変更に合わせて解説しています。

ローカル Ollama と vLLM、Docker Model Runner、LocalAI、クラウドプロバイダーとの比較(コストとインフラのトレードオフを含む)については、LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared をご覧ください。

perplexica response with llama3.1 8b q6 and jina embeddings ここでは、Chat モデル llama3.1 8b q6 と Embedding モデル jina を使用した Perplexica のレスポンスを示しています。質問は「Who is Elon Mask?」です。

Perplexica はいくつかのモジュールで構成されています。

  1. SearxNG - メタ検索エンジンです。10 以上の検索エンジンにアクセスして結果を取得し、Perplexica がそれらを統合します。 SearxNG は非常に柔軟に設定でき、各エンジンをオン/オフしたり、新しいエンジンを追加したりできますが、当方の目的にはデフォルト設定で十分機能します。
  2. Perplexica Backend and Frontend - 技術的には 2 つの別々のモジュールで、1 つは API を提供し、もう 1 つは UI を提供します。
  3. Ollama Service - これは Perplexica プロジェクトの一部ではありませんが、LLM をローカルでホストしたい場合は、Ollama を使用するのが唯一の手段となります。

したがって、システム全体のインストールは以下の 2 つの大きなステップで構成されます:

  1. Ollama のインストールと Ollama モデルのダウンロード
  2. Perplexica と SearxNG のインストール

Ollama のインストール

Ollama を始めるには、以下の手順に従ってください:

以下のスクリプトを実行して Ollama をインストールします:

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

Ollama に好みの LLM をダウンロードさせます。Llama3.1 8b q4 を使用する場合、以下のスクリプトを実行します:

ollama pull llama3.1:latest

Embedding モデルとして使用する(お好みの場合)最新の Nomic-Embed-Text をプルします:

ollama pull nomic-embed-text:latest

Ollama サービスファイルを編集するために以下を実行します:

sudo systemctl edit ollama.service

Ollama をネットワークに公開するために(Docker 内部から Perplexica が接続できるように)、以下の行を追加します:

[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 のインストール、更新、設定に関する詳細な説明については、以下を参照してください: Install and configure Ollama

他の Ollama モデルを Perplexica で使用する方法の詳細については、以下の「他の Ollama モデルのインストール」セクションを参照してください。

Perplexica のインストール

私は Linux 上で Docker 化された Perplexica をインストールしましたが、Windows や Mac でも非常に似た docker-compose を使用できます。

レッツゴー!

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 を使用します。 他のポートを使用する場合は、それに応じて調整してください。

Perplexica ディレクトリにいる状態で、以下を実行します:

docker compose up -d

これにより、SearxNG と base node の Docker イメージがプルされ、2 つの Perplexica Docker イメージがビルドされ、3 つのコンテナが起動します。 セットアップ完了まで数分待ちます。

Web ブラウザで http://localhost:3000 にアクセスして Perplexica を利用できます。

設定(Settings)へ移動します。左下の歯車アイコン(Cog icon)を押し、Ollama モデルを選択してください。

perplexica settings - configuring ollama models

ここでは、Chat モデルとして llama3.1:8b-instruct-q6_K(Llama 3.1 8b、量子化 q6_K)、Embedding モデルとして nomic-embed-text:137m-v1.5-fp16 が選択されているのが確認できます。

また、Light テーマまたは Dark テーマのいずれかをお好きな方を選択することもできます。

Perplexica の検索オプション(ボックス内の目のアイコンをクリック)を Dark テーマで示します: perplexica search options

他の Ollama モデルのインストール

「Ollama のインストール」セクションで、すでに llama3.1:latestnomic-embed-text:latest モデルをインストール済みです。

チャットには 1 つのモデルだけで十分ですが、利用可能なモデルは多数あります。 それらの挙動はわずかに異なりますが、最も一般的なモデルから始めるのが良いでしょう: Llama3.1、Gemma2、Mistral Nemo、または Qwen2 です。

チャットモデル

インストールセクションで見たチャットモデルの完全な名前 llama3.1:latest は、実際には llama3.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_Kmistral-nemo:12b-instruct-2407-q8_0 です。

Ollama がローカルリポジトリに持っているモデルを確認するには:

ollama list

不要なモデルを削除するには:

ollama rm qwen2:7b-instruct-q4_0 # 例

Embedding モデル

これらのインストールをスキップすることもできます。Perplexica には、BGE Small、GTE Small、Bert bilingual の 3 つの Embedding モデルがプリインストールされています。 これらは悪くありませんが、他の Embedding モデルを試したいかもしれません。

上記の Ollama インストールセクションで nomic-embed-text:latest Embedding モデルをインストールしましたが、良いモデルです。ただし、以下も試すことをお勧めします:

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

# プロジェクトフォルダに移動
# インストール時にクローンした場所
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: Perplexica を Ollama と共にインストール・セットアップする手順は何ですか?

  • A: Ollama のインストール、モデルのプル、そして Perplexica のインストールというステップが含まれます。

  • Q: Perplexica で利用可能なカスタマイズオプションは何ですか?

  • A: LLama 3.1、Mistral Nemo、Gemma2 などの異なるモデルを選択したり、ローカル Embedding モデルを設定したり、ニュース、学術論文、YouTube ビデオ、Reddit フォラムなど、さまざまな検索オプションを探索できます。

  • Q: Perplexica と共に使用する Ollama モデルはどれが良いですか?

  • A: 私たちのテストでは、Perplexica を llama3.1:8b-instruct-q6_Kjina/jina-embeddings-v2-base-en:latest で実行した際に最も良い結果が得られました。

Ollama(Perplexica の典型的なバックエンド)が vLLM、Docker Model Runner、LocalAI、クラウドプロバイダーとどのように適合するかを確認するには、LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared ガイドをご覧ください。

参考リンク

購読する

システム、インフラ、AIエンジニアリングの新記事をお届けします。