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

ローカルでCopilotスタイルのサービスを実行する?簡単です!

目次

とてもエキサイティングですね!
CopilotやPerplexity.aiにすべてを依頼する代わりに、今やあなた自身のPCやノートPCで同様のサービスをホストできるようになりました!

これは何ですか

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

  • 質問をします
  • AIがインターネットで答えを検索します(検索する場所を指定できます:学術論文、文章、YouTube、Redditなど)
  • 検索した結果をすべてまとめて表示します
  • 元のウェブサイトへの参照リンクを表示します
  • また、右側には画像とYouTube動画のリストも表示されます
  • さらに、トピックをさらに深く掘り下げたい場合は、クリックできるフォローアップの質問も表示されます

これらのシステムはクラウド上にホストされており、いくつかの企業(例えば、MicrosoftやMeta)に属しています。
Perplexicaは、PCや高性能なノートPCにインストールできるオープンソースのソフトウェアです。

Perplexicaの応答(llama3.1 8b q6とjina embeddingsを使用) ここでは、Chatモデルllama3.1 8b q6とjina Embeddingモデルを使用したPerplexicaの応答を確認しています。質問は「エロン・マスクとは誰ですか?」です。

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

  1. SearxNG - メタ検索エンジン。10以上の他の検索エンジンを呼び出して結果を取得するため、Perplexicaはそれらを統合できます。SearxNGは非常に設定が柔軟で、各エンジンをオン/オフにしたり、新しいエンジンを追加したりできます。ただし、私たちの目的にはデフォルトの設定が十分です。
  2. Perplexicaのバックエンドとフロントエンド。技術的にはこれらは2つの別々のモジュールで、1つはAPIを提供し、もう1つはUIです。
  3. Ollamaサービス - Perplexicaプロジェクトの一部ではありませんが、LLMをローカルでホストしたい場合は、Ollamaが唯一の方法です。

このシステム全体のインストールは2つの大きなステップからなります:

  1. Ollamaをインストールし、Ollamaモデルをダウンロードします
  2. SearxNGとともにPerplexicaをインストールします

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をネットワークに公開します(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のインストール、更新、設定に関する詳細な説明については、こちらをご覧ください: 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つのコンテナが起動します。 数分間待って、セットアップが完了するのを待ちましょう。

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

設定にアクセスしてください。左下にあるCogアイコンをクリックし、お好みのOllamaモデルを選択してください。

Perplexicaの設定 - Ollamaモデルの設定

ここでは、Chatモデルとしてllama3.1:8b-instruct-q6_K(Llama 3.1 8b with quantization q6_K)が選択されており、Embeddingモデルとしてnomic-embed-text:137m-v1.5-fp16が選択されています。

また、LightテーマまたはDarkテーマのどちらかを選択することもできます。

Perplexicaの検索オプション(このアイコンの目のアイコンをクリック)は、Darkテーマでは以下のようになります: Perplexicaの検索オプション

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

「Ollamaのインストール」セクションでは、すでにllama3.1:latestとnomic-embed-text:latestモデルをインストールしています。

チャットに必要なモデルは1つだけですが、利用可能なモデルはたくさんあります。 それらはわずかに異なる動作をしますが、最初は最も一般的なモデルから始めることをお勧めします: Llama3.1、Gemma2、Mistral Nemo、またはQwen2。

チャットモデル

インストールセクションで見たチャットモデルのフルネーム llama3.1:latestllama3.1:8b-text-q4_0 です。 これは80億パラメータとquantization 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 # 例

Embeddingモデル

これらをインストールを飛ばすこともできます。Perplexicaにはすでに3つのEmbeddingモデルがプリインストールされています:BGE Small、GTE Small、Bert bilingual。 それらはそれなりに良いですが、他の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

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は、ユーザーが自らのコンピュータでローカルに検索エンジンを実行できる、perplexity.aiやCopilotシステムの代替となる無料のセルフホスト型AI検索エンジンです。

  • 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_Kとjina/jina-embeddings-v2-base-en:latestモデルで実行したときに最も良い結果を得ました。

有用なリンク