🔍 问题:为什么 CREATE EXTENSION vector; 失败?

当你从 postgresql.org 下载并安装了 PostgreSQL 18 后,直接执行:

psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS vector;"

系统报错:

ERROR:  could not open extension control file

这是因为:PostgreSQL 18 本身不包含 vector 扩展,它是一个第三方插件,必须手动安装。


🚫 失败尝试:使用 Homebrew 安装 pgvector 

你尝试了最便捷的方式:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

✅ 解释:这是国内镜像加速的 Homebrew 安装脚本,执行后,Homebrew 被安装到 /opt/homebrew(Apple Silicon)或 /usr/local(Intel)。

brew --version

✅ 解释:验证 Homebrew 是否安装成功,输出如 5.0.11 表示安装正常。

brew install pgvector

✅ 解释:通过 Homebrew 安装 pgvector,它会自动下载预编译的二进制包并安装到 Homebrew 管理的 PostgreSQL 路径下

brew info pgvector

✅ 解释:查看 pgvector 的安装详情,确认版本、依赖和路径。你会发现它依赖的是 brew 安装的 PostgreSQL,而非你从官网下载的 PostgreSQL 18。

psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS vector;"

❌ 失败原因: Homebrew 安装的 pgvector 二进制文件被放置在 Homebrew 的 PostgreSQL 目录中,而你当前运行的 psql 指向的是 官网安装的 PostgreSQL 18。 两者路径不一致 → 扩展文件无法被加载 → 安装失败。

📌 关键认知: PostgreSQL 扩展必须与当前运行的 PostgreSQL 实例二进制版本完全匹配。 混用不同来源的 PostgreSQL 和 pgvector,是“版本错配”的典型错误。


✅ 解决方案:从源码编译 pgvector v0.8.1(与 PostgreSQL 18 完美兼容)

既然 Homebrew 路径不匹配,那就绕过包管理器,直接从 GitHub 源码编译,确保与 PostgreSQL 18 完全一致。

步骤 1:下载 pgvector v0.8.1 源码

curl -L https://github.com/pgvector/pgvector/archive/refs/tags/v0.8.1.tar.gz -o pgvector-0.8.1.tar.gz

✅ 解释: 使用 curl 从 GitHub 下载 pgvector 的 v0.8.1 发布版本压缩包。 -o 指定输出文件名为 pgvector-0.8.1.tar.gz

步骤 2:解压源码包

tar -xzf pgvector-0.8.1.tar.gz

✅ 解释: tar 是 Linux/macOS 的归档工具,-x 表示解压,-z 表示解 gzip 压缩,-f 指定文件名。 解压后生成目录 pgvector-0.8.1/,包含 Makefile、C 源码和控制文件。

步骤 3:进入源码目录

cd pgvector-0.8.1

✅ 解释:进入解压后的目录,准备执行编译命令。 该目录下包含 Makefilevector.controlvector--0.8.1.sql 等关键文件,是 PostgreSQL 扩展的标准结构。

步骤 4:编译并安装扩展

sudo make install

✅ 解释: make install 会调用 PostgreSQL 的 pg_config 工具,自动定位你当前安装的 PostgreSQL 18 的安装路径,然后将 vector.sovector.control、SQL 脚本等文件复制到正确的 share/extension/ 目录下。 sudo 是必须的,因为目标目录通常属于 root 用户。

⚠️ 重要前提: 你必须确保 pg_config 命令在系统 PATH 中可用。 如果报错 pg_config: command not found,请执行以下命令,路径根据你的 PostgreSQL 安装位置调整。

export PATH="/Library/PostgreSQL/18/bin:$PATH"

步骤 5:重启 PostgreSQL 服务

  • 打开系统偏好设置‌:在应用程序列表中找到并打开“系统偏好设置”。
  • 进入 PostgreSQL 设置‌:在系统偏好设置中,找到并点击“PostgreSQL”图标。
  • 重启服务‌:在弹出的窗口中,您会看到一个“停止”或“启动”按钮。如果服务正在运行,点击“停止”;等待几秒后,再点击“启动”即可完成重启。

✅ 解释: 虽然 CREATE EXTENSION 不一定需要重启,但为确保所有会话都能识别新扩展,建议重启服务。 

步骤 6:创建扩展 —— 成功!

psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS vector;"

✅ 解释: 此时 PostgreSQL 已在 share/extension/ 目录下找到 vector.control 文件,扩展成功加载。 输出应为:CREATE EXTENSION

psql -U postgres -c "SELECT extname, extversion FROM pg_extension WHERE extname = 'vector';"

✅ 验证安装,输出:

extname | extversion
---------+------------
vector  | 0.8.1
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐