先把当时的情况摆出来。启动本地向量库时报 RuntimeError,提示当前 sqlite3 版本低于要求,建议升级到三点三五以上。
真正麻烦的地方在于,几个原因的现象几乎一样。系统自带的 sqlite 版本老旧。少数情况下是Python 编译时链接的是旧版 sqlite。
还有一种情况,conda 环境里的 sqlite 与系统库冲突。另外,容器基础镜像过于精简。
动手时先看运行环境里的 sqlite 版本
python -c "import sqlite3;print(sqlite3.sqlite_version)"
再往下用 conda 安装较新的 sqlite
conda install -c conda-forge sqlite=3.45
然后确认升级后 Python 链接到新库
python -c "import sqlite3;print(sqlite3.sqlite_version)"
仍不生效时换用官方镜像
docker run -v /data/chroma:/data/chroma chromadb/chroma:latest
改之前先确认了最近有没有人动过配置,避免白查一遍。
这次没动代码,只在配置和运行环境上找原因。
恢复的判定其实很直接。版本号达到要求,本地向量库能正常启动并创建集合,读写不再报错,重启后数据也还在,查询结果与升级之前保持一致。
补一句。Python 自带的 sqlite 是编译期绑定的,装个 pip 包解决不了,要么换解释器要么换运行环境。这类问题最好一次改到位,反复小改反而容易把原因搅混。