HuggingFaceEmbeddings / OllamaEmbeddings 区别

发布时间:2026/7/25 21:04:40
HuggingFaceEmbeddings / OllamaEmbeddings 区别 HuggingFaceEmbeddings vs OllamaEmbeddingsLangChain 视角核心区分先抛出最重要结论两者可以使用完全相同权重的 Embedding 模型如 all-minilm、bge-small、nomic-embed-text语义效果理论一致差异不在模型本身而在「加载方式、进程架构、调用链路」。1. 核心原理对比HuggingFaceEmbeddings底层sentence-transformers/transformers 库模型直接加载到当前 Python 进程内部运行# 模型载入你当前python程序内存/GPU embeddings HuggingFaceEmbeddings(model_nameall-MiniLM-L6-v2) vec embeddings.embed_query(xxx)OllamaEmbeddings底层调用本地 Ollama 服务的 HTTP API Ollama 是独立后台进程模型由 Ollama 进程加载常驻你的 Python 代码只是发 HTTP 请求。# Python不持有模型只是请求 localhost:11434 embeddings OllamaEmbeddings(modelall-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/fp32Ollama 内部推理配置固定 细微参数差异会造成向量微小偏差向量库不能混用两种方式产出的向量。坑 2BGE / GTE 这类需要指令前缀的模型举例BGE 规范查询query: xxx文档passage: xxxHuggingFaceEmbeddings你可以在代码里轻松封装自动加前缀OllamaEmbeddings需要修改 Modelfile门槛更高坑 3显存占用差异场景同时启动 3 个 Python 脚本做 RAGHF 方案3 份模型载入显存 → 显存 ×3Ollama 方案仅 Ollama 后台一份模型 → 显存只占用一次4. 选型指南✅ 优先选 HuggingFaceEmbeddings单 Python 程序运行、不需要多客户端共享模型需要精细调参、自定义预处理、自定义 Embedding 指令模板追求最低延迟不想引入 HTTP 额外开销需要使用不支持 Ollama 打包的小众 Embedding 模型✅ 优先选 OllamaEmbeddings多个程序 / 多种语言同时调用 Embedding不想折腾 Python Torch、CUDA 环境Windows/macOS 小白友好服务化架构希望 Embedding 能力独立成服务和 Ollama 大模型配套使用LLMEmbedding 统一由 Ollama 管理5. 极简代码对照HuggingFaceEmbeddingsfrom langchain_huggingface import HuggingFaceEmbeddings emb HuggingFaceEmbeddings( model_nameall-MiniLM-L6-v2, model_kwargs{device: cuda} )OllamaEmbeddingsfrom langchain_ollama import OllamaEmbeddings emb OllamaEmbeddings( modelall-minilm, base_urlhttp://localhost:11434 )