Ollama 应用实践:如何选择合适的 Embedding 模型 ?

选择合适的 Embedding 模型对于文本分析、语义搜索、问答系统等应用至关重要。Ollama 提供了一系列专业的 Embedding 模型,每种模型都有其特定的优势和应用场景。以下是选择合适 Embedding 模型的一些关键因素:

1. 应用场景

  • 确定您的应用是否需要特定领域的优化或多语言支持。例如,shaw/dmeta-embedding-zh 适合中文场景。

2. 模型性能

  • 考虑模型在相关基准测试(如 MTEB)上的表现,选择性能最优的模型。

3. 参数大小与推理成本

  • 根据可用的计算资源,选择合适大小的模型。较小的模型(如 shaw/dmeta-embedding-zh-small)可能具有更快的推理速度。

4. 上下文窗口长度

  • 对于需要处理长文本的应用,选择支持较长上下文窗口的模型。

5. 社区反馈与支持

  • 选择有良好社区支持和详细文档的模型,以便快速解决问题并获取帮助。

推荐的 Embedding 模型

以下我们选择了几个专业的 Embedding 的模型,用于进行 文本嵌入(Embeddings)的学习。

模型概览

  • shaw/dmeta-embedding-zh:小型中文 Embedding 模型,适合多种场景,特别是在语义检索和 RAG 应用中表现出色。参数大小仅 400MB,支持上下文窗口长度达到 1024,推理成本较低。
  • mxbai-embed-large:截至 2024 年 3 月,在 MTEB 上创下了 Bert-large 尺寸模型的 SOTA 性能记录,具有很好的泛化能力。
  • nomic-embed-text:大上下文长度文本编码器,超越了 OpenAI text-embedding-ada-002,在短上下文和长上下文任务上表现优异。
  • snowflake-arctic-embed:专注于性能优化的高质量检索模型,提供不同参数大小的版本以适应不同的性能和资源需求。
  • snowflake-arctic-embed:专注于性能优化的高质量检索模型,提供不同参数大小的版本以适应不同的性能和资源需求。

注意事项

  • Windows 用户启动 Ollama 后,系统托盘会出现图标,表明服务已启动。
  • 访问 Embedding 服务时无需运行 ollama run,仅在需要 chat 功能时才需启动大模型。

shaw/dmeta-embedding-zh

Dmeta-embedding 是一款跨领域、跨任务、开箱即用的中文 Embedding 模型,适用于搜索、问答、智能客服、LLM+RAG 等各种业务场景,支持使用 Transformers/Sentence-Transformers/Langchain 等工具加载推理。

优势特点如下

  • 多任务、场景泛化性能优异,目前已取得 MTEB 中文榜单第二成绩(2024.01.25)
  • 模型参数大小仅 400MB,对比参数量超过 GB 级模型,可以极大降低推理成本
  • 支持上下文窗口长度达到 1024,对于长文本检索、RAG 等场景更适配

该模型有 4 个不通的版本

  • dmeta-embedding-zhshaw/dmeta-embedding-zh 是一个参数量只有400M、适用于多种场景的中文Embedding模型,在MTEB基准上取得了优异成绩,尤其适合语义检索、RAG等LLM应用。
  • dmeta-embedding-zh-q4shaw/dmeta-embedding-zh 的 Q4_K_M 量化版本
  • dmeta-embedding-zh-smallshaw/dmeta-embedding-zh-small 是比 shaw/dmeta-embedding-zh 更轻量化的模型,参数不足300M,推理速度提升30%。
  • dmeta-embedding-zh-small-q4shaw/dmeta-embedding-zh-small 的 Q4_K_M 量化版本
ollama pull shaw/dmeta-embedding-zh

bge-m3

BGE-M3 基于 XLM-RoBERTa 架构,具有多功能性、多语言性和多粒度的多功能性:

  • 多功能性:可以同时执行嵌入模型的三种常见检索功能:密集检索、多向量检索和稀疏检索。
  • 多语言性:可支持100多种工作语言。
  • 多粒度:它能够处理不同粒度的输入,从短句子到最多 8192 个标记的长文档。

来自开源社区的基准

文档地址:https://ollama.com/library/bge-m3

ollama pull bge-m3

mxbai-embed-large

截至 2024 年 3 月,该模型在 MTEB 上创下了 Bert-large 尺寸模型的 SOTA 性能记录。它的表现优于 OpenAIs text-embedding-3-large 模型等商业模型,并且与其尺寸 20 倍的模型的性能相当。
mxbai-embed-large在没有 MTEB 数据重叠的情况下进行训练,这表明该模型在多个领域、任务和文本长度方面具有很好的泛化能力。

文档地址:https://ollama.com/library/mxbai-embed-large

ollama pull mxbai-embed-large

nomic-embed-text

nomic-embed-text 是一个大上下文长度文本编码器,超越了 OpenAI text-embedding-ada-002,并且text-embedding-3-small在短上下文和长上下文任务上表现优异。

文档地址:https://ollama.com/library/nomic-embed-text

ollama pull nomic-embed-text

snowflake-arctic-embed

snowflake-arctic-embed 是一套文本嵌入模型,专注于创建针对性能优化的高质量检索模型。

这些模型利用现有的开源文本表示模型(例如 bert-base-uncased)进行训练,并在多阶段管道中进行训练以优化其检索性能。

该模型有 5 种参数大小

  • snowflake-arctic-embed:335m(默认)
  • snowflake-arctic-embed:137m
  • snowflake-arctic-embed:110m
  • snowflake-arctic-embed:33m
  • snowflake-arctic-embed:22m

文档地址:https://ollama.com/library/snowflake-arctic-embed

ollama pull snowflake-arctic-embed

all-minilm

all-minilm 是一款在非常大的句子级数据集上训练的嵌入模型。

文档地址:https://ollama.com/library/all-minilm

ollama pull all-minilm
作者:Jeebiz  创建时间:2024-07-09 11:56
最后编辑:Jeebiz  更新时间:2024-08-29 20:41