使用Langchain与pgvector时PostgreSQL报vector类型不存在错误
使用pgvector+Langchain在PostgreSQL嵌入文档时遇vector类型不存在错误
错误信息
执行表创建语句时触发如下错误:
(psycopg2.errors.UndefinedObject) type "vector" does not exist LINE 4: embedding VECTOR(1536), ^ [SQL: CREATE TABLE langchain_pg_embedding ( collection_id UUID, embedding VECTOR(1536), document VARCHAR, cmetadata JSON, custom_id VARCHAR, uuid UUID NOT NULL, PRIMARY KEY (uuid), FOREIGN KEY(collection_id) REFERENCES langchain_pg_collection (uuid) ON DELETE CASCADE ) ]
环境详情
- pgvector Docker镜像:
ankane/pgvector:v0.4.1 - Python版本:
3.10.6,psycopg2版本:2.9.6,pgvector Python库版本:0.1.6
已安装PostgreSQL扩展列表
Name | Version | Schema | Description ---------+---------+------------+-------------------------------------------- plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language vector | 0.4.1 | public | vector data type and ivfflat access method
已尝试的无效解决方法
- 重新安装带pgvector扩展的PostgreSQL Docker镜像
- 按官方说明手动安装扩展
- 执行以下SQL语句手动安装扩展:
CREATE EXTENSION IF NOT EXISTS vector SCHEMA public VERSION "0.4.1";
可行解决方向
确保数据库搜索路径包含public schema
Langchain连接PostgreSQL时,需确认连接配置中包含publicschema的搜索路径。可在连接字符串中添加options='-c search_path=public',或先执行SET search_path TO public;再执行表创建语句。确认扩展安装在目标数据库中
切换到Langchain实际使用的数据库(执行\c your_db_name),再重新执行CREATE EXTENSION vector;,避免扩展安装到了默认postgres库而非业务库。升级pgvector Python库
当前使用的0.1.6版本较旧,升级到与pgvector扩展0.4.1兼容的新版本(如0.2.0及以上),确保客户端与服务端版本匹配。核对数据库连接配置
检查Langchain的连接字符串,确认连接的是已安装vector扩展的数据库实例,避免连接到未配置的数据库。
内容的提问来源于stack exchange,提问作者Rijoanul Hasan Shanto
相关产品推荐
相关产品推荐

