From 586c2c4484c5278f1fbcd194b5eda3fd140a5209 Mon Sep 17 00:00:00 2001 From: Vladimir Buzalka Date: Sun, 7 Jun 2026 06:41:30 +0200 Subject: [PATCH] Fix vector search parameter ordering for pgvector MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit %s placeholders in SQL are positional — SELECT score param must come before WHERE conditions in the params list, not after. Co-Authored-By: Claude Sonnet 4.6 --- Knowledgebase/server.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Knowledgebase/server.py b/Knowledgebase/server.py index 06fd0c1..4b9db23 100644 --- a/Knowledgebase/server.py +++ b/Knowledgebase/server.py @@ -442,17 +442,23 @@ def search( vec_params2.append(min_importance) vec_where = " AND ".join(vec_conditions) + qv = np.array(query_emb) + # Pořadí %s musí odpovídat pořadí v SQL: + # 1. WHERE podmínky (vec_params2) + # 2. SELECT score: embedding <=> %s + # 3. ORDER BY: embedding <=> %s + # 4. LIMIT %s vec_rows = conn.execute( f""" SELECT id, mem_type, title, content, summary, tags, project, source, session_id, importance, created_at, - 1 - (embedding <=> %s::vector) AS score + 1 - (embedding <=> %s) AS score FROM kb_memories WHERE {vec_where} - ORDER BY embedding <=> %s::vector + ORDER BY embedding <=> %s LIMIT %s """, - [np.array(query_emb), np.array(query_emb)] + vec_params2 + [limit], + [qv] + vec_params2 + [qv, limit], ).fetchall() for r in vec_rows: