RAG 应用中的文本 Embedding 模型深度指南
在自然语言处理(NLP)领域,Embedding 模型是将文本数据转化为数值向量的核心技术。这种表示法让计算机能够便捷地衡量文本间的语义关联,已成为多种基础 NLP 任务的核心,如文本相似度判定、语义搜索、信息检索、文本重新排序、聚类以及作为下游任务的特征输入。
随着大语言模型(LLM)的升温,Embedding 技术在检索增强生成(RAG)应用的文档检索环节中也得到了广泛应用。选择合适的文本 Embedding 模型对于检索阶段的效果至关重要。本文将深入梳理 2023-2024 年 AI 和 NLP 应用开发中值得关注的 7 种 Embedding 模型,并提供集成代码示例与部署建议。
1. BGE (BAAI General Embedding)
BGE 是由智源研究院(BAAI)团队开发的一款文本 Embedding 模型。该模型可以将任何文本映射到低维密集向量,这些向量可用于检索、分类、聚类或语义搜索等任务。此外,它还可以用于 LLMs 的向量数据库。
核心特性
- 多语言支持:支持中英文及多种其他语言。
- 多版本选择:提供 bge-large-en、bge-base-en、bge-small-en 等不同参数规模的版本,满足不同性能与资源需求。
- 高效 Reranker:BGE 提供了专门的 reranker 模型,比 Embedding 模型更准确但耗时,适用于对前 k 个文档进行精排。
- 开源许可:基于 MIT 许可发布,可免费用于商业目的。
- 生态集成:已集成到 Langchain、FlagEmbedding、Sentence-Transformers 等工具中。
代码示例
from sentence_transformers import SentenceTransformer
# 加载模型
model = SentenceTransformer("BAAI/bge-base-zh-v1.5")
# 编码句子
sentences = ["你好,世界", "Hello, World"]
embeddings = model.encode(sentences)
print(embeddings.shape) # 输出向量维度
2. GTE (General Text Embeddings)
GTE 是阿里巴巴达摩院推出的文本 Embedding 技术。它基于 BERT 框架构建,分为 GTE-large、GTE-base 和 GTE-small 三个版本。
核心特性
- 大规模训练:在大规模的多领域文本对语料库上训练,广泛适用于各种场景。
- 高性能:尽管参数量适中,但在大型文本 Embedding 基准测试中表现卓越,甚至超越部分参数规模更大的模型。
- 代码支持:可以直接处理代码,无需为每种编程语言单独微调,实现优越的代码检索效果。
代码示例
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Alibaba-NLP/gte-base-zh-v1.5")
query = "如何部署大模型"
doc = "使用 Xinference 可以方便地部署本地大模型"
similarity = model.similarity(query, doc)
()


