diff options
Diffstat (limited to '.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info')
6 files changed, 662 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/INSTALLER b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/LICENSE.txt b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/LICENSE.txt new file mode 100644 index 00000000..d205f4ee --- /dev/null +++ b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2021-2024 Andrew Kane + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/METADATA b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/METADATA new file mode 100644 index 00000000..c2f6dda8 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/METADATA @@ -0,0 +1,554 @@ +Metadata-Version: 2.1 +Name: pgvector +Version: 0.3.6 +Summary: pgvector support for Python +Author-email: Andrew Kane <andrew@ankane.org> +License: MIT +Project-URL: Homepage, https://github.com/pgvector/pgvector-python +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +License-File: LICENSE.txt +Requires-Dist: numpy + +# pgvector-python + +[pgvector](https://github.com/pgvector/pgvector) support for Python + +Supports [Django](https://github.com/django/django), [SQLAlchemy](https://github.com/sqlalchemy/sqlalchemy), [SQLModel](https://github.com/tiangolo/sqlmodel), [Psycopg 3](https://github.com/psycopg/psycopg), [Psycopg 2](https://github.com/psycopg/psycopg2), [asyncpg](https://github.com/MagicStack/asyncpg), and [Peewee](https://github.com/coleifer/peewee) + +[](https://github.com/pgvector/pgvector-python/actions) + +## Installation + +Run: + +```sh +pip install pgvector +``` + +And follow the instructions for your database library: + +- [Django](#django) +- [SQLAlchemy](#sqlalchemy) +- [SQLModel](#sqlmodel) +- [Psycopg 3](#psycopg-3) +- [Psycopg 2](#psycopg-2) +- [asyncpg](#asyncpg) +- [Peewee](#peewee) + +Or check out some examples: + +- [Embeddings](https://github.com/pgvector/pgvector-python/blob/master/examples/openai/example.py) with OpenAI +- [Binary embeddings](https://github.com/pgvector/pgvector-python/blob/master/examples/cohere/example.py) with Cohere +- [Sentence embeddings](https://github.com/pgvector/pgvector-python/blob/master/examples/sentence_transformers/example.py) with SentenceTransformers +- [Hybrid search](https://github.com/pgvector/pgvector-python/blob/master/examples/hybrid_search/rrf.py) with SentenceTransformers (Reciprocal Rank Fusion) +- [Hybrid search](https://github.com/pgvector/pgvector-python/blob/master/examples/hybrid_search/cross_encoder.py) with SentenceTransformers (cross-encoder) +- [Sparse search](https://github.com/pgvector/pgvector-python/blob/master/examples/sparse_search/example.py) with Transformers +- [Late interaction search](https://github.com/pgvector/pgvector-python/blob/master/examples/colbert/exact.py) with ColBERT +- [Image search](https://github.com/pgvector/pgvector-python/blob/master/examples/image_search/example.py) with PyTorch +- [Image search](https://github.com/pgvector/pgvector-python/blob/master/examples/imagehash/example.py) with perceptual hashing +- [Morgan fingerprints](https://github.com/pgvector/pgvector-python/blob/master/examples/rdkit/example.py) with RDKit +- [Topic modeling](https://github.com/pgvector/pgvector-python/blob/master/examples/gensim/example.py) with Gensim +- [Implicit feedback recommendations](https://github.com/pgvector/pgvector-python/blob/master/examples/implicit/example.py) with Implicit +- [Explicit feedback recommendations](https://github.com/pgvector/pgvector-python/blob/master/examples/surprise/example.py) with Surprise +- [Recommendations](https://github.com/pgvector/pgvector-python/blob/master/examples/lightfm/example.py) with LightFM +- [Horizontal scaling](https://github.com/pgvector/pgvector-python/blob/master/examples/citus/example.py) with Citus +- [Bulk loading](https://github.com/pgvector/pgvector-python/blob/master/examples/loading/example.py) with `COPY` + +## Django + +Create a migration to enable the extension + +```python +from pgvector.django import VectorExtension + +class Migration(migrations.Migration): + operations = [ + VectorExtension() + ] +``` + +Add a vector field to your model + +```python +from pgvector.django import VectorField + +class Item(models.Model): + embedding = VectorField(dimensions=3) +``` + +Also supports `HalfVectorField`, `BitField`, and `SparseVectorField` + +Insert a vector + +```python +item = Item(embedding=[1, 2, 3]) +item.save() +``` + +Get the nearest neighbors to a vector + +```python +from pgvector.django import L2Distance + +Item.objects.order_by(L2Distance('embedding', [3, 1, 2]))[:5] +``` + +Also supports `MaxInnerProduct`, `CosineDistance`, `L1Distance`, `HammingDistance`, and `JaccardDistance` + +Get the distance + +```python +Item.objects.annotate(distance=L2Distance('embedding', [3, 1, 2])) +``` + +Get items within a certain distance + +```python +Item.objects.alias(distance=L2Distance('embedding', [3, 1, 2])).filter(distance__lt=5) +``` + +Average vectors + +```python +from django.db.models import Avg + +Item.objects.aggregate(Avg('embedding')) +``` + +Also supports `Sum` + +Add an approximate index + +```python +from pgvector.django import HnswIndex, IvfflatIndex + +class Item(models.Model): + class Meta: + indexes = [ + HnswIndex( + name='my_index', + fields=['embedding'], + m=16, + ef_construction=64, + opclasses=['vector_l2_ops'] + ), + # or + IvfflatIndex( + name='my_index', + fields=['embedding'], + lists=100, + opclasses=['vector_l2_ops'] + ) + ] +``` + +Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distance + +## SQLAlchemy + +Enable the extension + +```python +session.execute(text('CREATE EXTENSION IF NOT EXISTS vector')) +``` + +Add a vector column + +```python +from pgvector.sqlalchemy import Vector + +class Item(Base): + embedding = mapped_column(Vector(3)) +``` + +Also supports `HALFVEC`, `BIT`, and `SPARSEVEC` + +Insert a vector + +```python +item = Item(embedding=[1, 2, 3]) +session.add(item) +session.commit() +``` + +Get the nearest neighbors to a vector + +```python +session.scalars(select(Item).order_by(Item.embedding.l2_distance([3, 1, 2])).limit(5)) +``` + +Also supports `max_inner_product`, `cosine_distance`, `l1_distance`, `hamming_distance`, and `jaccard_distance` + +Get the distance + +```python +session.scalars(select(Item.embedding.l2_distance([3, 1, 2]))) +``` + +Get items within a certain distance + +```python +session.scalars(select(Item).filter(Item.embedding.l2_distance([3, 1, 2]) < 5)) +``` + +Average vectors + +```python +from pgvector.sqlalchemy import avg + +session.scalars(select(avg(Item.embedding))).first() +``` + +Also supports `sum` + +Add an approximate index + +```python +index = Index( + 'my_index', + Item.embedding, + postgresql_using='hnsw', + postgresql_with={'m': 16, 'ef_construction': 64}, + postgresql_ops={'embedding': 'vector_l2_ops'} +) +# or +index = Index( + 'my_index', + Item.embedding, + postgresql_using='ivfflat', + postgresql_with={'lists': 100}, + postgresql_ops={'embedding': 'vector_l2_ops'} +) + +index.create(engine) +``` + +Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distance + +## SQLModel + +Enable the extension + +```python +session.exec(text('CREATE EXTENSION IF NOT EXISTS vector')) +``` + +Add a vector column + +```python +from pgvector.sqlalchemy import Vector +from sqlalchemy import Column + +class Item(SQLModel, table=True): + embedding: Any = Field(sa_column=Column(Vector(3))) +``` + +Also supports `HALFVEC`, `BIT`, and `SPARSEVEC` + +Insert a vector + +```python +item = Item(embedding=[1, 2, 3]) +session.add(item) +session.commit() +``` + +Get the nearest neighbors to a vector + +```python +session.exec(select(Item).order_by(Item.embedding.l2_distance([3, 1, 2])).limit(5)) +``` + +Also supports `max_inner_product`, `cosine_distance`, `l1_distance`, `hamming_distance`, and `jaccard_distance` + +Get the distance + +```python +session.exec(select(Item.embedding.l2_distance([3, 1, 2]))) +``` + +Get items within a certain distance + +```python +session.exec(select(Item).filter(Item.embedding.l2_distance([3, 1, 2]) < 5)) +``` + +Average vectors + +```python +from pgvector.sqlalchemy import avg + +session.exec(select(avg(Item.embedding))).first() +``` + +Also supports `sum` + +Add an approximate index + +```python +from sqlalchemy import Index + +index = Index( + 'my_index', + Item.embedding, + postgresql_using='hnsw', + postgresql_with={'m': 16, 'ef_construction': 64}, + postgresql_ops={'embedding': 'vector_l2_ops'} +) +# or +index = Index( + 'my_index', + Item.embedding, + postgresql_using='ivfflat', + postgresql_with={'lists': 100}, + postgresql_ops={'embedding': 'vector_l2_ops'} +) + +index.create(engine) +``` + +Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distance + +## Psycopg 3 + +Enable the extension + +```python +conn.execute('CREATE EXTENSION IF NOT EXISTS vector') +``` + +Register the vector type with your connection + +```python +from pgvector.psycopg import register_vector + +register_vector(conn) +``` + +For [async connections](https://www.psycopg.org/psycopg3/docs/advanced/async.html), use + +```python +from pgvector.psycopg import register_vector_async + +await register_vector_async(conn) +``` + +Create a table + +```python +conn.execute('CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3))') +``` + +Insert a vector + +```python +embedding = np.array([1, 2, 3]) +conn.execute('INSERT INTO items (embedding) VALUES (%s)', (embedding,)) +``` + +Get the nearest neighbors to a vector + +```python +conn.execute('SELECT * FROM items ORDER BY embedding <-> %s LIMIT 5', (embedding,)).fetchall() +``` + +Add an approximate index + +```python +conn.execute('CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)') +# or +conn.execute('CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100)') +``` + +Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distance + +## Psycopg 2 + +Enable the extension + +```python +cur = conn.cursor() +cur.execute('CREATE EXTENSION IF NOT EXISTS vector') +``` + +Register the vector type with your connection or cursor + +```python +from pgvector.psycopg2 import register_vector + +register_vector(conn) +``` + +Create a table + +```python +cur.execute('CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3))') +``` + +Insert a vector + +```python +embedding = np.array([1, 2, 3]) +cur.execute('INSERT INTO items (embedding) VALUES (%s)', (embedding,)) +``` + +Get the nearest neighbors to a vector + +```python +cur.execute('SELECT * FROM items ORDER BY embedding <-> %s LIMIT 5', (embedding,)) +cur.fetchall() +``` + +Add an approximate index + +```python +cur.execute('CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)') +# or +cur.execute('CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100)') +``` + +Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distance + +## asyncpg + +Enable the extension + +```python +await conn.execute('CREATE EXTENSION IF NOT EXISTS vector') +``` + +Register the vector type with your connection + +```python +from pgvector.asyncpg import register_vector + +await register_vector(conn) +``` + +or your pool + +```python +async def init(conn): + await register_vector(conn) + +pool = await asyncpg.create_pool(..., init=init) +``` + +Create a table + +```python +await conn.execute('CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3))') +``` + +Insert a vector + +```python +embedding = np.array([1, 2, 3]) +await conn.execute('INSERT INTO items (embedding) VALUES ($1)', embedding) +``` + +Get the nearest neighbors to a vector + +```python +await conn.fetch('SELECT * FROM items ORDER BY embedding <-> $1 LIMIT 5', embedding) +``` + +Add an approximate index + +```python +await conn.execute('CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)') +# or +await conn.execute('CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100)') +``` + +Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distance + +## Peewee + +Add a vector column + +```python +from pgvector.peewee import VectorField + +class Item(BaseModel): + embedding = VectorField(dimensions=3) +``` + +Also supports `HalfVectorField`, `FixedBitField`, and `SparseVectorField` + +Insert a vector + +```python +item = Item.create(embedding=[1, 2, 3]) +``` + +Get the nearest neighbors to a vector + +```python +Item.select().order_by(Item.embedding.l2_distance([3, 1, 2])).limit(5) +``` + +Also supports `max_inner_product`, `cosine_distance`, `l1_distance`, `hamming_distance`, and `jaccard_distance` + +Get the distance + +```python +Item.select(Item.embedding.l2_distance([3, 1, 2]).alias('distance')) +``` + +Get items within a certain distance + +```python +Item.select().where(Item.embedding.l2_distance([3, 1, 2]) < 5) +``` + +Average vectors + +```python +from peewee import fn + +Item.select(fn.avg(Item.embedding).coerce(True)).scalar() +``` + +Also supports `sum` + +Add an approximate index + +```python +Item.add_index('embedding vector_l2_ops', using='hnsw') +``` + +Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distance + +## History + +View the [changelog](https://github.com/pgvector/pgvector-python/blob/master/CHANGELOG.md) + +## Contributing + +Everyone is encouraged to help improve this project. Here are a few ways you can help: + +- [Report bugs](https://github.com/pgvector/pgvector-python/issues) +- Fix bugs and [submit pull requests](https://github.com/pgvector/pgvector-python/pulls) +- Write, clarify, or fix documentation +- Suggest or add new features + +To get started with development: + +```sh +git clone https://github.com/pgvector/pgvector-python.git +cd pgvector-python +pip install -r requirements.txt +createdb pgvector_python_test +pytest +``` + +To run an example: + +```sh +cd examples/loading +pip install -r requirements.txt +createdb pgvector_example +python3 example.py +``` diff --git a/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/RECORD b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/RECORD new file mode 100644 index 00000000..701b01f5 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/RECORD @@ -0,0 +1,80 @@ +pgvector-0.3.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+pgvector-0.3.6.dist-info/LICENSE.txt,sha256=kzzb1DKtBwp3Pn5-R7YEUm8uH1qHA-D2tjT67Bn_b6M,1083
+pgvector-0.3.6.dist-info/METADATA,sha256=4hStt9_TUKUIPqjemR8MPn6hmMcmsHDLXf3DYz7M5hE,13221
+pgvector-0.3.6.dist-info/RECORD,,
+pgvector-0.3.6.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
+pgvector-0.3.6.dist-info/top_level.txt,sha256=xGGaXFRcSRHEhn0HS1FN_UjCWr1G-WSPgxx4a0NJc0M,9
+pgvector/asyncpg/__init__.py,sha256=nPEfolmn6hf2gmonE1sCne051hd28biWhlSRimDy0AI,180
+pgvector/asyncpg/__pycache__/__init__.cpython-312.pyc,,
+pgvector/asyncpg/__pycache__/register.cpython-312.pyc,,
+pgvector/asyncpg/register.py,sha256=33xZD3SZjkDUFcEuVvVVQPZLEkpBVZZE2iZeWbLa1lc,835
+pgvector/django/__init__.py,sha256=omSXhf85Nazw2e1h2HzgxphL-MNTZUg7A_hwQ6nXBCo,701
+pgvector/django/__pycache__/__init__.cpython-312.pyc,,
+pgvector/django/__pycache__/bit.cpython-312.pyc,,
+pgvector/django/__pycache__/extensions.cpython-312.pyc,,
+pgvector/django/__pycache__/functions.cpython-312.pyc,,
+pgvector/django/__pycache__/halfvec.cpython-312.pyc,,
+pgvector/django/__pycache__/indexes.cpython-312.pyc,,
+pgvector/django/__pycache__/sparsevec.cpython-312.pyc,,
+pgvector/django/__pycache__/vector.cpython-312.pyc,,
+pgvector/django/bit.py,sha256=QjWHD4FhsveLQ8r3Q8SYDoe-zIYnhHR0W7HDLGx87Dc,935
+pgvector/django/extensions.py,sha256=JAtn_FCIST0DWJtDPZAQ-MygbAkKEiL0ZsA2QbYITRo,158
+pgvector/django/functions.py,sha256=QC6tiWErauN7EtbYqISiwJcpSGnxEW9qOhUBmwmGeoY,1364
+pgvector/django/halfvec.py,sha256=XNr54sddUquK3yDOfJT8BJHbRrEGjN7bwAnRKi_rOgM,1825
+pgvector/django/indexes.py,sha256=purT3nhq_CjHWUe-c3loCyK1XrWtZJ8pIq2wl975aSY,1440
+pgvector/django/sparsevec.py,sha256=KJlGF_VAxSV1eSOHPzfT4uNhCGDMBqjjANJPq2E7osE,1675
+pgvector/django/vector.py,sha256=xASXG7KGr65HsvsLYYrJfwv6azbDOdPcdmw9QLOHayA,2215
+pgvector/peewee/__init__.py,sha256=tANx57_gHFXgJLnr7GhD5j_xhsCosZ4GWBpdG76FNnY,326
+pgvector/peewee/__pycache__/__init__.cpython-312.pyc,,
+pgvector/peewee/__pycache__/bit.cpython-312.pyc,,
+pgvector/peewee/__pycache__/halfvec.cpython-312.pyc,,
+pgvector/peewee/__pycache__/sparsevec.cpython-312.pyc,,
+pgvector/peewee/__pycache__/vector.cpython-312.pyc,,
+pgvector/peewee/bit.py,sha256=ZK6_RDDj46aAfYyxgXrwXYmHfPZpp5P5aA-CLt0M61Q,619
+pgvector/peewee/halfvec.py,sha256=NY3Wz79QbkKJdmQ_ZrkAqayQutQaO3iR5JBZ00sbMAE,969
+pgvector/peewee/sparsevec.py,sha256=SRDkw1_aWTVHOAXz3LYPMtDvIVlk5ByPcbDKkg1kR_0,981
+pgvector/peewee/vector.py,sha256=HXPj77K70jU7Vk33TVQLkDrp3995a_wygXkjyszDzTM,948
+pgvector/psycopg/__init__.py,sha256=ggPIFt-dlT9T4vCbzLfxReYqdUyFUx2n3J0p2kRZvek,248
+pgvector/psycopg/__pycache__/__init__.cpython-312.pyc,,
+pgvector/psycopg/__pycache__/bit.cpython-312.pyc,,
+pgvector/psycopg/__pycache__/halfvec.cpython-312.pyc,,
+pgvector/psycopg/__pycache__/register.cpython-312.pyc,,
+pgvector/psycopg/__pycache__/sparsevec.cpython-312.pyc,,
+pgvector/psycopg/__pycache__/vector.cpython-312.pyc,,
+pgvector/psycopg/bit.py,sha256=ad9XneEmlCMEZi-1HN41mrTGogJmINtS7fy_I9Dbem8,712
+pgvector/psycopg/halfvec.py,sha256=A_uVQhXzcDsiK41rB5gmxwqLp7Fjpw-YJYPTED5Va5M,1354
+pgvector/psycopg/register.py,sha256=Ueuc9YKdhSI8Hd2JZIBrGHqp2i5sVW9DIKgS-Xo7Yyk,1107
+pgvector/psycopg/sparsevec.py,sha256=jaOEpcMPknCONMDNmWkQDLcvttemS8aNZGwfbEqHxPQ,1390
+pgvector/psycopg/vector.py,sha256=rUTcBJmyEtcideZ711H8kjVFfFRXLETmRMlGpOCALkA,1521
+pgvector/psycopg2/__init__.py,sha256=ThM3WfiOQfXHv-EY1DbOUNLJkR2RsXmxQzJNoynT4dw,158
+pgvector/psycopg2/__pycache__/__init__.cpython-312.pyc,,
+pgvector/psycopg2/__pycache__/halfvec.cpython-312.pyc,,
+pgvector/psycopg2/__pycache__/register.cpython-312.pyc,,
+pgvector/psycopg2/__pycache__/sparsevec.cpython-312.pyc,,
+pgvector/psycopg2/__pycache__/vector.cpython-312.pyc,,
+pgvector/psycopg2/halfvec.py,sha256=BNeSRo0HAftufzsEvP_PbFDe0hRH6qN08FpTe9ojZKg,715
+pgvector/psycopg2/register.py,sha256=MkYCrUQ-Ngm-X2hk3RuHtlx7BvnVIzTtzTtjU2PQHSk,1367
+pgvector/psycopg2/sparsevec.py,sha256=hj1GJXpQsdHuY3DYJcSaW3qb4CONNGv0IuXrBdRoRKA,747
+pgvector/psycopg2/vector.py,sha256=bQZRhjUR0Keg3ZlXyBSt-YbFdvd-jP6Q1HyWGb858OM,710
+pgvector/sqlalchemy/__init__.py,sha256=CDMSwvIt4mwpuuSMduq3IyvgEp6RLToQClkqOElFY7o,369
+pgvector/sqlalchemy/__pycache__/__init__.cpython-312.pyc,,
+pgvector/sqlalchemy/__pycache__/bit.cpython-312.pyc,,
+pgvector/sqlalchemy/__pycache__/functions.cpython-312.pyc,,
+pgvector/sqlalchemy/__pycache__/halfvec.cpython-312.pyc,,
+pgvector/sqlalchemy/__pycache__/sparsevec.cpython-312.pyc,,
+pgvector/sqlalchemy/__pycache__/vector.cpython-312.pyc,,
+pgvector/sqlalchemy/bit.py,sha256=a-I24dwAR-Uc_vxj32MahDezjQVtUvIoMdPuYpztLIA,722
+pgvector/sqlalchemy/functions.py,sha256=LCxFWiTH-pM4XE2R5QRUg3vJxsxB-LNCGkqCEU6JOfk,272
+pgvector/sqlalchemy/halfvec.py,sha256=jlg3BuwvMrqSuDYJV0sjECEq_tq2n0IjgwtMz-grDak,1538
+pgvector/sqlalchemy/sparsevec.py,sha256=SJPSs0G07Bo8JTzmlO3a0LsYimyYmONynlRQ5Nndxss,1556
+pgvector/sqlalchemy/vector.py,sha256=dw7znnHjIQPblCzWD-uJmVY3HBGDOmw98uB1qkFBmTo,1517
+pgvector/utils/__init__.py,sha256=2qAb4VM3LcsnWwhFvRosnI4QS0KJnTDrY0aoRSXXIcg,193
+pgvector/utils/__pycache__/__init__.cpython-312.pyc,,
+pgvector/utils/__pycache__/bit.cpython-312.pyc,,
+pgvector/utils/__pycache__/halfvec.cpython-312.pyc,,
+pgvector/utils/__pycache__/sparsevec.cpython-312.pyc,,
+pgvector/utils/__pycache__/vector.cpython-312.pyc,,
+pgvector/utils/bit.py,sha256=YMcmqSjdZEhxC4HhSpkCgyYG26WUjM2Qv8JjI2Wu_Ts,1711
+pgvector/utils/halfvec.py,sha256=1yAmQ174UGFIWijfvegVWrr5sjltRAxMUMLmis-9BGc,2013
+pgvector/utils/sparsevec.py,sha256=uo1YfKx35iYuBPC9V3dDHWoAin042q6klOWBgY_Cnhc,4622
+pgvector/utils/vector.py,sha256=upyEMEEJF-o995GAk3UGhDPF9B0Ouv3zHWVZK54M4q8,2079
diff --git a/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/WHEEL b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/WHEEL new file mode 100644 index 00000000..da25d7b4 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.2.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/top_level.txt b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/top_level.txt new file mode 100644 index 00000000..728e60fc --- /dev/null +++ b/.venv/lib/python3.12/site-packages/pgvector-0.3.6.dist-info/top_level.txt @@ -0,0 +1 @@ +pgvector |