pyvector-vexdb
pyvector support for vexdb
Supports SQLAlchemy,Psycopg 2
Run:
pip install pyvector-vexdb
And follow the instructions for your database library:
SQLAlchemy
映射向量列
from vexdb.sqlalchemy import FloatVector
class Item(Base):
embedding = mapped_column(FloatVector(3))
插入向量
item = Item(embedding=[1, 2, 3])
session.add(item)
session.commit()
查询近似向量 使用欧几里得距离操作符 l2_distance(<->)
session.scalar(select(Item).order_by(Item.embedding.l2_distance([3, 1, 2])).limit(5))
还支持以下操作符
negative_inner_product(<#>)consine_distance(<=>add(+)sub(-)
查询向量的欧几里得距离
session.scalar(select(Item.embedding.l2_distance([3, 1, 2])))
查询近似向量(使用欧几里得距离)
session.scalar(select(Item).filter(Item.embedding.l2_distance([3, 1, 2]) < 5))
函数调用
session.scalar(session.query(floatvector_combine([1.0,2.0,3.0], [4,5,6])))
还支持以下函数(函数说明请参考使用手册)
floatvector_accumfloatvector_cmpfloatvector_gtfloatvector_gefloatvector_nefloatvector_eqfloatvector_lefloatvector_ltfloatvector_spherical_distancefloatvector_negative_inner_productfloatvector_l2_squared_distancefloatvector_avgfloatvector_subfloatvector_addfloatvector_normfloatvector_dimsl2_distanceinner_productcosine_distance
近似最近邻索引
index = Index(
'my_index',
Item.embedding,
postgresql_using='hnsw',
postgresql_with={'m': 16, 'ef_construction': 64},
postgresql_ops={'embedding': 'floatvector_l2_ops'}
)
# or
index = Index(
'my_index',
Item.embedding,
postgresql_using='ivfflat',
postgresql_with={'ivf_nlist': 100},
postgresql_ops={'embedding': 'floatvector_l2_ops'}
)
索引构建还支持以下操作符
floatvector_l2_ops计算向量的欧几里得距离floatvector_ip_ops计算向量的内积floatvector_consine_ops计算向量的余弦距离
Psycopg 2
注册向量类型到连接或者游标
from vexdb.psycopg2 import register_vector
register_vector(conn)
创建带有向量类型的表
cur.execute('CREATE TABLE items (id bigint PRIMARY KEY, embedding floatvector(3))')
插入向量字段
embedding = np.array([1, 2, 3])
cur.execute('INSERT INTO items (embedding) VALUES (%s)', (embedding,))
获取最近邻向量
cur.execute('SELECT * FROM items ORDER BY embedding <-> %s LIMIT 5', (embedding,))
cur.fetchall()
floatvector_combine
cur.execute('select flaotvector_combine(%s,%s)', (embedding1, embeeding2,))
cur.fetch()
创建向量索引
cur.execute('CREATE INDEX ON items USING hnsw (embedding floatvector_l2_ops)')
# or
cur.execute('CREATE INDEX ON items USING ivfflat (embedding floatvector_l2_ops) WITH (ivf_nlist = 100)')
索引构建还支持以下操作符
floatvector_l2_ops计算向量的欧几里得距离floatvector_ip_ops计算向量的内积floatvector_consine_ops计算向量的余弦距离
Metadata
Release files for pyvector-vexdb 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyvector_vexdb-1.0.2.tar.gz | 8.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyvector_vexdb-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.5 kB
Release files / pyvector_vexdb-1.0.2.tar.gz
| Download URL | pyvector_vexdb-1.0.2.tar.gz |
|---|---|
| Size | 8.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7431661be40a232b59beacad0c66deb85f64a2b3ba91c5ae35f9ef821458bbd2
|
|
BLAKE2b-256 checksum How to use checksums |
1656719efd7e699246ae82c66516515df0b1cb942f3d88a30120fb0dd5f66b34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.6
|
Release files / pyvector_vexdb-1.0.2-py3-none-any.whl
| Download URL | pyvector_vexdb-1.0.2-py3-none-any.whl |
|---|---|
| Size | 7.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
47ba88fa821cf6dd6f536c7fd6998599ee0dd5163582be595f0cc6316b128cfb
|
|
BLAKE2b-256 checksum How to use checksums |
7b0cd856c66d3284ab94fac2ee006d0f07ebfd59198f12dbe427a99589b706c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.6
|