From cf8b87246b953f2ca1f31b2f50b381a0f832e98e Mon Sep 17 00:00:00 2001 From: Yiorgis Gozadinos Date: Thu, 18 Sep 2025 14:01:38 +0300 Subject: [PATCH] Infer vector dimension --- src/haiku/rag/store/upgrades/v0_9_3.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/haiku/rag/store/upgrades/v0_9_3.py b/src/haiku/rag/store/upgrades/v0_9_3.py index 241ac54b..7090a38e 100644 --- a/src/haiku/rag/store/upgrades/v0_9_3.py +++ b/src/haiku/rag/store/upgrades/v0_9_3.py @@ -12,9 +12,25 @@ if TYPE_CHECKING: # pragma: no cover - for type hints only from haiku.rag.store.engine import Store +def _infer_vector_dim(store: Store) -> int: + """Infer vector dimension from existing data; fallback to embedder config.""" + try: + arrow = store.chunks_table.search().limit(1).to_arrow() + rows = arrow.to_pylist() + if rows: + vec = rows[0].get("vector") + if isinstance(vec, list) and vec: + return len(vec) + except Exception: + pass + # Fallback to configured embedder vector dim + return getattr(store.embedder, "_vector_dim", 1024) + + def _apply_chunk_order(store: Store) -> None: """Add integer 'order' column to chunks and backfill from metadata.""" - vector_dim = store.embedder._vector_dim + + vector_dim = _infer_vector_dim(store) # ============== Chunks: add 'order' column and backfill ============== class ChunkRecordV2(LanceModel):