我有一个 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'
您必须确保将 numpy 数组转换为列表并将其作为字符串传递给查询:
conn.execute("SELECT * FROM search ORDER BY embedding::vector(384) <-> %s LIMIT 5", (f'{embedding.tolist()}',))