Update app.py
Browse files
app.py
CHANGED
@@ -87,7 +87,7 @@ def setup_database():
|
|
87 |
cur.execute("CREATE EXTENSION IF NOT EXISTS vector;")
|
88 |
|
89 |
# Удаляем существующие таблицы если они есть
|
90 |
-
cur.execute(f"DROP TABLE IF EXISTS {embeddings_table}, {query_cache_table};")
|
91 |
|
92 |
# Создаем таблицу для хранения эмбеддингов фильмов
|
93 |
cur.execute(f"""
|
@@ -299,6 +299,7 @@ def search_movies(query, top_k=10):
|
|
299 |
ON CONFLICT (query_crc32) DO NOTHING
|
300 |
""", (query_crc32, query, model_name, query_embedding.tolist()))
|
301 |
conn.commit()
|
|
|
302 |
except Exception as e:
|
303 |
logging.error(f"Ошибка при сохранении эмбеддинга запроса: {e}")
|
304 |
conn.rollback()
|
@@ -307,13 +308,19 @@ def search_movies(query, top_k=10):
|
|
307 |
try:
|
308 |
with conn.cursor() as cur:
|
309 |
cur.execute(f"""
|
310 |
-
|
311 |
-
|
|
|
|
|
|
|
|
|
|
|
312 |
ORDER BY distance ASC
|
313 |
LIMIT %s
|
314 |
-
""", (
|
315 |
|
316 |
results = cur.fetchall()
|
|
|
317 |
except Exception as e:
|
318 |
logging.error(f"Ошибка при выполнении поискового запроса: {e}")
|
319 |
results = []
|
|
|
87 |
cur.execute("CREATE EXTENSION IF NOT EXISTS vector;")
|
88 |
|
89 |
# Удаляем существующие таблицы если они есть
|
90 |
+
# cur.execute(f"DROP TABLE IF EXISTS {embeddings_table}, {query_cache_table};")
|
91 |
|
92 |
# Создаем таблицу для хранения эмбеддингов фильмов
|
93 |
cur.execute(f"""
|
|
|
299 |
ON CONFLICT (query_crc32) DO NOTHING
|
300 |
""", (query_crc32, query, model_name, query_embedding.tolist()))
|
301 |
conn.commit()
|
302 |
+
logging.info(f"Сохранен новый эмбеддинг запроса: {query}")
|
303 |
except Exception as e:
|
304 |
logging.error(f"Ошибка при сохранении эмбеддинга запроса: {e}")
|
305 |
conn.rollback()
|
|
|
308 |
try:
|
309 |
with conn.cursor() as cur:
|
310 |
cur.execute(f"""
|
311 |
+
WITH query_embedding AS (
|
312 |
+
SELECT embedding
|
313 |
+
FROM {query_cache_table}
|
314 |
+
WHERE query_crc32 = %s
|
315 |
+
)
|
316 |
+
SELECT m.movie_id, m.embedding <=> (SELECT embedding FROM query_embedding) as distance
|
317 |
+
FROM {embeddings_table} m, query_embedding
|
318 |
ORDER BY distance ASC
|
319 |
LIMIT %s
|
320 |
+
""", (query_crc32, top_k))
|
321 |
|
322 |
results = cur.fetchall()
|
323 |
+
logging.info(f"Найдено {len(results)} результатов поиска.")
|
324 |
except Exception as e:
|
325 |
logging.error(f"Ошибка при выполнении поискового запроса: {e}")
|
326 |
results = []
|