Ollamaを使用したPerplexicaのセルフホスティング
ローカルでCopilotスタイルのサービスを実行する?簡単!
とてもエキサイティングですね!
CopilotやPerplexity.aiに頼って、世界中に自分の目的を明かす代わりに、今や自らのPCや高性能なノートPC上で同様のサービスをホストできるようになりました!
これは何ですか
Perplexicaは、CopilotやPerplexity.aiと類似したシステムです。
- 質問をします
- AIはインターネットで答えを探します(検索範囲を指定できます:学術論文、文章、YouTube、Redditなど)
- 検索した内容をすべて要約します
- 元のウェブサイトへのリンク付きで結果を提示します
- 右側には画像やYouTube動画のリストも表示されます
- さらに、トピックを深く掘り下げたい場合は、クリックしてフォローアップの質問も用意されています
これらのシステムはクラウド上にホストされており、MicrosoftやMetaなどの企業に所属しています。
Perplexicaは、PCや高性能なノートPC上でホストできるオープンソースのソフトウェアです。
ローカルのOllamaとvLLM、Docker Model Runner、LocalAI、クラウドプロバイダーとの比較を含め、コストやインフラのトレードオフについても詳しく説明されているLLM Hosting: Local, Self-Hosted & Cloud Infrastructure Comparedを参照してください。
ここでは、Chatモデル llama3.1 8b q6 と jina Embeddingモデルを使用したPerplexicaの応答が表示されています。質問は「Elon Maskとは誰ですか?」です。
Perplexicaはいくつかのモジュールから構成されています。
- SearxNG - メタ検索エンジン。10以上の検索エンジンを呼び出して結果を取得するので、Perplexicaはそれらを統合できます。SearxNGは非常にカスタマイズ可能で、各エンジンをON/OFFにしたり、新しいエンジンを追加したりできます。ただし、我々の目的にはデフォルトの設定が十分です。
- Perplexicaのバックエンドとフロントエンド。技術的には2つの別々のモジュールで、1つはAPIを提供し、もう1つはUIです。
- Ollamaサービス - Perplexicaプロジェクトの一部ではありませんが、LLMをローカルでホストしたい場合は、Ollamaが唯一の方法です。
全体のシステムのインストールは大きく2つのステップからなります:
- Ollamaをインストールし、Ollamaモデルをダウンロードします。
- 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のインストール、更新、設定に関する詳細な説明については、こちらを参照ください: Install and configure Ollama
Perplexicaと併用する他のOllamaモデルの使用方法については、以下の「他の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
configファイルを編集します
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とベースノードのDockerイメージを引き、2つのPerplexica Dockerイメージを構築し、3つのコンテナを起動します。 数分間待って、セットアップが完了するのを待ちましょう。
ウェブブラウザでPerplexicaにアクセスできます:http://localhost:3000
設定に移動してください。左下にあるCogアイコンをクリックし、お好みのOllamaモデルを選択してください。

ここでは、選択されているChatモデルがllama3.1:8b-instruct-q6_K(Llama 3.1 8b、量化q6_K)、Embeddingモデルがnomic-embed-text:137m-v1.5-fp16です。
また、LightテーマかDarkテーマのどちらかを選択することもできます。
Perplexicaの検索オプション(この箱アイコン内の目をクリック)をダークテーマで表示すると:

他のOllamaモデルのインストール
「Ollamaのインストール」セクションで、すでにllama3.1:latestとnomic-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_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の埋め込みモデルをインストールしました。これは良いモデルですが、jina/jina-embeddings-v2-base-en:latestやbge-m3:567m-fp16も試してみることをお勧めします:
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
docker-compose.yamlにPerplexicaサーバーのIPアドレスを追加します: それから
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は、CopilotやPerplexity.aiの代替となる、無料で自ホスト可能なAI検索エンジンです。ユーザーは自らのコンピュータ上でローカルで検索エンジンを実行できます。
-
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 Hosting: Local, Self-Hosted & Cloud Infrastructure Comparedを参照してください。