Voyage-4-Nano:Voyage AI推出的开源轻量级文本嵌入模型,低成本实现高性能语义检索

原创 发布日期:
59

一、Voyage-4-Nano是什么

Voyage-4-Nano是由Voyage AI开发的一款开源轻量级多语言文本嵌入模型,属于Voyage 4系列文本嵌入模型矩阵的重要组成部分,也是该系列中主打本地开发、设备端应用的开放权重版本。该模型基于Apache 2.0开源协议发布,可免费供个人与企业进行研究、开发与商用,其核心定位是在低成本、轻量级部署的前提下,实现媲美更大体量模型的高性能语义检索效果,解决了传统文本嵌入模型“大模型性能好但部署成本高、小模型轻量化但检索效果差”的痛点。

作为一款面向语义搜索与检索任务的专用模型,Voyage-4-Nano并非通用大语言模型,而是专注于将文本转化为计算机可识别的高维向量(嵌入向量),通过向量间的相似度计算实现精准的语义匹配与检索。该模型依托阿里Qwen团队的技术基础进行开发,融合了MongoDB的技术支持,在Hugging Face平台开源,支持Transformers、Sentence Transformers等主流AI开发框架,还提供了完善的本地部署与调用方案,即使是技术储备中等的开发者也能快速上手。

与Voyage 4系列的其他模型(voyage-4-large、voyage-4、voyage-4-lite)相比,Voyage-4-Nano是轻量级专属版本,其参数量更小、部署门槛更低,适合本地开发测试、设备端嵌入式应用等对资源占用有严格要求的场景,而该系列的其他模型则分别适配高保真索引、生产级通用检索、高吞吐量查询等场景,形成了从开发到生产的全链路模型支撑。同时,Voyage-4-Nano在公开的RTEB排行榜上展现出优异的性能,其检索精度甚至超越了Gemini、Cohere等主流嵌入模型,实现了“轻量级”与“高性能”的双重特性。

二、功能特色

Voyage-4-Nano作为Voyage 4系列的轻量级标杆产品,围绕“低成本、高性能、高灵活、易部署” 四大核心设计,打造了四大核心功能特色,既保留了旗舰级模型的检索能力,又针对轻量级场景做了深度优化,具体如下:

1. 与Voyage 4系列共享嵌入空间,模型切换无需重新索引

这是Voyage 4系列模型的核心特性,也是Voyage-4-Nano的重要优势。Voyage-4-Nano与同系列的voyage-4-large(旗舰级高精准检索)、voyage-4(通用型平衡检索)、voyage-4-lite(高吞吐量低延迟)采用统一的嵌入空间,不同模型生成的嵌入向量可直接对比、互换使用,开发者在开发与生产环节切换模型时,无需为已有的数据重新建索引。例如,开发者可在本地开发阶段使用Voyage-4-Nano进行模型调试与功能开发,在生产部署阶段直接切换为voyage-4-lite实现高吞吐量查询,或切换为voyage-4-large实现高保真检索,数据层无需做任何修改,大幅降低了从原型开发到生产落地的技术成本与时间成本。

2. 低成本实现前沿检索质量,性能超越更大体量同类模型

Voyage-4-Nano作为轻量级模型,通过极致的模型结构优化与训练策略,实现了“以小博大” 的检索性能:其检索质量不仅远超同量级的文本嵌入模型,还直接超越了voyage-3.5-lite等更大体量的前代模型。同时,作为开放权重的开源模型,Voyage-4-Nano支持本地部署,无需调用付费API,彻底避免了按token计费的使用成本,对于中小开发者、创业团队而言,可零成本实现生产级的语义检索效果。而即使与付费的嵌入模型服务相比,其本地部署的特性也能大幅降低长期使用的成本,尤其适合检索请求量大、对成本敏感的场景。

3. 支持嵌套表示学习,嵌入维度灵活自定义且损失极小

Voyage-4-Nano采用Matryoshka Representation Learning(MRL,嵌套表示学习) 技术进行训练,支持2048、1024、512、256四种嵌入维度的灵活选择,且在降低嵌入维度时,检索质量的损失几乎可以忽略。嵌入维度的自定义让模型能适配不同的使用场景:高维度(2048)适合对检索精度要求极高的场景,如学术文献检索、专业知识问答;低维度(256/512)适合对存储与计算资源要求严格的场景,如移动端、嵌入式设备端应用,既减少了向量的存储占用,又提升了向量相似度计算的速度,实现了“精度与效率的灵活平衡”。

4. 量化感知训练,多输出精度适配不同硬件与部署场景

Voyage-4-Nano融入了Quantization-Aware Training(量化感知训练) 技术,支持多种输出精度的自定义,且在降低精度时不会显著影响检索效果。该模型支持的输出精度包括32位浮点(float32)、8位有符号整数(int8)、8位无符号整数(uint8)、二进制(binary/ubinary),不同精度可适配不同的硬件环境与部署需求:32位浮点适合高性能GPU环境,追求极致的向量精度;8位整数适合普通CPU、低性能GPU环境,在减少计算资源占用的同时保证检索效果;二进制精度则适合资源极度受限的嵌入式设备,大幅降低存储与计算开销,让文本嵌入模型能在轻量硬件上落地。

三、技术细节

Voyage-4-Nano的高性能与高灵活性,源于其底层扎实的技术设计与参数配置,从基础参数到训练技术,再到框架支持,均围绕“轻量级、高性能、易使用”进行优化,以下是其核心技术细节的全面解析:

1. 基础核心参数

Voyage-4-Nano的基础参数经过极致优化,在保证模型能力的同时最大限度降低了资源占用,其核心基础参数如下表所示:

参数类别 具体参数值/说明
开发主体 Voyage AI(已被MongoDB收购)
开源协议 Apache 2.0(免费商用、可修改)
支持语言 多语言
上下文长度 32000(支持超长文本处理)
参数量 180M(非嵌入)+160M(嵌入)
支持框架 Transformers、Sentence Transformers
技术依赖 Safetensors、text-embeddings-inference、custom_code
适配硬件 CPU、NVIDIA GPU(RTX 30/40系列、A100、H100等)、Apple M系列
量化版本 提供5个官方量化版本,适配不同部署场景

2. 核心训练技术

Voyage-4-Nano的两大核心训练技术是其实现“性能与轻量化平衡”的关键,也是区别于传统文本嵌入模型的核心技术点:

  • 嵌套表示学习(MRL):传统文本嵌入模型的嵌入维度固定,若要适配不同场景需重新训练模型,而MRL技术让Voyage-4-Nano在一次训练中学习到多维度的向量表示,2048维的基础嵌入向量可直接截断为1024、512、256维,且截断后的向量保留了核心的语义信息,检索质量损失极小,无需额外训练即可实现维度自定义。

  • 量化感知训练(QAT):传统模型的量化操作通常在训练后进行,容易导致模型性能下降,而Voyage-4-Nano在训练阶段就融入了量化感知,让模型提前适应低精度的计算方式,训练完成后进行量化时,能最大程度保留模型的语义提取能力,实现“低精度、高性能、低资源”的兼顾。

3. 模型调用核心设计

Voyage-4-Nano在调用设计上做了大量人性化优化,降低了开发者的使用门槛:

  • 专属提示词自动适配:针对查询与文档两种不同的检索场景,模型预设了专属的提示词,分别为“Represent the query for retrieving supporting documents: ”(查询向量生成)与“Represent the document for retrieval: ”(文档向量生成),在使用Sentence Transformers框架调用时,可通过专属方法自动添加提示词,无需开发者手动编写,提升向量生成的精准度。

  • 均值池化与向量归一化:模型通过均值池化技术将模型输出的隐藏状态转化为固定长度的嵌入向量,有效解决了变长文本的向量生成问题;同时对生成的向量进行L2归一化,让向量的模长为1,保证了不同文本生成的向量在同一度量空间中,提升了相似度计算的准确性。

  • 与MongoDB深度集成:由于Voyage AI已被MongoDB收购,Voyage-4-Nano与MongoDB数据库实现了深度集成,可直接与MongoDB的向量搜索功能、mongot引擎配合使用,无需额外搭建接口,开发者可直接将模型生成的嵌入向量存储到MongoDB中,实现“向量生成-存储-检索”的一站式开发,大幅降低了语义检索系统的搭建复杂度。

4. 硬件部署基础要求

作为轻量级模型,Voyage-4-Nano的部署硬件门槛极低,既支持高性能GPU加速,也支持普通CPU、嵌入式设备的基础运行,不同部署场景的硬件要求如下:

  • 本地开发(CPU):8核及以上CPU,16GB及以上内存,20GB及以上SSD存储空间,可满足基础的模型调用与调试;

  • 本地开发(GPU加速):NVIDIA RTX 30/40系列、A100、H100等支持flash_attention_2的GPU,16GB及以上VRAM,可大幅提升模型推理速度;

  • 设备端/嵌入式部署:四核及以上嵌入式CPU,8GB及以上内存,支持int8或二进制量化,可运行低维度、低精度的模型版本;

  • 生产级本地部署:32核及以上CPU/多卡GPU,64GB及以上内存,NVMe固态硬盘,可满足高并发的检索请求。

Voyage-4-Nano:Voyage AI推出的开源轻量级文本嵌入模型,低成本实现高性能语义检索

四、应用场景

Voyage-4-Nano凭借轻量级、低成本、高灵活、多语言的特性,以及与Voyage 4系列的无缝衔接能力,可适配从本地开发测试设备端落地,再到小规模生产应用的多种场景,同时也是搭建语义检索、智能问答、RAG等AI应用的核心基础组件,其主要应用场景如下:

1. 开发者本地开发与原型验证

这是Voyage-4-Nano的核心应用场景。对于开发语义检索、RAG、智能问答、文档助手等AI应用的开发者而言,在项目原型开发与调试阶段,无需调用付费的大模型嵌入API,也无需部署高性能的服务器,可直接在本地电脑上部署Voyage-4-Nano,完成模型的功能调试、逻辑验证、参数优化。其与Voyage 4系列共享的嵌入空间,让开发者在本地开发完成后,可直接将项目迁移到生产环境,无需对数据与代码做大幅修改,实现“本地开发,无缝上云/生产”。

2. 设备端与嵌入式应用的文本嵌入

Voyage-4-Nano支持低维度嵌入(256/512)与低精度量化(int8/二进制),使其能适配移动端、嵌入式设备、物联网设备等资源受限的硬件环境,成为设备端AI应用的文本嵌入核心组件。例如,在智能音箱、车载智能助手、离线文档阅读器等设备中,可通过Voyage-4-Nano实现本地的语义检索与智能问答,无需依赖网络调用云端API,既提升了响应速度,又保证了数据的本地安全性。

3. 小规模团队的生产级语义检索应用

对于中小创业团队、小微企业、个人开发者而言,若需要搭建生产级的语义检索应用,但受限于成本与技术储备,无法部署大型文本嵌入模型,Voyage-4-Nano是最优选择。该模型的开源特性让其无需支付任何使用费用,本地部署的特性避免了按token计费的长期成本,同时其优异的检索性能可满足大部分中小规模场景的需求,如企业内部的文档检索、个人的知识库管理、小型网站的智能搜索等。

4. 多语言场景的轻量级语义匹配

Voyage-4-Nano支持多语言处理,可对不同语言的文本生成高保真的嵌入向量,实现跨语言的语义检索与匹配。例如,在跨境电商的商品搜索系统、多语言的智能客服、国际学术文献的检索平台中,可通过Voyage-4-Nano实现不同语言文本的语义匹配,无需为不同语言单独训练模型,大幅降低了多语言AI应用的开发成本。

5. MongoDB生态的AI应用开发

由于Voyage AI与MongoDB的深度集成,Voyage-4-Nano成为MongoDB生态AI应用开发的专属轻量级嵌入模型。开发者可将Voyage-4-Nano与MongoDB的社区版、Atlas平台配合使用,直接将模型生成的嵌入向量存储到MongoDB中,利用MongoDB的向量搜索功能实现语义检索,无需额外搭建向量数据库,简化了“数据存储-向量生成-语义检索”的架构,适合搭建生产级的视频搜索、文档检索、智能问答等应用。

五、使用方法

Voyage-4-Nano支持TransformersSentence Transformers两大主流Python框架的调用,其中Sentence Transformers框架调用更简洁,适合快速开发;Transformers框架调用更灵活,适合自定义开发,且两种方式均需开启trust_remote_code=True参数。同时,模型在GPU环境下可配置flash_attention_2与bfloat16实现推理加速,以下是两种调用方式的详细步骤与代码示例,均基于Python环境,需提前安装相关依赖库。

前置准备:安装依赖库

无论使用哪种框架,都需要先安装Python基础依赖库,命令如下:

# 安装Transformers、Torch核心库
pip install torch transformers
# 安装Sentence Transformers框架(若使用该方式)
pip install sentence-transformers
# 安装Safetensors(模型权重存储格式)
pip install safetensors

若使用NVIDIA GPU加速,需提前安装对应版本的CUDA与cuDNN,保证Torch能调用GPU资源。

1. 基于Transformers框架的调用方法

Transformers框架是Hugging Face的核心框架,调用Voyage-4-Nano时需要自定义均值池化与向量归一化逻辑,同时手动为查询文本添加专属提示词,适合有一定开发基础、需要自定义模型逻辑的场景,完整代码示例与步骤如下:

import torch
from transformers import AutoModel, AutoTokenizer

# 定义均值池化函数:将模型隐藏状态转化为固定长度嵌入向量
def mean_pool(
  last_hidden_states: torch.Tensor, attention_mask: torch.Tensor
) -> torch.Tensor:
  input_mask_expanded = (
    attention_mask.unsqueeze(-1).expand(last_hidden_states.size()).float()
  )
  sum_embeddings = torch.sum(last_hidden_states * input_mask_expanded, 1)
  sum_mask = input_mask_expanded.sum(1)
  sum_mask = torch.clamp(sum_mask, min=1e-9) # 避免除零错误
  output_vectors = sum_embeddings / sum_mask
  return output_vectors

# 配置设备:有GPU用GPU,无GPU用CPU
device = "cuda" if torch.cuda.is_available() else "cpu"

# 加载模型与分词器:开启trust_remote_code,GPU配置flash_attention_2与bfloat16加速
model = AutoModel.from_pretrained(
  "voyageai/voyage-4-nano",
  trust_remote_code=True,
  attn_implementation="flash_attention_2" if device == "cuda" else "eager",
  dtype=torch.bfloat16 if device == "cuda" else torch.float32,
).to(device)
tokenizer = AutoTokenizer.from_pretrained("voyageai/voyage-4-nano")

# 生成查询文本的嵌入向量:手动添加专属提示词
query = "What is the fastest route to 88 Kearny?"
prompt = "Represent the query for retrieving supporting documents: " # 查询专属提示词
# 文本分词:设置最大长度32768,自动padding与truncation
inputs = tokenizer(
  prompt + query, return_tensors="pt", padding=True, truncation=True, max_length=32768
)
inputs = {k: v.to(device) for k, v in inputs.items()}

# 模型推理:关闭梯度计算提升速度
with torch.no_grad():
  outputs = model.forward(**inputs)
# 均值池化+L2归一化,生成最终嵌入向量
embeddings = mean_pool(outputs.last_hidden_state, inputs["attention_mask"])
embeddings = torch.nn.functional.normalize(embeddings, p=2, dim=1)

# 打印嵌入向量形状
print(f"嵌入向量形状:{embeddings.shape}") # 输出:torch.Size([1, 2048])

2. 基于Sentence Transformers框架的调用方法

Sentence Transformers框架对文本嵌入模型做了高度封装,调用Voyage-4-Nano时无需自定义池化与归一化逻辑,且通过encode_queryencode_document方法可自动添加专属提示词,还能通过参数直接设置嵌入维度与输出精度,是最推荐的快速开发方式,完整代码示例与步骤如下:

from sentence_transformers import SentenceTransformer
import torch

# 配置设备
device = "cuda" if torch.cuda.is_available() else "cpu"

# 加载模型:开启trust_remote_code,设置默认嵌入维度2048
# GPU环境可添加model_kwargs配置flash_attention_2与bfloat16加速
model_kwargs = {}
if device == "cuda":
  model_kwargs = {
    "attn_implementation": "flash_attention_2",
    "dtype": torch.bfloat16
  }

model = SentenceTransformer(
  "voyageai/voyage-4-nano",
  trust_remote_code=True,
  truncate_dim=2048, # 设置默认嵌入维度
  model_kwargs=model_kwargs
).to(device)

# 准备测试数据
query = "Which planet is known as the Red Planet?" # 查询文本
documents = [ # 文档文本
  "Venus is often called Earth's twin because of its similar size and proximity.",
  "Mars, known for its reddish appearance, is often referred to as the Red Planet.",
  "Jupiter, the largest planet in our solar system, has a prominent red spot.",
  "Saturn, famous for its rings, is sometimes mistaken for the Red Planet."
]

# 生成嵌入向量:自动添加专属提示词,无需手动处理
query_embedding = model.encode_query(query) # 生成查询向量
document_embeddings = model.encode_document(documents) # 生成文档向量

# 自定义嵌入维度与输出精度:truncate_dim设置维度,precision设置精度
query_embedding_512 = model.encode_query(query, truncate_dim=512, precision="int8")

# 打印嵌入向量形状
print(f"查询向量形状(2048维):{query_embedding.shape}") # 输出:(2048,)
print(f"文档向量形状(2048维):{document_embeddings.shape}") # 输出:(4, 2048)
print(f"查询向量形状(512维int8):{query_embedding_512.shape}") # 输出:(512,)

关键参数说明

  • truncate_dim:设置嵌入维度,支持2048、1024、512、256;

  • precision:设置输出精度,支持float32、int8、uint8、binary、ubinary;

  • encode_query:生成查询文本向量,自动添加查询专属提示词;

  • encode_document:生成文档文本向量,自动添加文档专属提示词。

六、常见问题解答

Q1:Voyage-4-Nano支持哪些嵌入维度与输出精度,如何修改?

A1:Voyage-4-Nano支持2048、1024、512、256四种嵌入维度,支持float32、int8、uint8、binary、ubinary五种输出精度。在Sentence Transformers框架中,可通过truncate_dim参数设置嵌入维度,precision参数设置输出精度,可在模型初始化时全局设置,也可在encode_query/encode_document方法中单独设置;在Transformers框架中,需先生成2048维的基础嵌入向量,再通过手动截断实现低维度,通过量化操作实现低精度。

Q2:Voyage-4-Nano与Voyage 4系列其他模型有什么区别,该如何选择?

A2:Voyage 4系列包含四款模型,核心区别在于性能、资源占用与适用场景:voyage-4-large是旗舰级模型,检索精度最高,资源占用最大,适合高保真索引、专业领域检索;voyage-4是通用型模型,平衡精度、成本与延迟,适合生产级通用检索;voyage-4-lite是轻量生产级模型,资源占用低、吞吐量高,适合高并发查询;Voyage-4-Nano是开源轻量级模型,资源占用最小,适合本地开发、设备端应用。四款模型共享嵌入空间,可根据开发与生产的不同阶段灵活切换。

Q3:使用Voyage-4-Nano时,是否需要为不同语言单独训练模型?

A3:不需要。Voyage-4-Nano是一款多语言文本嵌入模型,其在训练阶段已融入了多种语言的语义信息,可直接对不同语言的文本生成嵌入向量,且不同语言的向量处于同一度量空间,可直接进行跨语言的语义相似度计算,无需为不同语言单独训练或微调模型。

Q4:Voyage-4-Nano支持GPU加速吗,需要哪些配置?

A4:支持。Voyage-4-Nano支持NVIDIA GPU的flash_attention_2与bfloat16加速,需要的GPU配置为RTX 30/40系列、A100、H100等支持flash_attention_2的型号,同时需安装对应版本的CUDA与cuDNN,保证Torch能正常调用GPU资源。在调用模型时,只需将attn_implementation设置为flash_attention_2dtype设置为torch.bfloat16即可开启加速。

Q5:Voyage-4-Nano生成的嵌入向量,能否与其他非Voyage 4系列模型的向量对比?

A5:不能。Voyage-4-Nano的嵌入向量基于Voyage 4系列的专属嵌入空间生成,而不同厂商、不同系列的文本嵌入模型,其嵌入空间的设计与训练数据不同,向量的语义表示也存在差异,因此无法与非Voyage 4系列模型生成的向量直接进行相似度计算与对比。

Q6:如何将Voyage-4-Nano与MongoDB配合使用,实现向量存储与检索?

A6:由于Voyage AI与MongoDB深度集成,可直接将Voyage-4-Nano生成的嵌入向量以数组形式存储到MongoDB的集合中,然后通过MongoDB的向量搜索功能($vectorSearch)实现语义检索。具体步骤为:1. 使用Voyage-4-Nano生成文本的嵌入向量;2. 将向量与文本信息一起插入到MongoDB集合中;3. 使用MongoDB的$vectorSearch操作符,根据查询向量与集合中的向量进行相似度匹配,返回检索结果。MongoDB社区版已支持向量搜索的自动嵌入功能,可进一步简化操作。

Q7:Voyage-4-Nano的开源协议是什么,是否可以商用?

A7:Voyage-4-Nano基于Apache 2.0开源协议发布,该协议允许个人与企业免费使用、修改、商用该模型,只需在产品或服务中保留原作者的版权声明,无需向Voyage AI支付任何费用,也无需公开修改后的代码。

Q8:使用Voyage-4-Nano时,提示词是否可以自定义,还是必须使用官方预设的提示词?

A8:建议使用官方预设的提示词,因为模型在训练阶段已针对官方提示词做了优化,使用预设提示词能获得最佳的检索效果。官方预设的查询提示词为“Represent the query for retrieving supporting documents: ”,文档提示词为“Represent the document for retrieval: ”。若有特殊需求,也可自定义提示词,但可能会导致检索质量下降。

七、相关链接

八、总结

Voyage-4-Nano是Voyage AI推出的一款面向语义检索任务的开源轻量级多语言文本嵌入模型,隶属于Voyage 4系列,基于Apache 2.0协议开源,可免费商用,其核心定位是为开发者提供“低成本、高性能、易部署”的文本嵌入解决方案,填补了轻量级模型在检索性能上的空白。该模型拥有32000的超长上下文长度,参数量为180M(非嵌入)+160M(嵌入),支持Transformers与Sentence Transformers两大框架调用,适配CPU、GPU、嵌入式设备等多种硬件环境,其与Voyage 4系列共享的嵌入空间让模型切换无需重新索引,嵌套表示学习与量化感知训练则实现了嵌入维度与输出精度的灵活自定义,在保证检索质量的同时大幅降低了资源占用与部署成本。作为Voyage 4系列中主打本地开发与设备端应用的版本,Voyage-4-Nano不仅性能超越了voyage-3.5-lite等更大体量的模型,还与MongoDB实现了深度集成,可一站式完成“向量生成-存储-检索”的语义检索系统搭建,是开发者本地开发、中小团队生产应用、设备端AI落地的优质选择,同时其与系列其他模型的无缝衔接能力,让项目能从本地开发平滑迁移到生产环境,大幅降低了AI应用从原型到落地的技术与时间成本,为语义检索、RAG、智能问答等AI应用的轻量级开发提供了核心技术支撑。

打赏
THE END
作者头像
AI铺子
关注ai行业发展,专注ai工具推荐