Ubuntu24.04中PostgreSQL启用pgvector遇vector.control文件缺失错误
解决Ubuntu 24.04下PostgreSQL+pgvector扩展文件缺失问题
问题根源
错误提示找不到/usr/share/postgresql/14/extension/vector.control,且pg_available_extensions列表中没有pgvector,核心原因是pgvector未安装到当前正在使用的PostgreSQL版本对应的目录中。Ubuntu 24.04默认预装的PostgreSQL版本是16,若你安装的pgvector适配的是16版本,但运行的数据库实例是14版本,就会触发该错误。
修复步骤
1. 确认当前PostgreSQL版本
先明确你实际使用的PostgreSQL版本:
psql --version
或进入数据库后执行:
SELECT version();
2. 重装对应版本的pgvector
如果你的PostgreSQL是16版本(Ubuntu24.04默认),按以下操作执行:
- 卸载可能装错的版本(例如适配14的pgvector):
sudo apt remove --purge postgresql-14-pgvector
- 添加pgvector官方源(未添加过的话):
sudo apt install curl ca-certificates curl https://packages.timescale.com/repos/apt/ubuntu/timescale.pgp | sudo gpg --dearmor -o /usr/share/keyrings/timescale-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/timescale-keyring.gpg] https://packages.timescale.com/pgvector/ubuntu/ jammy main" | sudo tee /etc/apt/sources.list.d/pgvector.list sudo apt update
- 安装适配当前PostgreSQL版本的pgvector,以16版本为例:
sudo apt install postgresql-16-pgvector
3. 验证安装结果
进入数据库执行:
SELECT * FROM pg_available_extensions WHERE name = 'vector';
能查询到结果说明安装正确,再执行创建扩展的命令:
CREATE EXTENSION IF NOT EXISTS vector;
此时应无报错。
4. 检查Jupyter的数据库连接配置
若机器上同时安装了多个PostgreSQL版本,需确保Jupyter代码连接的是已安装pgvector的版本。不同版本默认端口不同(例如14版本默认5432,16版本可能为5433),可修改连接代码指定端口:
conn = await psycopg.AsyncConnection.connect( dbname='pgvector_example', autocommit=True, port=5433 # 替换为对应版本的实际端口 )
额外排查项
- 若你是通过源码编译安装pgvector,编译时需指定对应PostgreSQL的配置路径,例如:
make PG_CONFIG=/usr/lib/postgresql/16/bin/pg_config sudo make install PG_CONFIG=/usr/lib/postgresql/16/bin/pg_config
- 安装完成后重启PostgreSQL服务:
sudo systemctl restart postgresql
内容的提问来源于stack exchange,提问作者Ayush J.
相关产品推荐
相关产品推荐

