十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SQLite-Vec 在 MacOS 上总加载失败?亲测排查 3 种常见报错

SQLite-Vec 在 MacOS 上总加载失败?亲测排查 3 种常见报错 SQLite-Vec 在 MacOS 上总加载失败亲测排查 3 种常见报错【免费下载链接】sqlite-vecA vector search SQLite extension that runs anywhere!项目地址: https://gitcode.com/GitHub_Trending/sq/sqlite-vecSQLite-Vec 在 MacOS 扩展加载时最常见的翻车点就三个SQLITE_CANTOPEN、Python 端没有enable_load_extension、以及unsupported file format。下面按报错 → 定位 → 修复的路径逐个击破每个分支都以一个可验证的标志收尾照着走即可跑通。30 秒定位你先对号入座先看你的报错原文落在哪一行再进对应分支你看到的报错最可能的原因执行动作成功标志SQLITE_CANTOPEN/ 无法打开共享库系统找不到 dylib 文件走分支 ASELECT vec_version();返回版本号no attribute enable_load_extension系统自带 SQLite 未编译扩展支持走分支 BPython 的sqlite3.sqlite_version≥ 3.41unsupported file formatSQLite 版本过旧走分支 Cfile输出显示 Mach-O 且架构匹配提醒一下编译产物是dist/vec0.dylib部分教程称其为sqlite-vec.dylib指同一个东西。如果构建后找不到这个文件先跳到分支 A 的第 1 步。 每个报错的第 0 步构建 dylib 并核对架构这条命令拉取源码并编译出可加载扩展dylib 会落在dist/目录git clone https://gitcode.com/GitHub_Trending/sq/sqlite-vec cd sqlite-vec make loadable跑通后dist/下会出现vec0.dylib下一步用file命令核对它的架构file dist/vec0.dylib输出包含Mach-O 64-bit dynamically linked shared library且架构是x86_64或arm64需与你的 Mac CPU 一致即通过。更细的编译参数可以查 site/compiling.md。分支 ASQLITE_CANTOPEN让 dylib 被系统找到的 2 种办法办法 1.load直接指定路径。打开 sqlite3 命令行让.load指向 dylib 的绝对路径这是最不容易出错的方式。加载成功时没有任何输出紧接着执行查询sqlite3 sqlite .load /完整路径/sqlite-vec/dist/vec0.dylib sqlite SELECT vec_version();vec_version()打印出形如0.1.10的版本号分支 A 就通了。办法 2用DYLD_LIBRARY_PATH把目录加入搜索路径。这条 export 会把 dylib 所在目录写进动态库搜索列表追加到~/.zshrc或~/.bash_profile里可让配置持久化export DYLD_LIBRARY_PATH$DYLD_LIBRARY_PATH:/path/to/sqlite-vec/dist之后echo $DYLD_LIBRARY_PATH验证输出末尾包含.../sqlite-vec/dist即生效。分支 Bno attribute enable_load_extension换掉系统 Python这个错不是路径问题macOS 自带的 SQLite连同系统 Python 的 sqlite3 模块编译时没有开启扩展支持。执行这条命令安装 Homebrew 版 Python它链接的 SQLite 允许加载扩展brew install python安装成功后可通过/opt/homebrew/bin/python3调起它。之后按下面的方式连接先打开扩展加载开关加载完立刻关掉。import sqlite3 import sqlite_vec db sqlite3.connect(:memory:) db.enable_load_extension(True) sqlite_vec.load(db) db.enable_load_extension(False) print(db.execute(SELECT vec_version()).fetchone())打印出(0.1.x,)形式的元组即通过。更多 Python 用法见 site/using/python.md。分支 Cunsupported file format升级 SQLite 版本先确认当前到底在用哪个 SQLite 版本这条命令打印 Python 环境实际链接的 SQLite 版本3.41 及以上为推荐值python -c import sqlite3; print(sqlite3.sqlite_version)若输出小于 3.41用 Homebrew 装新版并把它的 bin 目录提到 PATH 最前面以覆盖系统自带版本brew install sqlite3 export PATH/usr/local/opt/sqlite/bin:$PATH重新执行查询后版本号发生跳变即说明生效仍报同样错误时回到分支 A 第 0 步重新核对 dylib 架构。修完之后端到端验证一次最后跑一遍完整链路加载扩展、建表、插数、KNN 查询参照仓库里的现成样例 examples/simple-sqlite/demo.sql 手动执行。最小形态如下.load /path/to/dist/vec0.dylib CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4]);用WHERE embedding MATCH ...查询能返回带distance列的结果说明 MacOS 上的 SQLite-Vec 环境已完全可用后面就可以放心把向量检索写进正式代码了。【免费下载链接】sqlite-vecA vector search SQLite extension that runs anywhere!项目地址: https://gitcode.com/GitHub_Trending/sq/sqlite-vec创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表