From 745c3dd1e1f05c9cebb2a787fa722f3412aaf65c Mon Sep 17 00:00:00 2001 From: LLLin000 <809867916@qq.com> Date: Fri, 10 Jul 2026 02:47:58 +0800 Subject: [PATCH] fix(db): use sqlite_vec.load(conn) instead of loadable_path() loadable_path() returns a path without .dll extension on Windows, causing vec0 extension loading to fail. Use sqlite_vec.load(conn) which handles platform-specific paths correctly. --- paperforge/memory/db.py | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/paperforge/memory/db.py b/paperforge/memory/db.py index b950d4bf..d1d1544f 100644 --- a/paperforge/memory/db.py +++ b/paperforge/memory/db.py @@ -40,30 +40,19 @@ def ensure_vec_extension(conn: sqlite3.Connection) -> None: Enables vec0 virtual table support for vector similarity search. Gracefully no-ops when the extension is not installed. - - Supports Python 3.12/3.13 (conn.load) and 3.14+ (conn.load_extension). """ try: + import sqlite_vec + conn.enable_load_extension(True) - - # Python 3.12/3.13 API — searches system library path try: - conn.load("vec0") - return - except AttributeError: - pass # conn.load removed in Python 3.14 - - # Python 3.14+ — use sqlite_vec convenience wrapper or direct path - try: - from sqlite_vec import loadable_path - - conn.load_extension(str(loadable_path())) - except ImportError: - conn.load_extension("vec0") - except (sqlite3.OperationalError, AttributeError): - pass # extension not available - finally: - try: - conn.enable_load_extension(False) - except AttributeError: - pass + sqlite_vec.load(conn) + except Exception: + pass # extension not available + finally: + try: + conn.enable_load_extension(False) + except AttributeError: + pass + except ImportError: + pass # sqlite_vec not installed