Skip to content

Commit c10799c

Browse files
committed
Added support for Vector class to Psycopg 2 [skip ci]
1 parent 32b09c0 commit c10799c

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

pgvector/psycopg2/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from .register import register_vector
2-
from ..utils import HalfVector, SparseVector
2+
from ..utils import HalfVector, SparseVector, Vector
33

44
__all__ = [
55
'register_vector',
6+
'Vector',
67
'HalfVector',
78
'SparseVector'
89
]

pgvector/psycopg2/vector.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,4 @@ def register_vector_info(oid, array_oid, scope):
2424
register_type(vectorarray, scope)
2525

2626
register_adapter(np.ndarray, VectorAdapter)
27+
register_adapter(Vector, VectorAdapter)

tests/test_psycopg2.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import numpy as np
2-
from pgvector.psycopg2 import register_vector, HalfVector, SparseVector
2+
from pgvector.psycopg2 import register_vector, Vector, HalfVector, SparseVector
33
import psycopg2
44
from psycopg2.extras import DictCursor, RealDictCursor, NamedTupleCursor
55
from psycopg2.pool import ThreadedConnectionPool
@@ -29,6 +29,16 @@ def test_vector(self):
2929
assert res[0][0].dtype == np.float32
3030
assert res[1][0] is None
3131

32+
def test_vector_class(self):
33+
embedding = Vector([1.5, 2, 3])
34+
cur.execute('INSERT INTO psycopg2_items (embedding) VALUES (%s), (NULL)', (embedding,))
35+
36+
cur.execute('SELECT embedding FROM psycopg2_items ORDER BY id')
37+
res = cur.fetchall()
38+
assert np.array_equal(res[0][0], embedding.to_numpy())
39+
assert res[0][0].dtype == np.float32
40+
assert res[1][0] is None
41+
3242
def test_halfvec(self):
3343
embedding = [1.5, 2, 3]
3444
cur.execute('INSERT INTO psycopg2_items (half_embedding) VALUES (%s), (NULL)', (embedding,))

0 commit comments

Comments
 (0)