Postgres pgvector:搜索嵌入时出错

问题描述 投票:0回答:1

我有一个 postgres 数据库,其中有一个 pgvector

vector
列,其中包含我的嵌入。 插入对象不是问题。但是通过嵌入搜索会出错。

conn = psycopg.connect(autocommit=True)
model = SentenceTransformer('multi-qa-MiniLM-L6-cos-v1')
embedding = model.encode(query)
results = conn.execute("SELECT * FROM search ORDER BY embedding::vector(384) <-> %s LIMIT 5", (embedding,))
for result in results:
    print(result)

错误:

psycopg.ProgrammingError: cannot adapt type 'ndarray' using placeholder '%s'

postgresql psycopg3 pgvector
1个回答
0
投票

您必须确保将 numpy 数组转换为列表并将其作为字符串传递给查询:

conn.execute("SELECT * FROM search ORDER BY embedding::vector(384) <-> %s LIMIT 5", (f'{embedding.tolist()}',))
© www.soinside.com 2019 - 2024. All rights reserved.