feat(vector): add direct pgvector adapter
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
"""Central construction of deployment-specific adapters."""
|
||||
|
||||
from tht.adapters.dwh import PostgresDwhAdapter, ThothRestDwhAdapter
|
||||
from tht.adapters.vector import LegacyDirectVectorStore, ThothHttpVectorStore
|
||||
from tht.adapters.vector import PgVectorStore, ThothHttpVectorStore
|
||||
from tht.config import Config, ConfigError
|
||||
from tht.db.connection import make_engine
|
||||
from tht.ports.dwh import DwhAdapter
|
||||
@@ -32,13 +32,13 @@ def build_vector_store(cfg: Config, *, require_write: bool = False) -> VectorSto
|
||||
|
||||
match resource.type:
|
||||
case "pgvector_direct":
|
||||
if require_write:
|
||||
reader = resource.reader or resource.connection
|
||||
if require_write and resource.writer is None:
|
||||
raise ConfigError("Vector writer non configurato per pgvector_direct")
|
||||
dim = cfg.embeddings.dim if cfg.embeddings is not None else 768
|
||||
return LegacyDirectVectorStore(
|
||||
make_engine(resource.connection),
|
||||
schema=resource.connection.db_schema,
|
||||
dim=dim,
|
||||
return PgVectorStore(
|
||||
reader,
|
||||
resource.writer,
|
||||
expected_dimension=cfg.embeddings.dim if cfg.embeddings is not None else None,
|
||||
)
|
||||
case "thoth_vector_http":
|
||||
if require_write and resource.writer is None:
|
||||
@@ -60,15 +60,19 @@ def build_vector_loader(cfg: Config, collection: str):
|
||||
if cfg.embeddings is None:
|
||||
raise ConfigError("Embeddings non configurati")
|
||||
|
||||
if resource.type == "thoth_vector_http" and resource.writer is not None and (
|
||||
cfg.profile == "workstation" or resource.direct is None
|
||||
if (
|
||||
resource.type == "thoth_vector_http"
|
||||
and resource.writer is not None
|
||||
and (cfg.profile == "workstation" or resource.direct is None)
|
||||
):
|
||||
from tht.vectorstore.rest_writer import RestVectorWriter
|
||||
|
||||
return RestVectorWriter(VectorRestClient(resource.writer), table=collection)
|
||||
|
||||
connection = (
|
||||
resource.connection if resource.type == "pgvector_direct" else resource.direct
|
||||
resource.writer or resource.connection
|
||||
if resource.type == "pgvector_direct"
|
||||
else resource.direct
|
||||
)
|
||||
if connection is None:
|
||||
raise ConfigError("Vector writer non configurato")
|
||||
|
||||
Reference in New Issue
Block a user