欢迎光临
我们一直在努力

LangChain 中HuggingFaceEmbeddings :加载嵌入模型

   HuggingFaceEmbeddings 是 LangChain 专门为 Hugging Face 模型提供的统一封装。Hugging Face 生态下的有许多开源嵌入模型,比如:bge-small-zh 等模型。

一、统一接口

模型来源原生加载方式LangChain 封装
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(通用库)

  • 四、其他嵌入模型加载

    模型来源LangChain 加载类安装
    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? 追求最佳效果、可接受成本、网络畅通
    赞(0)
    未经允许不得转载:171主机测评 » LangChain 中HuggingFaceEmbeddings :加载嵌入模型
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址