使用 Ollama 自托管 Perplexica

本地运行类似 Copilot 的服务?轻松!

目录

这非常令人兴奋!
与其调用 Copilot 或 Perplexity.ai 并告诉全世界你想要什么,
你现在可以在自己的 PC 或笔记本电脑上运行类似的服务!

这是什么

Perplexica 是一个类似于 Copilot 和 Perplexity.ai 的系统。

  • 你提出一个问题
  • AI 在互联网上搜索答案(你可以指定搜索范围:学术论文、写作、YouTube、Reddit 等)
  • 然后 AI 总结所有找到的信息
  • 然后以引用原始网页的方式呈现结果
  • 右侧还会列出图片和 YouTube 视频
  • 还有准备好的后续问题供你点击,如果你想进一步探索该主题

这些系统是托管在云端的,属于某些公司(例如,微软或 Meta)。 Perplexica 是一个开源软件,你可以在自己的 PC 或强大的笔记本电脑上运行。

Perplexica 响应,使用 llama3.1 8b q6 和 jina embeddings 在这里我们看到 Perplexica 使用 Chat 模型 llama3.1 8b q6 和 jina Embedding 模型对问题 Who is Elon Mask? 的响应。

Perplexica 由几个模块组成:

  1. SearxNG - 元搜索引擎。它会调用 10 多个其他搜索引擎来获取结果,因此 Perplexica 可以将它们结合起来。 SearxNG 本身非常可配置,你可以开启或关闭每个引擎并添加新的引擎。 但就我们的目的而言,默认配置已经很好。
  2. Perplexica 后端和前端。从技术上讲,这两个是独立的模块,一个是提供 API,另一个是用户界面。
  3. Ollama 服务 - 虽然不属于 Perplexica 项目,但如果你想在本地运行 LLMs,Ollama 是唯一的方法。

整个系统的安装包括两个主要步骤:

  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

使用以下命令拉取最新版本的 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

有关 使用其他 Ollama 模型与 Perplexica 的详细信息,请参见下面的“安装其他 Ollama 模型”部分。

安装 Perplexica

我在 Linux 上安装了 Docker 化的 Perplexica,但非常相似的 docker-compose 也可以在 Windows 或 Mac 上使用。

我们开始吧!

使用 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。

如果你在端口 11434 上安装了 Ollama(这是默认端口),使用 http://host.docker.internal:11434。 对于其他端口,请相应调整。

当你仍在 Perplexica 目录中时,执行以下命令:

docker compose up -d

它将拉取 SearxNG 和基础节点的 Docker 镜像,构建两个 Perplexica Docker 镜像并启动 3 个容器。 等待几分钟以完成设置。

你可以在浏览器中通过 http://localhost:3000 访问 Perplexica。

前往设置。你懂的 - 左下角的齿轮图标,选择你的 Ollama 模型

Perplexica 设置 - 配置 Ollama 模型

在这里你可以看到选择的聊天模型是 llama3.1:8b-instruct-q6_K(带量化 q6_K 的 Llama 3.1 8b), 以及嵌入模型 nomic-embed-text:137m-v1.5-fp16。

你也可以选择浅色或深色主题,看你更喜欢哪一个。

Perplexica 的搜索选项(点击这个框图标中的眼睛),在深色主题下: Perplexica 搜索选项

安装其他 Ollama 模型

你已经在“安装 Ollama”部分之前安装了模型 llama3.1:latest 和 nomic-embed-text:latest。

你只需要一个聊天模型,但有很多模型可用。 它们的行为略有不同, 建议从最常见的开始: Llama3.1、Gemma2、Mistral Nemo 或 Qwen2。

聊天模型

你在安装部分看到的聊天模型的全名 - llama3.1:latestllama3.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 小型、GTE 小型和 Bert 双语。 它们表现不错,但你可能想尝试其他嵌入模型。

在上面的 Ollama 安装部分中,你安装了 nomic-embed-text:latest 嵌入模型,这是一个很好的模型,但我建议你也尝试:

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

Perplexica 运行在 Docker 上:

# 停止并删除所有容器(!!! 仅在需要时)
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

常见问题

  • Q: 什么是 Perplexica?

  • A: Perplexica 是一个免费的自托管 AI 搜索引擎,是 perplexity.ai 和 Copilot 系统的替代方案,允许用户在自己的计算机上本地运行自己的搜索引擎。

  • Q: 安装和设置 Perplexica 与 Ollama 的步骤是什么?

  • A: 步骤包括安装 Ollama、拉取模型,然后安装 Perplexica。

  • Q: Perplexica 有哪些定制选项?

  • A: 选项包括选择不同的模型,如 LLama 3.1、Mistral Nemo 或 Gemma2,设置本地嵌入模型,并探索各种搜索选项,如新闻、学术论文、YouTube 视频和 Reddit 论坛。

  • Q: 与 Perplexica 一起使用哪个 Ollama 模型?

  • A: 在我们的测试中,使用 llama3.1:8b-instruct-q6_K 和 jina/jina-embeddings-v2-base-en:latest 时,我们得到了最好的结果。

有用的链接