如何选择合适的 Embedding 模型
检索增强生成(RAG)是生成式 AI (GenAI)中的一类应用,支持使用自己的数据来增强 LLM 模型(如 ChatGPT)的知识。
RAG 通常会用到三种不同的AI模型,即 Embedding 模型、Rerankear模型以及大语言模型。本文将介绍如何根据您的数据类型以及语言或特定领域(如法律)选择合适的 Embedding 模型。
1.文本数据:MTEB 排行榜
HuggingFace 的 MTEB leaderboard 是一个一站式的文本 Embedding 模型榜!您可以了解每个模型的平均性能。
您可以将“Retrieval Average”列进行降序排序,因为这最符合向量搜索的任务。然后,寻找排名最高、占内存最小的模型。
Embedding 向量维度是向量的长度,即 f(x)=y 中的 y,模型将输出此结果。
最大 Token 数是输入文本块的长度,即 f(x)=y 中的 x ,您可以输入到模型中。
除了通过 Retrieval 任务排序外,您还可以根据以下条件进行过滤:
语言:支持法语、英语、中文、波兰语。(例如:task=retrieval,
Language=chinese)
法律领域文本。
(例如:task=retrieval,Language=law)
值得注意的是,由于部分训练数据最近才得以公开,一些 MTEB 上的 Embedding 模型可能是看似合适但实际不合适的模型,排名虚高,实际表现可能会有所不同。因此,HuggingFace 发布了一篇博客,介绍了判断模型排名是否可信的要点。点击模型链接(称为“模型卡片”)后:
寻找解释模型如何训练和评估的博客和论文。仔细查看模型训练使用的语言、数据和任务。同时,寻找由知名公司创建的模型。例如,在 voyage-lite-02-instruct 模型卡片上,您会看到其他的 VoyageAI 模型列出,但不包括这个。这是一个提示!该模型是一 个overfitting 模型,不应使用!
在下面的截图中,我会尝试来自 Snowflake 的新模型“snowflake-arctic-embed-1”,因为它排名较高,体积小到足以在我的笔记本电脑上运行,并且模型卡片上有博客和论文的链接。
blog-826.webp
使用 HuggingFace 的好处就是,在选择完 Embedding 模型后,如果您需要更换模型,只需要在代码中修改 model_name 即可!
import torch
from sentence_transformers import SentenceTransformer
# Initialize torch settings
torch.backends.cudnn.deterministic = True
DEVICE = torch.device('cuda:3' if torch.cuda.is_available() else 'cpu')
# Load the model from huggingface.
model_name = "WhereIsAI/UAE-Large-V1" # Just change model_name to use a different model!
encoder = SentenceTransformer(model_name, device=DEVICE)
# Get the model parameters and save for later.
EMBEDDING_DIM = encoder.get_sentence_embedding_dimension()
MAX_SEQ_LENGTH_IN_TOKENS = encoder.get_max_seq_length()
# Print model parameters.print(f"model_name: {model_name}")
print(f"EMBEDDING_DIM: {EMBEDDING_DIM}")
print(f"MAX_SEQ_LENGTH: {MAX_SEQ_LENGTH_IN_TOKENS}")```
![blog-826-2.webp](https://assets.zilliz.com/cms-cn/blog_826_2_bfe1862922.webp)
2.图像数据:ResNet50
有时候您可能想要搜索与输入图像相似的图片。比如,您可能在寻找更多苏格兰折耳猫的图片。在这种情况下,您可以上传一张苏格兰折耳猫的图片,并要求搜索引擎找到类似的图片。
ResNet50 是一种流行的 CNN 模型,最初由微软在 2015 年使用 ImageNet 数据训练。
同样,对于视频搜索,ResNet50 仍然可以将视频转换为 Embedding 向量。然后,对静态视频帧进行相似性搜索,返回给用户最相似的视频作为最匹配结果。
3.音频数据:PANNs
类似于以图搜图,您也可以基于输入的音频片段搜索相似音频。
PANNs(预训练音频神经网络)是常用的音频搜索 Embedding 模型,因为 PANNs 基于大规模音频数据集预训练,并且擅长音频分类和标记等任务。
4.多模态图像与文本数据:
SigLIP 或 Unum
近几年,涌现了一批针对多种非结构化数据(文本、图像、音频或视频)混合训练的 Embedding 模型。这些模型能够在同一向量空间内同时捕获多种类型的非结构化数据的语义。
多模态 Embedding 模型支持使用文本搜索图像、为图像生成文本描述或以图搜图。
OpenAI 在 2021 年推出的 CLIP 是标准的 Embedding 模型。但由于其需要用户自行进行微调,难以使用,所以到了 2024 年,谷歌推出了的 SigLIP(Sigmoidal-CLIP)。该模型在使用 zero-shot prompt时取得了不错的表现。
小型 LLM 模型如今变得越来越流行。因为这些模型不需要大型云计算集群,可以在笔记本电脑上运行。小模型占用的内存较少,延时更低,运行速度比大型模型更快。Unum 提供了多模态小型 Embedding 模型。
5.多模态文本、音频、视频数据
多模态文本-音频 RAG 系统大多使用多模态生成型 LLM。这类应用首先将声音转换为文本,生成声音-文本对,然后将文本转换为 Embedding 向量。之后您可以像往常一样使用 RAG 来检索文本。在最后一步,文本被映射回音频。
OpenAI 的 Whisper 可以将语音转录为文本。此外,OpenAI 的 Text-to-speech (TTS) 模型也可以将文本转换成音频。
多模态文本-视频的 RAG 系统使用类似的方法首先将视频映射到文本,转换为 Embedding 向量,搜索文本,并返回视频作为搜索结果。
OpenAI 的 Sora 可以将文本转换成视频。与 Dall-e 类似,您提供文本提示,而 LLM 生成视频。Sora 还可以通过静态图像或其他视频生成视频。
Milvus目前已经集成了主流的Embedding模型,欢迎大家体验:https://milvus.io/docs/embeddings.md
参考
MTEB leaderboard: https://huggingface.co/spaces/mteb/leaderboard
MTEB 最佳实践:https://huggingface.co/blog/lyon-nlp-group/mteb-leaderboard-best-practices
相似图片搜索:https://milvus.io/docs/image_similarity_search.md
图片视频搜索:https://milvus.io/docs/video_similarity_search.md
相似音频搜索:https://milvus.io/docs/audio_similarity_search.md
文本图像搜索:https://milvus.io/docs/text_image_search.md
2024 SigLIP (sigmoid loss CLIP) 论文:https://arxiv.org/pdf/2401.06167v1
Unum 多模态 Embedding 模型:https://github.com/unum-cloud/uform
技术干货
使用Gemini 1.5、BGE-M3、Milvus Lite 和 LangChain 搭建多模态 RAG 应用
本文将介绍一种减轻 LLM 幻觉的解决方案——检索增强生成(Retrieval Augmented Generation,RAG)。我们将搭建一个结合了不同模态数据(文本和图像)的多模态 RAG 应用,以减轻 LLM 幻觉。
2024-11-15技术干货
宪法人工智能:来自人工智能反馈的无害性
在本文中,我们将讨论由Anthropic团队在他们的论文“宪法人工智能:来自人工智能反馈的无害性”中提出的一种方法——宪法人工智能(CAI),它解决了上述问题。
2024-11-15技术干货
手把手教程:如何使用 Milvus Backup 备份工具
Milvus Backup 是一个用于备份和恢复 Milvus 数据的工具。它同时提供 CLI 和 API ,以适应不同的应用场景。本教程将手把手带您使用 Milvus Backup ,帮助您学会如何处理您的备份需求。
2024-11-15