从安装到部署FastEmbed-rs完整使用教程含代码示例【免费下载链接】fastembed-rsRust library for generating vector embeddings, reranking locally!项目地址: https://gitcode.com/gh_mirrors/fa/fastembed-rsFastEmbed-rs是一个强大的Rust库能够在本地高效生成向量嵌入和重新排序为开发者提供了便捷的文本、图像和稀疏嵌入解决方案。本教程将从基础安装到实际部署全面介绍FastEmbed-rs的使用方法帮助你快速上手这个高性能的嵌入生成工具。 快速安装步骤FastEmbed-rs的安装非常简单只需在你的Rust项目中添加依赖即可。你可以通过Cargo命令快速安装cargo add fastembed或者在你的Cargo.toml文件中添加以下依赖[dependencies] fastembed 5目前最新版本为5.17.3确保使用最新版本以获得最佳性能和最新特性。 核心功能介绍FastEmbed-rs提供了多种强大的功能满足不同场景下的嵌入需求文本嵌入支持多种预训练模型包括BGE系列、Sentence Transformers系列、Nomic系列等默认使用BAAI/bge-small-en-v1.5模型。文本嵌入功能可以将文本转换为高维向量用于文本相似度计算、聚类分析等任务。稀疏文本嵌入提供Sparse Embedding功能默认使用prithivida/Splade_PP_en_v1模型适用于需要稀疏表示的场景。图像嵌入支持CLIP、ResNet等模型能够将图像转换为向量实现图像检索、图像分类等功能。重新排序提供文本重新排序功能默认使用BAAI/bge-reranker-base模型可以对检索结果进行重新排序提高检索准确性。 文本嵌入使用示例下面是一个简单的文本嵌入使用示例展示如何使用FastEmbed-rs生成文本嵌入use fastembed::{TextEmbedding, TextInitOptions, EmbeddingModel}; // 使用默认选项初始化模型 let mut model TextEmbedding::try_new(Default::default())?; // 或者使用自定义选项 let mut model TextEmbedding::try_new( TextInitOptions::new(EmbeddingModel::AllMiniLML6V2) .with_show_download_progress(true) .with_intra_threads(4), )?; let documents vec![ passage: Hello, World!, query: Hello, World!, passage: This is an example passage., fastembed-rs is licensed under Apache 2.0 ]; // 生成嵌入使用默认批大小256 let embeddings model.embed(documents, None)?; println!(Embeddings length: {}, embeddings.len()); // - Embeddings length: 4 println!(Embedding dimension: {}, embeddings[0].len()); // - Embedding dimension: 384️ 图像嵌入使用示例FastEmbed-rs同样支持图像嵌入下面是一个图像嵌入的示例use fastembed::{ImageEmbedding, ImageInitOptions, ImageEmbeddingModel}; // 使用默认选项初始化模型 let mut model ImageEmbedding::try_new(Default::default())?; // 或者使用自定义选项 let mut model ImageEmbedding::try_new( ImageInitOptions::new(ImageEmbeddingModel::ClipVitB32) .with_show_download_progress(true), )?; let images vec![tests/assets/image_0.png, tests/assets/image_1.png]; // 生成嵌入使用默认批大小256 let embeddings model.embed(images, None)?; println!(Embeddings length: {}, embeddings.len()); // - Embeddings length: 2 println!(Embedding dimension: {}, embeddings[0].len()); // - Embedding dimension: 512 重新排序功能示例重新排序功能可以帮助你优化检索结果下面是一个简单的示例use fastembed::{TextRerank, RerankInitOptions, RerankerModel}; // 使用默认选项初始化模型 let mut model TextRerank::try_new(Default::default())?; // 或者使用自定义选项 let mut model TextRerank::try_new( RerankInitOptions::new(RerankerModel::BGERerankerBase) .with_show_download_progress(true), )?; let documents vec![ hi, The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear, is a bear species endemic to China., panda is animal, i dont know, kind of mammal, ]; // 重新排序使用默认批大小256并返回文档内容 let results model.rerank(what is panda?, documents, true, None)?; println!(Rerank result: {:?}, results); 相似度搜索FastEmbed-rs提供了相似度搜索功能可以快速计算向量之间的相似度use fastembed::similarity::{cosine_similarity, top_k}; // embeddings 是从 model.embed(...) 获取的 VecEmbedding let query embeddings[0]; // 直接计算两个向量的相似度范围 [-1.0, 1.0]值越高表示越相似 let score cosine_similarity(query, embeddings[1]); // 或者对语料库进行排序返回 (索引, 分数) 对按相似度从高到低排列 let hits top_k(query, embeddings, 5); println!(Closest: {:?}, hits);对于更大的语料库或需要持久化存储建议将向量推送到向量搜索引擎如Qdrant中进行查询。⚙️ 高级功能Qwen3嵌入Qwen3嵌入模型在qwen3特性标志后可用candle后端。使用方法如下首先在Cargo.toml中添加特性[dependencies] fastembed { version 5, features [qwen3] }然后使用Qwen3嵌入模型use candle_core::{DType, Device}; use fastembed::Qwen3TextEmbedding; let device Device::Cpu; let model Qwen3TextEmbedding::from_hf( Qwen/Qwen3-Embedding-0.6B, device, DType::F32, 512, )?; let embeddings model.embed([query: ..., passage: ...])?; println!(Embeddings length: {}, embeddings.len()); 模型缓存模型在首次使用时会下载并在后续使用时从缓存加载一旦缓存运行时无需网络。你可以通过以下环境变量自定义缓存行为FASTEMBED_CACHE_DIR— 缓存位置默认.fastembed_cache。等同于TextInitOptions::with_cache_dir。HF_HOME— 如果设置优先于上述选项。HF_ENDPOINT— Hugging Face镜像基础URL适用于受限网络。 DirectML支持Windows要在Windows上通过DirectML在GPU上运行模型请启用directml特性[dependencies] fastembed { version 5, features [directml] }然后在初始化模型时传递DirectML执行提供程序use fastembed::{TextEmbedding, TextInitOptions, EmbeddingModel}; use ort::ep::DirectML; let model TextEmbedding::try_new( TextInitOptions::new(EmbeddingModel::AllMiniLML6V2) .with_execution_providers(vec![DirectML::default().into()]), )?;当检测到DirectML时fastembed会自动禁用ONNX Runtime会话上的内存模式优化和并行执行这是DirectML执行提供程序所要求的。 总结FastEmbed-rs是一个功能强大、易于使用的Rust库为开发者提供了本地生成向量嵌入和重新排序的能力。通过本教程你已经了解了FastEmbed-rs的安装方法、核心功能和使用示例。无论是文本嵌入、图像嵌入还是重新排序FastEmbed-rs都能满足你的需求。开始使用FastEmbed-rs为你的项目添加高效的嵌入生成能力吧 相关资源官方文档docs.rs/fastembed源码仓库src/文本嵌入实现src/text_embedding/impl.rs图像嵌入实现src/image_embedding/impl.rs重新排序实现src/reranking/impl.rs【免费下载链接】fastembed-rsRust library for generating vector embeddings, reranking locally!项目地址: https://gitcode.com/gh_mirrors/fa/fastembed-rs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
从安装到部署:FastEmbed-rs完整使用教程(含代码示例)
从安装到部署FastEmbed-rs完整使用教程含代码示例【免费下载链接】fastembed-rsRust library for generating vector embeddings, reranking locally!项目地址: https://gitcode.com/gh_mirrors/fa/fastembed-rsFastEmbed-rs是一个强大的Rust库能够在本地高效生成向量嵌入和重新排序为开发者提供了便捷的文本、图像和稀疏嵌入解决方案。本教程将从基础安装到实际部署全面介绍FastEmbed-rs的使用方法帮助你快速上手这个高性能的嵌入生成工具。 快速安装步骤FastEmbed-rs的安装非常简单只需在你的Rust项目中添加依赖即可。你可以通过Cargo命令快速安装cargo add fastembed或者在你的Cargo.toml文件中添加以下依赖[dependencies] fastembed 5目前最新版本为5.17.3确保使用最新版本以获得最佳性能和最新特性。 核心功能介绍FastEmbed-rs提供了多种强大的功能满足不同场景下的嵌入需求文本嵌入支持多种预训练模型包括BGE系列、Sentence Transformers系列、Nomic系列等默认使用BAAI/bge-small-en-v1.5模型。文本嵌入功能可以将文本转换为高维向量用于文本相似度计算、聚类分析等任务。稀疏文本嵌入提供Sparse Embedding功能默认使用prithivida/Splade_PP_en_v1模型适用于需要稀疏表示的场景。图像嵌入支持CLIP、ResNet等模型能够将图像转换为向量实现图像检索、图像分类等功能。重新排序提供文本重新排序功能默认使用BAAI/bge-reranker-base模型可以对检索结果进行重新排序提高检索准确性。 文本嵌入使用示例下面是一个简单的文本嵌入使用示例展示如何使用FastEmbed-rs生成文本嵌入use fastembed::{TextEmbedding, TextInitOptions, EmbeddingModel}; // 使用默认选项初始化模型 let mut model TextEmbedding::try_new(Default::default())?; // 或者使用自定义选项 let mut model TextEmbedding::try_new( TextInitOptions::new(EmbeddingModel::AllMiniLML6V2) .with_show_download_progress(true) .with_intra_threads(4), )?; let documents vec![ passage: Hello, World!, query: Hello, World!, passage: This is an example passage., fastembed-rs is licensed under Apache 2.0 ]; // 生成嵌入使用默认批大小256 let embeddings model.embed(documents, None)?; println!(Embeddings length: {}, embeddings.len()); // - Embeddings length: 4 println!(Embedding dimension: {}, embeddings[0].len()); // - Embedding dimension: 384️ 图像嵌入使用示例FastEmbed-rs同样支持图像嵌入下面是一个图像嵌入的示例use fastembed::{ImageEmbedding, ImageInitOptions, ImageEmbeddingModel}; // 使用默认选项初始化模型 let mut model ImageEmbedding::try_new(Default::default())?; // 或者使用自定义选项 let mut model ImageEmbedding::try_new( ImageInitOptions::new(ImageEmbeddingModel::ClipVitB32) .with_show_download_progress(true), )?; let images vec![tests/assets/image_0.png, tests/assets/image_1.png]; // 生成嵌入使用默认批大小256 let embeddings model.embed(images, None)?; println!(Embeddings length: {}, embeddings.len()); // - Embeddings length: 2 println!(Embedding dimension: {}, embeddings[0].len()); // - Embedding dimension: 512 重新排序功能示例重新排序功能可以帮助你优化检索结果下面是一个简单的示例use fastembed::{TextRerank, RerankInitOptions, RerankerModel}; // 使用默认选项初始化模型 let mut model TextRerank::try_new(Default::default())?; // 或者使用自定义选项 let mut model TextRerank::try_new( RerankInitOptions::new(RerankerModel::BGERerankerBase) .with_show_download_progress(true), )?; let documents vec![ hi, The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear, is a bear species endemic to China., panda is animal, i dont know, kind of mammal, ]; // 重新排序使用默认批大小256并返回文档内容 let results model.rerank(what is panda?, documents, true, None)?; println!(Rerank result: {:?}, results); 相似度搜索FastEmbed-rs提供了相似度搜索功能可以快速计算向量之间的相似度use fastembed::similarity::{cosine_similarity, top_k}; // embeddings 是从 model.embed(...) 获取的 VecEmbedding let query embeddings[0]; // 直接计算两个向量的相似度范围 [-1.0, 1.0]值越高表示越相似 let score cosine_similarity(query, embeddings[1]); // 或者对语料库进行排序返回 (索引, 分数) 对按相似度从高到低排列 let hits top_k(query, embeddings, 5); println!(Closest: {:?}, hits);对于更大的语料库或需要持久化存储建议将向量推送到向量搜索引擎如Qdrant中进行查询。⚙️ 高级功能Qwen3嵌入Qwen3嵌入模型在qwen3特性标志后可用candle后端。使用方法如下首先在Cargo.toml中添加特性[dependencies] fastembed { version 5, features [qwen3] }然后使用Qwen3嵌入模型use candle_core::{DType, Device}; use fastembed::Qwen3TextEmbedding; let device Device::Cpu; let model Qwen3TextEmbedding::from_hf( Qwen/Qwen3-Embedding-0.6B, device, DType::F32, 512, )?; let embeddings model.embed([query: ..., passage: ...])?; println!(Embeddings length: {}, embeddings.len()); 模型缓存模型在首次使用时会下载并在后续使用时从缓存加载一旦缓存运行时无需网络。你可以通过以下环境变量自定义缓存行为FASTEMBED_CACHE_DIR— 缓存位置默认.fastembed_cache。等同于TextInitOptions::with_cache_dir。HF_HOME— 如果设置优先于上述选项。HF_ENDPOINT— Hugging Face镜像基础URL适用于受限网络。 DirectML支持Windows要在Windows上通过DirectML在GPU上运行模型请启用directml特性[dependencies] fastembed { version 5, features [directml] }然后在初始化模型时传递DirectML执行提供程序use fastembed::{TextEmbedding, TextInitOptions, EmbeddingModel}; use ort::ep::DirectML; let model TextEmbedding::try_new( TextInitOptions::new(EmbeddingModel::AllMiniLML6V2) .with_execution_providers(vec![DirectML::default().into()]), )?;当检测到DirectML时fastembed会自动禁用ONNX Runtime会话上的内存模式优化和并行执行这是DirectML执行提供程序所要求的。 总结FastEmbed-rs是一个功能强大、易于使用的Rust库为开发者提供了本地生成向量嵌入和重新排序的能力。通过本教程你已经了解了FastEmbed-rs的安装方法、核心功能和使用示例。无论是文本嵌入、图像嵌入还是重新排序FastEmbed-rs都能满足你的需求。开始使用FastEmbed-rs为你的项目添加高效的嵌入生成能力吧 相关资源官方文档docs.rs/fastembed源码仓库src/文本嵌入实现src/text_embedding/impl.rs图像嵌入实现src/image_embedding/impl.rs重新排序实现src/reranking/impl.rs【免费下载链接】fastembed-rsRust library for generating vector embeddings, reranking locally!项目地址: https://gitcode.com/gh_mirrors/fa/fastembed-rs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考