适用于个人开发、中小型项目的Embedding方案(配合ChromaDB)

本地模型,可离线部署(免费)

类名 模型示例 模型来源 是否开源 说明
SentenceTransformerEmbeddingFunction all-MiniLM-L6-v2 bge-small-en gte-base-zh Hugging Face(sentence-transformers) 主流免费模型,支持本地运行,无需联网。体积小,速度快,适合入门和中小型项目。
InstructorEmbeddingFunction hkunlp/instructor-xl intfloat/e5-base Hugging Face 可带指令说明,如 "query:...",提升 query 对 passage 的匹配精度,RAG 中表现优异。
自定义类(需手写 wrapper) 任意 HuggingFace 模型(如 moka-ai/m3e-baseintfloat/multilingual-e5-base) 本地量化模型 Hugging Face / 本地下载 可使用自定义代码加载模型并生成向量,适合高级用户或特殊需求,如中文多语种、跨域场景。

付费方案:

类名 服务商 模型名示例 是否联网 定价情况
OpenAIEmbeddingFunction OpenAI text-embedding-3-small``text-embedding-ada-002 按 token 计费,约 $0.0001/1K tokens(Ada)
CohereEmbeddingFunction Cohere embed-english-light-v3.0``embed-multilingual-v3.0 按请求计费,具体看订阅计划,起步免费额度后按量计费
使用 SentenceTransformerEmbeddingFunction
python 复制代码
from chromadb.utils.embedding_functions import SentenceTransformerEmbeddingFunction

# 创建一个嵌入函数实例
embedding_fn = SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")

# 对文本进行向量化
texts = ["China is a country", "Beijing is the capital"]
vectors = embedding_fn(texts)
print(vectors)  # 输出为二维数组,每行为一个向量

  • 使用 InstructorEmbeddingFunction(支持指令式格式)
python 复制代码
from chromadb.utils.embedding_functions import InstructorEmbeddingFunction

# e5/instructor 模型要求输入带前缀,例如 query: or passage:
embedding_fn = InstructorEmbeddingFunction(model_name="hkunlp/instructor-xl")

# 示例(用于检索任务)
texts = ["query: What is the capital of China?"]
vectors = embedding_fn(texts)
  • 使用"自定义类"

适用于需要特殊处理逻辑的情况

python 复制代码
from transformers import AutoTokenizer, AutoModel
import torch
import numpy as np

class MyEmbeddingFunction:
    def __init__(self, model_name="intfloat/multilingual-e5-base"):
        self.tokenizer = AutoTokenizer.from_pretrained(model_name)
        self.model = AutoModel.from_pretrained(model_name)

    def __call__(self, texts):
        # 前缀很重要
        inputs = self.tokenizer(["query: " + t for t in texts], return_tensors="pt", padding=True, truncation=True)
        with torch.no_grad():
            outputs = self.model(**inputs)
            embeddings = outputs.last_hidden_state[:, 0, :]  # [CLS] 向量
            return embeddings.cpu().numpy()

# 使用方法
embedding_fn = MyEmbeddingFunction()
vectors = embedding_fn(["你好,世界", "中国的首都是哪里?"])

可以把这个类传给 Chroma 的 embedding_function=... 参数来完成定制化集成。

省流选择总结

方案 特点 推荐场景
SentenceTransformerEmbeddingFunction 小巧,速度快,部署简单 快速开发、中小项目、嵌入不复杂
InstructorEmbeddingFunction 检索效果佳,适合加 prefix 高质量检索、结构化问题任务
自定义类 灵活,可对接各种本地模型或量化模型 中文、多语言、自定义逻辑
相关推荐
知乎的哥廷根数学学派21 小时前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
且去填词21 小时前
DeepSeek :基于 Schema 推理与自愈机制的智能 ETL
数据仓库·人工智能·python·语言模型·etl·schema·deepseek
人工干智能1 天前
OpenAI Assistants API 中 client.beta.threads.messages.create方法,兼谈一星*和两星**解包
python·llm
databook1 天前
当条形图遇上极坐标:径向与圆形条形图的视觉革命
python·数据分析·数据可视化
阿部多瑞 ABU1 天前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
acanab1 天前
VScode python插件
ide·vscode·python
知乎的哥廷根数学学派1 天前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
WangYaolove13141 天前
Python基于大数据的电影市场预测分析(源码+文档)
python·django·毕业设计·源码
知乎的哥廷根数学学派1 天前
基于自适应多尺度小波核编码与注意力增强的脉冲神经网络机械故障诊断(Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习
cnxy1881 天前
Python爬虫进阶:反爬虫策略与Selenium自动化完整指南
爬虫·python·selenium