Chroma JS-Client 在 NextJS 项目中失效
我们的默认嵌入函数使用 @huggingface/transformers,它依赖于 NextJS 无法打包的二进制文件。如果您遇到此问题,可以使用withChroma 插件包裹您的 nextConfig(在 next.config.ts 中),这将添加克服打包问题所需的设置。
无法在连续的 2D 数组中返回结果。可能是 ef 或 M 太小
当 HNSW 索引根据其结构和您的数据无法为查询检索到请求数量的结果时,就会出现此错误。解决方法是减少您从查询中请求的结果数量 (n_result),或者增加 HNSW 参数M、ef_construction 和 ef_search。您可以在此处阅读更多关于 HNSW 配置的信息。
使用 .get 或 .query 时,embeddings 显示为 None
这实际上不是错误。嵌入向量非常庞大,传回的开销很大。大多数应用程序并不使用底层的嵌入向量,因此默认情况下,Chroma 不会传回它们。 要传回它们:请在查询中添加 include=["embeddings", "documents", "metadatas", "distances"] 以返回所有信息。 例如:我们可能会将
None 更改为其他内容,以更清晰地说明未返回它们的原因。运行 pip install chromadb 时出现构建错误
如果在设置过程中遇到类似的错误
- 如果遇到错误:
clang: error: the clang compiler does not support '-march=native',请设置此环境变量:export HNSWLIB_NO_NATIVE=1 - 如果是 Mac 系统,请安装/更新 xcode 开发者工具:
xcode-select --install - 如果是 Windows 系统,请尝试这些步骤
SQLite
Chroma 需要 SQLite > 3.35。如果您遇到 SQLite 版本过低的问题,请尝试以下操作。- 安装最新版本的 Python 3.10,有时较低版本的 Python 会捆绑旧版本的 SQLite。
- 如果您使用的是 Linux 系统,可以安装 pysqlite3-binary:
pip install pysqlite3-binary,然后在运行 Chroma 之前按照此处的步骤覆盖默认的 sqlite3 库。或者,您可以从头开始编译 SQLite,并用最新版本替换 Python 安装中的库,具体操作见此处的说明。 - 如果您使用的是 Windows,可以从 https://www.sqlite.org/download.html 手动下载最新版本的 SQLite,并用最新版本替换 Python 安装目录中 DLLs 文件夹下的 DLL。您可以通过在 Python 中运行
os.path.dirname(sys.executable)来查找 Python 的安装路径。 - 如果您使用的是基于 Debian 的 Docker 容器,旧版本的 Debian 没有最新的 SQLite,请使用
bookworm或更高版本。