You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian12(Python3.11)无法安装sentence transformers,求SentenceTransformerEmbeddings替代方案

替代方案推荐

以下是几个无需依赖sentence-transformers的LangChain嵌入方案,均可在Python 3.11的Debian GNU/Linux 12环境部署:

1. OpenAIEmbeddings

若能调用OpenAI API,这是最省心的选择,无需本地部署模型,直接通过API生成嵌入:

from langchain.embeddings import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(openai_api_key="你的API密钥")

仅需安装依赖包:pip install langchain openai,完全绕开torch与sentence-transformers的安装问题。

2. 基于transformers库的HuggingFaceEmbeddings

不用sentence-transformers包,直接用底层transformers库加载模型,可手动控制torch安装(需本地模型时适用):
先安装依赖:pip install langchain transformers torch
代码初始化示例:

from langchain.embeddings import HuggingFaceEmbeddings

model_name = "all-MiniLM-L6-v2"
embeddings = HuggingFaceEmbeddings(
    model_name=model_name,
    model_kwargs={"device": "cpu"},  # 无GPU服务器可指定CPU
    encode_kwargs={"normalize_embeddings": True}
)

若torch安装仍有问题,可尝试指定CPU版本安装:pip install torch --index-url https://download.pytorch.org/whl/cpu,避免手动查找适配whl文件。

3. CohereEmbeddings

与OpenAI逻辑类似,调用Cohere API生成嵌入,无需本地模型:

from langchain.embeddings import CohereEmbeddings

embeddings = CohereEmbeddings(cohere_api_key="你的API密钥")

安装依赖:pip install langchain cohere

4. 纯transformers库实现本地嵌入

若必须用本地模型且不想依赖sentence-transformers,可直接用transformers库单独加载嵌入模型编码器,再封装为LangChain的Embeddings子类:

from transformers import AutoTokenizer, AutoModel
import torch
from langchain.embeddings.base import Embeddings
from typing import List

class CustomLocalEmbeddings(Embeddings):
    def __init__(self, model_name: str = "all-MiniLM-L6-v2"):
        self.tokenizer = AutoTokenizer.from_pretrained(model_name)
        self.model = AutoModel.from_pretrained(model_name)
    
    def embed_documents(self, texts: List[str]) -> List[List[float]]:
        inputs = self.tokenizer(texts, return_tensors="pt", padding=True, truncation=True)
        with torch.no_grad():
            outputs = self.model(**inputs)
        embeddings = outputs.last_hidden_state.mean(dim=1).numpy()
        return embeddings.tolist()
    
    def embed_query(self, text: str) -> List[float]:
        return self.embed_documents([text])[0]

# 使用示例
embeddings = CustomLocalEmbeddings()

此方案仅依赖transformers与torch,完全脱离sentence-transformers包。


内容的提问来源于stack exchange,提问作者Adam Gajewski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:24:57