
HuggingFaceEmbeddings 是 LangChain 专门为 Hugging Face 模型提供的统一封装。Hugging Face 生态下的有许多开源嵌入模型,比如:bge-small-zh 等模型。
一、统一接口
| Hugging Face 开源模型 | SentenceTransformer | HuggingFaceEmbeddings |
| OpenAI | openai.Embedding | OpenAIEmbeddings |
| Cohere | cohere.Client | CohereEmbeddings |
HuggingFaceEmbeddings 把 Hugging Face 的各种加载方式(sentence-transformers、transformers 等)统一成一个接口,无需关心底层实现差异。
# 不用 HuggingFaceEmbeddings(手动加载)
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('BAAI/bge-small-zh')
embeddings = model.encode(["文本"])
# 用 HuggingFaceEmbeddings(LangChain 统一接口)
from langchain_huggingface import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh")
embeddings.embed_documents(["文本"])
2. 无缝集成 LangChain 生态
HuggingFaceEmbeddings 实现了 LangChain 的 Embeddings 基类,因此可以直接用于:
-
向量存储(FAISS.from_documents)
-
检索器(vectorstore.as_retriever())
-
RAG 链 等场景
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh")
# 直接用于创建向量库
vectorstore = FAISS.from_documents(documents, embeddings)
# 直接用于检索
retriever = vectorstore.as_retriever()
3. 自动处理模型加载和配置
HuggingFaceEmbeddings 在底层自动处理了:
| 设备选择 | 自动检测 GPU/CPU |
| 批处理 | 自动将多个文本分批编码 |
| 模型参数 | 封装 model_kwargs 和 encode_kwargs |
| 缓存 | 自动下载并缓存模型文件 |
二、代码实例
import os
from langchain_huggingface import HuggingFaceEmbeddings
# 方式1:基础加载
embeddings = HuggingFaceEmbeddings(
model_name="BAAI/bge-small-zh", # 模型名称
)
# 方式2:带配置加载
embeddings = HuggingFaceEmbeddings(
model_name="BAAI/bge-m3",
model_kwargs={"device": "cuda"}, # 用 GPU
encode_kwargs={"batch_size": 64, "normalize_embeddings": True}, # 编码参数
)
# 方式3:从本地路径加载
embeddings = HuggingFaceEmbeddings(
model_name="./models/bge-small-zh", # 本地下载好的模型
)
# 使用方式
texts = ["你好", "世界"]
vectors = embeddings.embed_documents(texts)
# 返回 List[List[float]],每个向量维度根据模型不同:
# bge-small-zh: 512 维
# bge-m3: 1024 维
三、HuggingFaceEmbeddings 的底层原理

默认后端:sentence-transformers(优化过的嵌入专用库)
备选后端:transformers + pipeline(通用库)
四、其他嵌入模型加载
| Hugging Face 开源 | HuggingFaceEmbeddings | pip install sentence-transformers |
| OpenAI | OpenAIEmbeddings | pip install langchain-openai |
| Cohere | CohereEmbeddings | pip install langchain-cohere |
| Google (Vertex AI) | VertexAIEmbeddings | pip install langchain-google-vertexai |
| 本地 ONNX | OllamaEmbeddings 或自定义 | 视情况 |
# OpenAI 嵌入
from langchain_openai import OpenAIEmbeddings
openai_emb = OpenAIEmbeddings(model="text-embedding-3-small")
# Cohere 嵌入
from langchain_cohere import CohereEmbeddings
cohere_emb = CohereEmbeddings(model="embed-english-v3.0")
# Google 嵌入
from langchain_google_vertexai import VertexAIEmbeddings
google_emb = VertexAIEmbeddings(model="text-embedding-004")
五、其他
| 为什么用 HuggingFaceEmbeddings? | 统一封装 Hugging Face 模型,无缝集成 LangChain |
| 能用 SentenceTransformer 直接替代吗? | 可以,但需要手动适配 LangChain 的 Embeddings 接口 |
| 什么时候选开源模型? | 私有化部署、数据隐私要求高、成本敏感 |
| 什么时候选 OpenAI? | 追求最佳效果、可接受成本、网络畅通 |



![[LangChain RAG] 01 大模型为什么需要 RAG:四个问题与标准流程-171主机测评](https://www.171host.com/wp-content/uploads/2026/08/20260825035331-6a8d11bb97bca-220x150.png)

