Бот работает
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user