memvec 不对,memvid vec 功能需要先手动下载本地文本嵌入模型,如何获取 BGE-small ONNX 文件与 tokenizer?
2026/9/15 14:17:38 网站建设 项目流程

memvec 不对,memvid vec 功能需要先手动下载本地文本嵌入模型,如何获取 BGE-small ONNX 文件与 tokenizer?

【免费下载链接】memvidMemory layer for AI Agents. Replace complex RAG pipelines with a serverless, single-file memory layer. Give your agents instant retrieval and long-term memory.项目地址: https://gitcode.com/GitHub_Trending/me/memvid

memvid 的vecfeature 提供基于本地 ONNX 模型的文本嵌入能力,但它不会自动下载模型文件——第一次使用本地文本嵌入前,需要手动把模型和 tokenizer 放到本地缓存目录。默认模型是bge-small-en-v1.5(384 维),本文说明如何获取它的 ONNX 文件和 tokenizer 文件、放到正确位置,以及如何验证模型确实可用。

为什么需要手动下载

根据 README 的说明:vecfeature 包含使用 ONNX 模型的本地文本嵌入支持,"Before using local text embeddings, you need to download the model files manually"。

这一点在 src/text_embed.rs 中也能得到印证:配置默认offline: true,即不尝试自动下载,模型缺失时直接报错。当模型文件或 tokenizer 文件不存在时,LocalTextEmbedder会返回带下载指引的错误信息:

  • 模型缺失:Text embedding model not found at {路径}. Please download manually: ...
  • tokenizer 缺失:Tokenizer not found at {路径}. Please download manually: ...

所以如果你运行时看到类似 "not found ... Please download manually" 的报错,说明就是缺少模型文件,而不是代码或依赖问题。

下载 BGE-small 的 ONNX 文件与 tokenizer

按照 README 中 "Quick Start: BGE-small (Recommended)" 给出的命令执行。mkdir -p会创建缓存目录,两条curl分别下载 ONNX 模型和 tokenizer,-o指定了落盘文件名:

mkdir -p ~/.cache/memvid/text-models # Download ONNX model curl -L 'https://huggingface.co/BAAI/bge-small-en-v1.5/resolve/main/onnx/model.onnx' \ -o ~/.cache/memvid/text-models/bge-small-en-v1.5.onnx # Download tokenizer curl -L 'https://huggingface.co/BAAI/bge-small-en-v1.5/resolve/main/tokenizer.json' \ -o ~/.cache/memvid/text-models/bge-small-en-v1.5_tokenizer.json

两个文件的命名有严格约定(见 src/text_embed.rs 中ensure_model_file/ensure_tokenizer_file的拼接逻辑):

文件要求的位置
{模型名}.onnx,即bge-small-en-v1.5.onnx~/.cache/memvid/text-models/
{模型名}_tokenizer.json,即bge-small-en-v1.5_tokenizer.json~/.cache/memvid/text-models/

~是用户主目录的缩写,命令会在当前 shell 的用户主目录下创建~/.cache/memvid/text-models。如果下载不完整或文件名被改动,运行时会报上面的 "not found" 错误,重新执行对应的一条curl即可。BGE-small 在 README 的模型表中列出为约 120MB。

验证模型可用

下载完成后,运行仓库自带的示例 examples/text_embedding.rs 来验证(需要在项目根目录执行,且带上vecfeature):

cargo run --example text_embedding --features vec

示例会创建一个使用默认配置(即 BGE-small)的LocalTextEmbedder,并先打印模型状态(文档示例中的输出形式):

Creating local text embedder (BGE-small-en-v1.5)... Model: bge-small-en-v1.5 Dimensions: 384 Ready: true

如果Model一行显示bge-small-en-v1.5Dimensions为 384、Readytrue,说明 ONNX 文件与 tokenizer 都被正确加载,后续会依次演示单条嵌入、相似度计算、批量处理和查询排序。README 中的用法示例也用维度做了断言:

let embedding = embedder.embed_text("hello world")?; assert_eq!(embedding.len(), 384);

若此时仍报 "Text embedding model not found" 或 "Tokenizer not found",对照报错里给出的路径检查文件名是否与上面表格完全一致——报错信息本身会附上下一步该执行的mkdir/curl命令。

可选:改用其他模型

如果 384 维的 BGE-small 不满足质量要求,README 给出了其他三个模型的下载命令,同样是 "ONNX 模型 + tokenizer" 两个文件、同样的目录:

  • bge-base-en-v1.5(768 维,约 420MB)
  • nomic-embed-text-v1.5(768 维,约 530MB)
  • gte-large(1024 维,约 1.3GB)

下载后在代码里用对应的配置构造 embedder,例如TextEmbedConfig::bge_base()。需要留意的是维度会随模型变化(768 或 1024),不要混用:README 指出可以通过mem.set_vec_model("bge-small-en-v1.5")?把实例显式绑定到某个模型名,绑定是持久化的,之后再用不同模型名会得到ModelMismatch错误,用于防止例如用 OpenAI 嵌入去查询 BGE-small 建立的索引。

【免费下载链接】memvidMemory layer for AI Agents. Replace complex RAG pipelines with a serverless, single-file memory layer. Give your agents instant retrieval and long-term memory.项目地址: https://gitcode.com/GitHub_Trending/me/memvid

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询