diff --git a/api/core/rag/datasource/vdb/pgvecto_rs/pgvecto_rs.py b/api/core/rag/datasource/vdb/pgvecto_rs/pgvecto_rs.py index 82bdc5d4b9..a48224070f 100644 --- a/api/core/rag/datasource/vdb/pgvecto_rs/pgvecto_rs.py +++ b/api/core/rag/datasource/vdb/pgvecto_rs/pgvecto_rs.py @@ -4,7 +4,7 @@ from typing import Any from uuid import UUID, uuid4 from numpy import ndarray -from pgvecto_rs.sqlalchemy import Vector +from pgvecto_rs.sqlalchemy import VECTOR from pydantic import BaseModel, model_validator from sqlalchemy import Float, String, create_engine, insert, select, text from sqlalchemy import text as sql_text @@ -67,7 +67,7 @@ class PGVectoRS(BaseVector): ) text: Mapped[str] = mapped_column(String) meta: Mapped[dict] = mapped_column(postgresql.JSONB) - vector: Mapped[ndarray] = mapped_column(Vector(dim)) + vector: Mapped[ndarray] = mapped_column(VECTOR(dim)) self._table = _Table self._distance_op = "<=>" diff --git a/api/core/rag/datasource/vdb/relyt/relyt_vector.py b/api/core/rag/datasource/vdb/relyt/relyt_vector.py index 2e0bd6f303..63ad0682d7 100644 --- a/api/core/rag/datasource/vdb/relyt/relyt_vector.py +++ b/api/core/rag/datasource/vdb/relyt/relyt_vector.py @@ -105,7 +105,7 @@ class RelytVector(BaseVector): redis_client.set(collection_exist_cache_key, 1, ex=3600) def add_texts(self, documents: list[Document], embeddings: list[list[float]], **kwargs): - from pgvecto_rs.sqlalchemy import Vector + from pgvecto_rs.sqlalchemy import VECTOR ids = [str(uuid.uuid1()) for _ in documents] metadatas = [d.metadata for d in documents] @@ -118,7 +118,7 @@ class RelytVector(BaseVector): self._collection_name, Base.metadata, Column("id", TEXT, primary_key=True), - Column("embedding", Vector(len(embeddings[0]))), + Column("embedding", VECTOR(len(embeddings[0]))), Column("document", String, nullable=True), Column("metadata", JSON, nullable=True), extend_existing=True, @@ -169,7 +169,7 @@ class RelytVector(BaseVector): Args: ids: List of ids to delete. """ - from pgvecto_rs.sqlalchemy import Vector + from pgvecto_rs.sqlalchemy import VECTOR if ids is None: raise ValueError("No ids provided to delete.") @@ -179,7 +179,7 @@ class RelytVector(BaseVector): self._collection_name, Base.metadata, Column("id", TEXT, primary_key=True), - Column("embedding", Vector(self.embedding_dimension)), + Column("embedding", VECTOR(self.embedding_dimension)), Column("document", String, nullable=True), Column("metadata", JSON, nullable=True), extend_existing=True, diff --git a/api/poetry.lock b/api/poetry.lock index 3356d11f78..b30cc8ce68 100644 --- a/api/poetry.lock +++ b/api/poetry.lock @@ -5619,23 +5619,25 @@ files = [ [[package]] name = "pgvecto-rs" -version = "0.1.4" +version = "0.2.1" description = "Python binding for pgvecto.rs" optional = false -python-versions = ">=3.8" +python-versions = "<3.13,>=3.8" files = [ - {file = "pgvecto_rs-0.1.4-py3-none-any.whl", hash = "sha256:9b08a9e612f0cd65d1cc6e17a35b9bb5956187e0e3981bf6e997ff9e615c6116"}, - {file = "pgvecto_rs-0.1.4.tar.gz", hash = "sha256:078b96cff1f3d417169ad46cacef7fc4d644978bbd6725a5c24c0675de5030ab"}, + {file = "pgvecto_rs-0.2.1-py3-none-any.whl", hash = "sha256:b3ee2c465219469ad537b3efea2916477c6c576b3d6fd4298980d0733d12bb27"}, + {file = "pgvecto_rs-0.2.1.tar.gz", hash = "sha256:07046eaad2c4f75745f76de9ba483541909f1c595aced8d3434224a4f933daca"}, ] [package.dependencies] numpy = ">=1.23" +SQLAlchemy = {version = ">=2.0.23", optional = true, markers = "extra == \"sqlalchemy\""} toml = ">=0.10" [package.extras] +django = ["Django (>=4.2)"] psycopg3 = ["psycopg[binary] (>=3.1.12)"] sdk = ["openai (>=1.2.2)", "pgvecto_rs[sqlalchemy]"] -sqlalchemy = ["SQLAlchemy (>=2.0.23)", "pgvecto_rs[psycopg3]"] +sqlalchemy = ["SQLAlchemy (>=2.0.23)"] [[package]] name = "pgvector" @@ -6131,10 +6133,7 @@ files = [ [package.dependencies] annotated-types = ">=0.4.0" pydantic-core = "2.20.1" -typing-extensions = [ - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, - {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, -] +typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} [package.extras] email = ["email-validator (>=2.0.0)"] @@ -9501,5 +9500,5 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.0" -python-versions = "^3.10" -content-hash = "ca55e4a4bb354fe969cc73c823557525c7598b0375e8791fcd77febc59e03b96" +python-versions = ">=3.10,<3.13" +content-hash = "50acbb78f2a273dfa8683d9d292596e89d13a420c6ecb1afad331f2c38dd1423" diff --git a/api/pyproject.toml b/api/pyproject.toml index 112ea22da8..c2c1d56403 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -154,7 +154,7 @@ pydantic_extra_types = "~2.9.0" pydub = "~0.25.1" pyjwt = "~2.8.0" pypdfium2 = "~4.17.0" -python = "^3.10" +python = ">=3.10,<3.13" python-docx = "~1.1.0" python-dotenv = "1.0.0" pyyaml = "~6.0.1" @@ -204,7 +204,7 @@ cloudscraper = "1.2.71" [tool.poetry.group.vdb.dependencies] chromadb = "0.5.1" oracledb = "~2.2.1" -pgvecto-rs = "0.1.4" +pgvecto-rs = { version = "~0.2.1", extras = ['sqlalchemy'] } pgvector = "0.2.5" pymilvus = "~2.4.4" pymysql = "1.1.1" diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index 83a627e21b..1caf244fb1 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -418,7 +418,7 @@ services: # pgvecto-rs vector store pgvecto-rs: - image: tensorchord/pgvecto-rs:pg16-v0.2.0 + image: tensorchord/pgvecto-rs:pg16-v0.3.0 profiles: - pgvecto-rs restart: always