news 2026/7/25 21:04:00

HuggingFaceEmbeddings / OllamaEmbeddings 区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HuggingFaceEmbeddings / OllamaEmbeddings 区别

HuggingFaceEmbeddings vs OllamaEmbeddings(LangChain 视角,核心区分)

先抛出最重要结论:

两者可以使用完全相同权重的 Embedding 模型(如 all-minilm、bge-small、nomic-embed-text),语义效果理论一致;差异不在模型本身,而在「加载方式、进程架构、调用链路」。

1. 核心原理对比

HuggingFaceEmbeddings

底层:sentence-transformers/transformers 库模型直接加载到当前 Python 进程内部运行

# 模型载入你当前python程序内存/GPU embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2") vec = embeddings.embed_query("xxx")

OllamaEmbeddings

底层:调用本地 Ollama 服务的 HTTP API Ollama 是独立后台进程,模型由 Ollama 进程加载常驻;你的 Python 代码只是发 HTTP 请求。

# Python不持有模型,只是请求 localhost:11434 embeddings = OllamaEmbeddings(model="all-minilm") vec = embeddings.embed_query("xxx")

2. 详细维度对比

表格

对比项HuggingFaceEmbeddingsOllamaEmbeddings
模型加载位置当前 Python 进程内独立 Ollama 后台进程
多程序共享模型❌ 每个 Python 程序单独加载一份模型,重复占用显存✅ 只加载一次,所有客户端共享显存
调用链路Python → Torch 直接推理(本地函数调用)Python → HTTP → Ollama 服务 → 推理,多一层网络开销
自定义程度极高可自定义 tokenizer、推理参数、batch、device、half 精度、prompt 模板较低只能使用 Ollama 预先打包好的模型配置,很难修改推理参数
跨语言调用仅限 Python 代码直接加载任意语言 (Python/JS/Go 等) 通过 HTTP 调用
模型安装方式model_name自动从 HF 下载权重,缓存到 huggingface hub 目录必须先用ollama pull xxx拉取模型,由 Ollama 管理权重
离线部署需要处理 torch、cuda、sentence-transformers 依赖只需要安装 Ollama,环境依赖极简,不用配置 Python CUDA
并发场景多进程启动会重复加载模型,显存容易爆炸适合多客户端并发,模型常驻内存
冷启动第一次运行下载 + 加载模型,进程销毁即释放模型Ollama 启动后模型可长期驻留,后续请求无加载耗时
长度截断、Embedding Prompt自己控制,可自由调整(如 BGE 需要query:前缀)遵循 Ollama Modelfile 内预设配置,修改麻烦

3. 容易踩坑的关键点

坑 1:同样模型,向量结果可能不完全一致

即使权重一样:

  • HF 你可以手动控制normalize_embeddings、推理精度 fp16/fp32
  • Ollama 内部推理配置固定 细微参数差异会造成向量微小偏差,向量库不能混用两种方式产出的向量

坑 2:BGE / GTE 这类需要指令前缀的模型

举例:BGE 规范

查询:query: xxx文档:passage: xxx

  • HuggingFaceEmbeddings:你可以在代码里轻松封装自动加前缀
  • OllamaEmbeddings:需要修改 Modelfile,门槛更高

坑 3:显存占用差异

场景:同时启动 3 个 Python 脚本做 RAG

  • HF 方案:3 份模型载入显存 → 显存 ×3
  • Ollama 方案:仅 Ollama 后台一份模型 → 显存只占用一次

4. 选型指南

✅ 优先选 HuggingFaceEmbeddings

  1. 单 Python 程序运行、不需要多客户端共享模型
  2. 需要精细调参、自定义预处理、自定义 Embedding 指令模板
  3. 追求最低延迟,不想引入 HTTP 额外开销
  4. 需要使用不支持 Ollama 打包的小众 Embedding 模型

✅ 优先选 OllamaEmbeddings

  1. 多个程序 / 多种语言同时调用 Embedding
  2. 不想折腾 Python Torch、CUDA 环境(Windows/macOS 小白友好)
  3. 服务化架构,希望 Embedding 能力独立成服务
  4. 和 Ollama 大模型配套使用(LLM+Embedding 统一由 Ollama 管理)

5. 极简代码对照

HuggingFaceEmbeddings

from langchain_huggingface import HuggingFaceEmbeddings emb = HuggingFaceEmbeddings( model_name="all-MiniLM-L6-v2", model_kwargs={"device": "cuda"} )

OllamaEmbeddings

from langchain_ollama import OllamaEmbeddings emb = OllamaEmbeddings( model="all-minilm", base_url="http://localhost:11434" )
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 21:03:10

VC++网络对战俄罗斯方块:从单机到联机的C/S架构与状态同步实战

1. 项目概述:从单机到联机的经典重构十几年前,当我还在用VC 6.0写第一个控制台俄罗斯方块时,大概没想过有一天会琢磨怎么让两个相隔千里的人,在各自的电脑上实时对战同一个方块。这就是“VC网络对战版俄罗斯方块”项目的核心魅力—…

作者头像 李华
网站建设 2026/7/25 21:02:27

一键激活Windows和Office:KMS_VL_ALL_AIO智能激活方案终极指南

一键激活Windows和Office:KMS_VL_ALL_AIO智能激活方案终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office的激活问题而烦恼吗?每次重装系统都…

作者头像 李华
网站建设 2026/7/25 21:01:26

[极核教学]esp32IDF环境搭建并实现在vscode终端加载idf环境

仓库:https://gitee.com/karlkenneth/esp32_learn 1.1.环境搭建 第一次在gitee上看我图文教程的强烈建议点击这个按钮 下载到本地看教程的强烈建议去tool文件夹找Typora工具来看.md文件,那个是专门浏览编辑md文件的 准备 1、自备vscode架构的ide&…

作者头像 李华
网站建设 2026/7/25 21:00:07

2022年的梦境笔记

2022年的梦境带我驾驶飞船穿梭宇宙,探索神秘星球,理解宇宙放映机,揭示宇宙的壮丽与无限可能性。这些奇妙景象让我沉浸在星辰大海与远方的宇宙探索之中。它启发了我的想象力,让我对宇宙的奥秘和未知充满了渴望。我希望能够将这些梦…

作者头像 李华
网站建设 2026/7/25 20:58:35

生产级RAG架构实战:从数据准备到部署的完整方案

1. 项目背景与核心价值去年在帮一家金融科技公司搭建智能问答系统时,我第一次完整实践了生产级RAG(Retrieval-Augmented Generation)架构。这个项目让我深刻认识到:实验室里的原型demo和真正能扛住线上流量的生产系统之间&#xf…

作者头像 李华
网站建设 2026/7/25 20:58:25

百度网盘秒传技术:5个实用技巧彻底解决文件分享难题

百度网盘秒传技术:5个实用技巧彻底解决文件分享难题 【免费下载链接】rapid-upload-userscript-doc 秒传链接提取脚本 - 文档&教程 项目地址: https://gitcode.com/gh_mirrors/ra/rapid-upload-userscript-doc 还在为百度网盘分享链接频繁失效而烦恼吗&a…

作者头像 李华