背景
在Weknora RAG检索增强生成系统时,核心挑战是:如何在有限的计算资源下,最大化检索精确度,同时控制成本和延迟。
本文记录了在知识密集型场景下的优化实践。基于 20多个 PDF 财务报表文档,每个文档按结构感知最少切分1700个chunk,多达2300chunk、20 个真实问答对进行测试,单库检索精确率从85%~90%提升至90%~95%,并在模型选型、检索策略、评估体系等方面积累了可复用的经验。
一、模型选型的性价比
1.1 嵌入模型:为什么选择 Qwen3-Embedding-4B + MRL
在嵌入模型选型上,对比了多个方案:
模型 | 参数量 | 默认维度 | vLLM 显存占用 | 长文理解能力 |
Jina-Embeddings-v5-text-small | 0.6B | 1024 | ~7GB | 一般 |
Qwen3-Embedding-4B | 4B | 2560 | ~20GB | 优秀(支持 32K) |
关键发现:
- Qwen3-Embedding-4B在中文通用场景比 0.6B 模型评分高 ~4 分,在医疗、法律、代码等严苛场景高 ~10 分
- 该模型原生支持Matryoshka Representation Learning(MRL),可在 32~2560 维之间自定义输出维度
- 通过将维度从 2560 降至1024,保留 95% 以上的语义表达能力
vLLM 部署配置:
vllm serve /data/modelscope/hub/models/Qwen/Qwen3-Embedding-4B \ --host 0.0.0.0 --port 7777 \ --task embed \ --trust-remote-code \ --dtype half \ --max-model-len 32768 \ --gpu-memory-utilization 0.8 \ --hf-overrides '{"is_matryoshka": true, "matryoshka_dimensions": [1024]}' \ --served-model-name qwen3-emb-4b请求时需显式指定维度:
curl -X POST http://127.0.0.1:7777/v1/embeddings \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3-emb-4b", "input": ["公司2024年营收达到50亿元,同比增长20%。"], "dimensions": 1024 }'重要特性:Qwen3-Embedding-4B 输出已做 L2 归一化(范数≈1.0),可直接计算余弦相似度,无需额外归一化步骤,加速向量库检索。
1.2 重排序模型:为什么坚持用 0.6B
在 Reranker 选型上,我们选择了Qwen3-Reranker-0.6B非量化版本,而非更高的 4B模型。
决策依据:
场景 | 0.6B 得分 | 4B 得分 | 提升幅度 |