📚 fastembed-rs项目简介
fastembed-rs是一个用Rust实现的高性能向量嵌入和重排序库,它是fastembed项目的Rust版本。该库提供了以下主要特性:
- 支持同步使用,无需依赖Tokio
- 使用ort进行高效的ONNX推理
- 使用tokenizers进行快速编码
- 支持使用rayon进行并行批量嵌入生成
- 默认使用Flag Embedding模型,该模型在MTEB排行榜上表现优异
🔗 主要资源链接
- GitHub仓库 - 项目源码和文档
- Crates.io页面 - Rust包管理器中的fastembed-rs
- API文档 - 详细的API参考文档
🚀 快速开始
要在你的Rust项目中使用fastembed-rs,只需在Cargo.toml中添加以下依赖:
[dependencies]
fastembed = "3"
然后可以参考以下示例代码生成文本嵌入:
use fastembed::{TextEmbedding, InitOptions, EmbeddingModel};
// 使用默认选项初始化
let model = TextEmbedding::try_new(Default::default())?;
let documents = vec![
"Hello, World!".to_string(),
"This is an example.".to_string(),
];
// 生成嵌入向量
let embeddings = model.embed(documents, None)?;
println!("Embeddings length: {}", embeddings.len());
println!("Embedding dimension: {}", embeddings[0].len());
🤖 支持的模型
fastembed-rs支持多种文本和图像嵌入模型,包括:
文本嵌入
- BAAI/bge-small-en-v1.5 (默认)
- sentence-transformers/all-MiniLM-L6-v2
- mixedbread-ai/mxbai-embed-large-v1
- 等多种模型
图像嵌入
- Qdrant/clip-ViT-B-32-vision (默认)
- Qdrant/resnet50-onnx
- Qdrant/Unicom-ViT-B-16
- Qdrant/Unicom-ViT-B-32
重排序
- BAAI/bge-reranker-base
- jinaai/jina-reranker-v1-turbo-en
- jinaai/jina-reranker-v2-base-multiligual
🔬 进阶使用
fastembed-rs还支持以下高级功能:
- 自定义模型初始化选项
- 批量生成嵌入向量
- 图像嵌入生成
- 候选文档重排序
详细用法请参考API文档。
🛠️ 性能优化
fastembed-rs之所以能够实现高性能,主要得益于以下几点:
- 量化模型权重
- 使用ONNX Runtime在CPU、GPU等硬件上进行推理
- 无隐藏依赖,避免了HuggingFace Transformers的开销
🤝 贡献
fastembed-rs是一个开源项目,欢迎社区贡献。如果你有任何问题或建议,可以在GitHub Issues中提出。
📄 许可证
fastembed-rs采用Apache 2.0许可证。详情请参阅LICENSE文件。
通过本文的介绍,相信大家对fastembed-rs有了初步的了解。这个高性能的Rust库为开发者提供了便捷的向量嵌入和重排序功能,值得在相关项目中尝试使用。如果你对NLP和向量检索感兴趣,不妨深入探索一下这个强大的工具!