RAG 应用开发的 7 种主流 Embedding 模型解析
本文介绍了检索增强生成(RAG)中关键的 7 种文本 Embedding 模型,包括 BGE、GTE、E5、Jina、Instructor、XLM-Roberta 及 text-embedding-ada-002。内容涵盖各模型的特性、适用场景、性能对比及 Python 代码集成示例,并探讨了本地化部署方案,旨在帮助开发者选择合适的向量表示模型以优化语义搜索与文档检索效果。

本文介绍了检索增强生成(RAG)中关键的 7 种文本 Embedding 模型,包括 BGE、GTE、E5、Jina、Instructor、XLM-Roberta 及 text-embedding-ada-002。内容涵盖各模型的特性、适用场景、性能对比及 Python 代码集成示例,并探讨了本地化部署方案,旨在帮助开发者选择合适的向量表示模型以优化语义搜索与文档检索效果。

在自然语言处理(NLP)领域,Embedding 模型是将文本数据转化为数值向量的核心技术。这种表示法让计算机能够便捷地衡量文本间的语义关联,已成为多种基础 NLP 任务的核心,如文本相似度判定、语义搜索、信息检索、文本重新排序、聚类以及作为下游任务的特征输入。
随着大语言模型(LLM)的升温,Embedding 技术在检索增强生成(RAG)应用的文档检索环节中也得到了广泛应用。选择合适的文本 Embedding 模型对于检索阶段的效果至关重要。本文将深入梳理 2023-2024 年 AI 和 NLP 应用开发中值得关注的 7 种 Embedding 模型,并提供集成代码示例与部署建议。
BGE 是由智源研究院(BAAI)团队开发的一款文本 Embedding 模型。该模型可以将任何文本映射到低维密集向量,这些向量可用于检索、分类、聚类或语义搜索等任务。此外,它还可以用于 LLMs 的向量数据库。
from sentence_transformers import SentenceTransformer
# 加载模型
model = SentenceTransformer("BAAI/bge-base-zh-v1.5")
# 编码句子
sentences = ["你好,世界", "Hello, World"]
embeddings = model.encode(sentences)
print(embeddings.shape) # 输出向量维度
GTE 是阿里巴巴达摩院推出的文本 Embedding 技术。它基于 BERT 框架构建,分为 GTE-large、GTE-base 和 GTE-small 三个版本。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Alibaba-NLP/gte-base-zh-v1.5")
query = "如何部署大模型"
doc = "使用 Xinference 可以方便地部署本地大模型"
similarity = model.similarity(query, doc)
print(f"相似度得分:{similarity}")
E5-embedding 是由 intfloat 团队研发的一款先进的 Embedding 模型。其设计初衷是为各种需要单一向量表示的任务提供高效且即用的文本 Embedding。
jina-embedding-s-en-v1 是 Jina AI 的 Finetuner 团队打造的文本 Embedding 模型。它基于 Linnaeus-Clean 数据集训练,包含 3.8 亿对句子,涵盖查询与文档配对。
Instructor 是由香港大学自然语言处理实验室团队推出的一种指导微调的文本 Embedding 模型。该模型可以生成针对任何任务和领域的文本 Embedding,只需提供任务指导,无需任何微调。
from instructor_embedder import InstructorEmbedding
model = InstructorEmbedding('hkunlp/instructor-base')
instruction = "Represent the document for retrieval:"
text = "这是一段关于 RAG 技术的描述"
embedding = model.encode([text], instruction=instruction)
XLM-Roberta 是 Facebook AI 推出的一种多语言版本的 Roberta 模型。它在大量的多语言数据上进行预训练,旨在提供能够处理多种语言的强大文本表示模型。
text-embedding-ada-002 是一个由 OpenAI 开发的文本 Embedding 模型(注:此处指兼容 Hugging Face 的实现)。该模型提供了一个与 Hugging Face 库兼容的版本,分词器从 openai/tiktoken 适应而来。
import tiktoken
# 使用 tiktoken 进行分词
encoding = tiktoken.get_encoding("cl100k_base")
tokens = encoding.encode("This is a test string.")
print(tokens)
在深入了解了这些先进的 Embedding 模型后,开发者通常会考虑如何轻松部署和使用它们。除了直接调用 API,本地化部署能更好地保障数据隐私并降低延迟。
Xinference 是一个开源 AI 模型推理引擎,专为轻松部署大语言模型、Embedding 模型和多模态模型而设计。它预置了 BGE、GTE 和 E5 Embedding 等热门模型。
要在 Xinference 中运行和部署 GTE 模型,执行以下命令:
xinference launch --model-name "gte-base" --model-type "embedding" --endpoint http://127.0.0.1:9997
一旦启动,可以通过 HTTP 请求与模型进行交互,发送文本并获取向量结果。这种方式简化了模型部署过程,提供了无缝的交互体验。
对于生产环境,建议使用 Docker 容器化部署模型服务,以确保环境一致性。
FROM python:3.9-slim
RUN pip install xinference sentence-transformers
COPY app.py /app/
CMD ["python", "/app/app.py"]
在选择 Embedding 模型时,建议遵循以下原则:
掌握合适的 Embedding 模型是构建高效 RAG 系统的关键一步。通过理解各模型的特性并结合实际业务场景进行选型与部署,开发者可以显著提升系统的检索准确率与响应速度。随着技术的演进,更多高效的模型将不断涌现,持续优化 NLP 应用的下限与上限。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online