Бот работает

This commit is contained in:
2026-01-31 23:46:08 +03:00
parent 95715dcae7
commit 1dde59f021
12 changed files with 356 additions and 22 deletions

View File

@@ -5,6 +5,7 @@ from datetime import datetime, timezone
from typing import Iterable, Sequence
import psycopg
from pgvector import Vector
from pgvector.psycopg import register_vector
from rag_agent.ingest.chunker import TextChunk
@@ -113,16 +114,20 @@ def ensure_schema(conn: psycopg.Connection, embeddings_dim: int) -> None:
except psycopg.ProgrammingError:
conn.rollback()
pass
try:
cur.execute(
"""
cur.execute(
"""
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint
WHERE conrelid = 'chunks'::regclass AND conname = 'chunks_change_type_check'
) THEN
ALTER TABLE chunks ADD CONSTRAINT chunks_change_type_check
CHECK (change_type IN ('added', 'modified', 'unchanged'));
"""
)
except psycopg.ProgrammingError:
conn.rollback()
pass # constraint may already exist
END IF;
END $$;
"""
)
cur.execute(
"""
CREATE INDEX IF NOT EXISTS idx_documents_story_id
@@ -343,6 +348,7 @@ def fetch_similar(
top_k: int,
story_id: int | None = None,
) -> list[tuple[str, str, float]]:
vec = Vector(query_embedding)
with conn.cursor() as cur:
if story_id is not None:
cur.execute(
@@ -354,7 +360,7 @@ def fetch_similar(
ORDER BY c.embedding <=> %s
LIMIT %s;
""",
(query_embedding, story_id, query_embedding, top_k),
(vec, story_id, vec, top_k),
)
else:
cur.execute(
@@ -365,7 +371,7 @@ def fetch_similar(
ORDER BY c.embedding <=> %s
LIMIT %s;
""",
(query_embedding, query_embedding, top_k),
(vec, vec, top_k),
)
rows = cur.fetchall()
return [(row[0], row[1], row[2]) for row in rows]