RAG系统嵌入模型怎么选?选型策略和踩坑指南

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 嵌入是RAG系统的核心,直接影响检索质量。本文详解嵌入原理,解析稠密/稀疏、长上下文、多向量等类型,梳理选型关键:领域匹配、上下文长度、维度与成本,并结合MTEB基准给出实用建议,助你为业务挑选高效稳健的嵌入方案。

检索增强生成(RAG)已成为构建生成式 AI 应用的主流架构,企业选择它主要原本是可以用自有数据约束模型输出,使答案更准确、可更新且更贴合业务场景。RAG 的效果在很大程度上取决于检索到的上下文质量——提升效果的常用手段包括合理切分文本块(chunking)、选用合适的嵌入模型与采用稳健的检索策略。嵌入(embeddings)是这一流程的核心:它将词、句与文档映射到向量空间,在该空间中语义关系变为可度量的数学关系;若嵌入选型不当,会带来检索噪声导致模型的输出不准确。所以本文将说明嵌入的基本原理与重要性、列出选型时的关键考量,并对典型模型与适用场景给出实用建议,帮助你为 RAG 系统挑选既高效又稳健的嵌入方案。

什么是嵌入?

嵌入是对语言中含义与模式的数值化表示。这些数字帮助系统找到与问题或主题高度相关的信息。这些嵌入由嵌入模型生成。嵌入模型可以将词、图像、文档,甚至声音,转换为一串称为向量的数字。

你可能在大语言模型语境下了解过嵌入,但嵌入的历史其实更悠久。

目前,大多数嵌入都由语言模型创建。与给每个 token 或词分配静态向量不同,语言模型会创建上下文化的词向量,让词/句子/片段在不同上下文下拥有不同表示。这些向量随后可被其他系统用于各类任务。

生成"文本"嵌入向量的方法有多种。最简单的方法是对模型产生的所有"token 嵌入"取平均值,而高质量文本嵌入模型往往针对嵌入任务专门训练。

我们可以用

sentence-transformers

来生成文本嵌入: from sentence_transformers import SentenceTransformer

 # Load model  
 model = SentenceTransformer("sentence-transformers/all-mpnet-base-v2")  

 # Convert text to text embeddings  
 vector = model.encode("Deephub Best  ever!")

嵌入向量的数值个数(即维度)取决于底层嵌入模型。可通过

vector.shape

方法查看嵌入向量的维度。

嵌入在 RAG 中为何重要?

语义理解:嵌入将词、句子或文档转成向量(数字列表),让相近语义彼此靠近。这帮助系统理解语境与含义,而非仅做字面匹配。

高效检索:RAG 需要快速找到最相关的段落或文档。嵌入让检索更快更容易,通常结合 k 近邻(k-NN)等算法。

更高准确度:借助嵌入,模型能识别与你问题相关的信息,即使没用相同措辞。这意味着更准确、更相关的答案。

嵌入的类型

根据系统需要处理的信息类型不同,嵌入也有多种形式。

按系统需理解的信息类型划分

词嵌入(Word Embeddings)

词嵌入把每个词表示为多维空间中的一个点。含义相近的词,如 "dog" 与 "cat",会彼此靠近。这帮助计算机理解词与词之间的关系,而非只看拼写。

常见的词嵌入模型包括:

Word2Vec:从海量文本中学习词关系

GloVe:关注词的共现频率

FastText:将词拆成子词片段,更擅长处理罕见词或拼写错误

句子嵌入(Sentence Embeddings)

有些情况需要整句才能完整表达含义。句子嵌入将整句语义捕捉为一个向量。

知名的句子嵌入模型有:

Universal Sentence Encoder (USE):对各种句式表现良好,包括问句与陈述句

SkipThoughts:通过预测相邻句来学习,更好理解上下文与意图

文档嵌入(Document Embeddings)

文档可以是一个段落,也可以是整本书。文档嵌入把全文转成单个向量,便于在海量文档中检索与查询相关的内容。

主流的文档嵌入模型包括:

Doc2Vec:基于 Word2Vec 扩展,适用于更长文本

Paragraph Vectors:类似 Doc2Vec,但聚焦段落等较短文本单元

图像嵌入(Image Embeddings)

RAG 系统不只处理文本,还可处理图像。图像嵌入将图片转为一串数字,描述颜色、形状与模式。常用的图像嵌入模型是卷积神经网络(CNN),它对图像模式识别尤为擅长。

按嵌入的特性划分

嵌入具有不同特性,这会影响其工作方式与适用场景:

稠密嵌入(Dense) :稠密嵌入的向量几乎每个位置都有值,每个数都携带一些信息。稠密向量紧凑高效,在较小空间内承载丰富细节,便于快速相似度比较。

稀疏嵌入(Sparse) :稀疏嵌入的相当多位置为 0,只有少数位置有值,0 不携带信息。稀疏表示有助于突出最关键的特征,便于识别与众不同之处。

长上下文嵌入(Long Context) :有时需要理解整篇文档或长对话,而非短句。长上下文嵌入可一次处理大量文本。旧模型只能看短文本,如果给它们整篇文章,就必须切分,容易丢失关键信息或主线。新模型(如 BGE-M3)可一次接收上千词(最高 8,192 token),帮助系统保留完整语义脉络。

多向量嵌入(Multi-Vector) :通常一个对象(词/文档)只有一个向量;多向量嵌入为每个对象分配多个向量,各自刻画不同侧面。多向量能捕捉更细的特征与关系,带来更丰富、更准确的结果。

文本嵌入模型的关键参数

在选模型前,先要明确看什么指标。关键因素包括:

上下文窗口(Context Window)

上下文窗口是模型一次能处理的最大文本长度。例如窗口为 512 token 的模型,一次只能读 512 个词或词片;更长的文本必须切分。一些模型(如 OpenAI 的 text-embedding-ada-002(8192 token)和 Cohere 的嵌入模型(4096 token))可以处理更长文本。更大的上下文窗口允许处理更长文档而不丢失信息,对检索长文章、论文或报告很有帮助。

分词单元(Tokenization Unit)

分词是模型将文本拆分为 token 的方式。不同模型不同:

子词分词(BPE):把词拆成更小片段,如 "unhappiness" → "un" + "happiness",有助处理生僻或新词

WordPiece:与 BPE 类似,常用于 BERT 系列

词级分词:按整词拆分,对稀有词支持较差

分词方式影响模型对不同词,尤其是非常见词的理解能力。多数现代模型采用子词分词以获得更好灵活性。

维度(Dimensionality)

维度是模型为每段文本生成的向量长度。例如有的模型输出 768 维,有的 1024 维,甚至 3072 维。更高维可容纳更细节,但需要更多计算与存储;低维更快更省,但可能损失细节。

词表大小(Vocabulary Size)

即模型已知的唯一 token 数。更大的词表可覆盖更多词与语言,但占更多内存;更小词表更快,但可能不理解生僻或专业术语。

例如:多数现代模型的词表规模在 30,000–50,000 之间。

训练数据(Training Data)

训练数据是模型学习的来源。

通用语料:来自网页、书籍等多样文本,适合通用任务

领域语料:来自医疗、法律等专业文本,擅长特定垂直领域

在特定数据上训练的模型在该领域表现更好,但在通用任务上可能逊色。

成本(Cost)

最后就是成本考量了,它包含使用模型的费用与算力开销。取决于接入方式:

API 模型:按用量计费,如 OpenAI、Cohere

开源模型:使用免费,但需自备硬件(如 GPU)和运维能力

API 模型易上手,但数据量大时成本上升;开源自部署省授权费,但需要更多搭建与维护。

选择嵌入时的关键考量

设计 RAG 时我首先会问:"系统要处理什么数据?"若是通用知识或客服 FAQ,OpenAI 的 text-embedding-3-small 这类通用嵌入通常足够;若是医疗、法律或金融等专业领域,BioBERT、SciBERT、Legal-BERT 等领域模型更合适,它们对该领域语言与语境更敏感。若还需处理产品图片或语音查询,选择多模态嵌入。CLIP 非常适合同时处理文本与图像。

除此以外还需要评估查询与文档是短是长、结构化还是非结构化。有些模型擅长短文本,有些更擅长长文本。嵌入维度影响很大。高维(如 1536 或 4096)能捕捉更细微差别与上下文,通常提升检索准确性,但计算与存储成本高。

低维(如 384 或 768)更快更轻,适合扩展到百万级文档;代价是可能牺牲部分精度。实践中,建议从 384–768 维开始,性能与资源之间更均衡。现代向量数据库(Pinecone、Weaviate、FAISS 等)可以用量化或降维压缩嵌入,让你在不显著增加内存的情况下使用更大维度。

然后就是要确定计算的效率,比如对于实时应用,速度关键。若响应时延要求严格,选择推理延迟低的模型。DistilBERT、MiniLM 等轻量模型通常足够准确且更快。

最后就是评估 RAG 需要回答的问题类型,以及知识库内容的结构与长度。将内容切分为合适的块大小十分关键。上下文窗口大小是获得正确答案的关键因素之一。更大的上下文窗口在处理长且复杂的文档时会更有优势,能够提供更准确的回答。

选择合适嵌入的基准

新嵌入模型层出不穷,如何跟进?

MTEB 是社区运营的排行榜,比较 100+ 文本与图像嵌入模型,覆盖 1000+ 语言。它将评估指标、任务类型与广泛领域集中在一起,是选型的良好起点。

Massive Multilingual Text Embedding Benchmark(MMTEB)

传统基准常只覆盖少数语言或领域。MMTEB 进一步扩展,包含 250+ 语言、500+ 评测任务,并测试更具挑战的能力,如指令遵循、长文档检索、甚至代码检索。它是当前最全面的多语言嵌入基准之一。

如何使用 MTEB

MTEB 有助于挑选嵌入模型。不同模型在不同任务上表现各异。排行榜展示了各模型在广泛任务上的表现,帮助你按自身需求缩小范围。

但别被 MTEB 分数"迷惑"。MTEB 提供分数头部模型之间的差距往往很小。分数来自多任务平均,你看不到任务间的方差。有时榜首只略胜一筹,但是其实多个头部模型效果可能是一样的。

当模型非常接近时,平均分并不总是有意义。

建议:关注与你用例相似任务上的表现,这通常比总分更有参考价值。你不必深挖每个数据集,但知道文本类型(新闻、论文、社媒等)会有帮助。你可在数据集说明或样本中快速了解。

MTEB 很有用,但并不完美,别只盯最高分找到最适配你任务的模型才是最主要的。

在选择时一定要考虑你的应用需求。不存在对所有任务都最好的单一模型,这也是 MTEB 存在的意义:帮助你找到"更合适"的那个。

  • 你需要的语言是什么?模型是否支持?
  • 是否涉及金融、法律等专业词汇?
  • 模型体量多大?能否在你的硬件(如笔记本)上运行?
  • 你的机器内存有多大?模型能装得下吗?
  • 最大输入长度是多少?你的文本偏长还是偏短?

明确对项目最重要的要素后,你就可以按这些特性在 MTEB 榜单中过滤模型,找到既表现优秀又满足实际约束的选择。

总结

选择嵌入模型这件事,说复杂也复杂,说简单也简单。

复杂在于需要考虑的因素确实很多:领域匹配、上下文长度、计算成本、部署难度...每一个都可能影响最终效果

简单在于,只要抓住核心需求,很多选择其实是自然而然的。

我见过不少团队在模型选择上踩坑。有的盲目追求 MTEB 高分,结果发现在自己的数据上表现平平;有的为了省成本选了最便宜的方案,后来发现检索质量差到用户抱怨;还有的一开始就选了最复杂的多向量模型,结果系统跑得很慢,维护成本高得离谱。

所以在大多数情况下,你不需要最新最炫的模型。OpenAI 的 text-embedding-3-small、NVIDIA 的 NV-Embed-v2、甚至开源的 BGE 系列,对于大部分应用场景都够用。关键是要match你的具体需求。

建议先从简单的开始。选一个在你领域表现还不错的通用模型,快速搭建原型,看看效果。如果检索质量达不到要求,再考虑换更专业的模型;如果成本控制不住,再优化部署方案。别想着一步到位。RAG 系统的优化是个迭代过程,嵌入模型只是其中一环。有了数据、有了用户反馈,你自然知道该朝哪个方向调整。

链接:

https://avoid.overfit.cn/post/27f128bfa34442e299acf8f400e236a4

目录
相关文章
|
5天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1131 2
|
4天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
645 11
|
14天前
|
人工智能 运维 安全
|
5天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
311 0
|
12天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
830 23
|
5天前
|
缓存 供应链 监控
VVIC seller_search 排行榜搜索接口深度分析及 Python 实现
VVIC搜款网seller_search接口提供服装批发市场的商品及商家排行榜数据,涵盖热销榜、销量排名、类目趋势等,支持多维度筛选与数据分析,助力选品决策、竞品分析与市场预测,为服装供应链提供有力数据支撑。