Qwen 向量嵌入机制

本文将深入解析 Gemini 与 Qwen 两大主流嵌入接口的批量处理能力、吞吐性能优化、向量维度规整及错误弹性设计。通过结合 rag-worker fast-ingest.ts 实践经验,帮助开发者系统理解两者在实际应用中的差异与优化策略,为高效构建 RAG 系统提供参考。

提供方能力对比

Gemini 与 Qwen 在嵌入接口设计上有显著差异,以下表格总结了两者在批量处理、并发策略、维度控制等方面的能力:

维度Gemini text-embedding-004Qwen text-embedding-v4
批处理不支持(单文本)支持批量 input[](上限 10)
并发策略高并发抵消单请求延迟适中并发 + 批量摊薄开销
维度控制outputDimensionality 可设固定输出(需截断/补零)
成本效率请求数多单请求承载多文本
失败范围单条整批(需整体重试)

总体来看,Gemini 采用“多请求 + 单文本”并发模式,而 Qwen 倾向于“少请求 + 批量”以提升吞吐与成本效率。

高性能参数

嵌入批量与并发参数直接影响吞吐与稳定性,以下代码片段展示了针对不同提供方的推荐配置:

const MAX_CONCURRENT_FILES = PROVIDER === 'gemini' ? 30 : 15;
const MAX_CONCURRENT_EMBEDDINGS = PROVIDER === 'gemini' ? 50 : 25;
const EMBEDDING_BATCH_SIZE = PROVIDER === 'gemini' ? 1 : 10;

设计 rationale:Gemini 无法批量,需提升并发;Qwen 批量已接近最优,适当降低并发防止速率限制。区分“文件并发”与“嵌入并发”可避免瓶颈叠加。

Qwen 批量实现

Qwen 支持批量嵌入,以下代码演示如何一次性提交多个文本以减少握手与认证开销:

async function getBatchEmbeddings(texts: string[]): Promise<number[][]> {
    const url = QWEN_BASE || 'https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings';
    const r = await fetch(url, {
        method: 'POST',
        headers: { 'Authorization': `Bearer ${QWEN_API_KEY}`, 'Content-Type': 'application/json' },
        body: JSON.stringify({ model: QWEN_EMBED_MODEL, input: texts })
    });
    if (!r.ok) throw new Error(`Qwen API error ${r.status}`);
    const j = await r.json();
    return j.data.map(d => d.embedding.slice(0, EMBED_DIM));
}

Gemini 需循环单条请求,Qwen 则可批量发送数组,显著提升效率。

维度规整

嵌入向量维度需统一,以下代码用于截断或补零,确保写入向量库时维度一致:

if (vec.length > EMBED_DIM) vec = vec.slice(0, EMBED_DIM); // 截断
else if (vec.length < EMBED_DIM) vec = [...vec, ...new Array(EMBED_DIM - vec.length).fill(0)]; // 补零

这样可避免 upsert 失败,截断保留高信息密度前缀,补零则不影响相似度计算。

错误弹性

嵌入批量处理常见失败包括网络、速率限制、批内违规与超时。推荐如下弹性设计:

  1. try/catch 包裹批次,失败记录 sourcePath + offset
  2. 指数退避(可扩展,当前仅短暂延时)
  3. 校验长度与数值(NaN / 空数组)
  4. 批失败不中断主循环,提高整体覆盖率

后续将补充性能基线、成本分析与未来扩展建议。

小结

本章对 Gemini 与 Qwen 嵌入接口的批量能力、并发策略、维度规整及错误弹性进行了系统对比。Gemini 适合高并发单文本场景,Qwen 则通过批量提升整体效率。合理配置参数、统一向量维度并增强错误弹性,是高效构建 RAG 系统的关键。开发者可根据实际需求选择合适方案,优化嵌入性能与成本。

文章导航

独立页面

这是书籍中的独立页面。

书籍首页

评论区