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を参照してください。

Perplexicaの応答(llama3.1 8b q6 と jina embeddings) ここでは、Chatモデル llama3.1 8b q6 と jina Embeddingモデルを使用したPerplexicaの応答が表示されています。質問は「Elon Maskとは誰ですか?」です。

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

  1. SearxNG - メタ検索エンジン。10以上の検索エンジンを呼び出して結果を取得するので、Perplexicaはそれらを統合できます。SearxNGは非常にカスタマイズ可能で、各エンジンをON/OFFにしたり、新しいエンジンを追加したりできます。ただし、我々の目的にはデフォルトの設定が十分です。
  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

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モデルを選択してください。

Perplexicaの設定 - 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の検索オプション(この箱アイコン内の目をクリック)をダークテーマで表示すると: 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_Kmistral-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:latestbge-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を参照してください。

便利なリンク