当前位置: 首页 > news >正文

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

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

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

付费方案:

类名服务商模型名示例是否联网定价情况
OpenAIEmbeddingFunctionOpenAItext-embedding-3-smalltext-embedding-ada-002按 token 计费,约 $0.0001/1K tokens(Ada)
CohereEmbeddingFunctionCohereembed-english-light-v3.0embed-multilingual-v3.0按请求计费,具体看订阅计划,起步免费额度后按量计费

  • 使用 SentenceTransformerEmbeddingFunction
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(支持指令式格式)
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)
  • 使用“自定义类”

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

from transformers import AutoTokenizer, AutoModel
import torch
import numpy as npclass 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高质量检索、结构化问题任务
自定义类灵活,可对接各种本地模型或量化模型中文、多语言、自定义逻辑
http://www.dtcms.com/a/319577.html

相关文章:

  • 计算机毕业设计java疫情防控形势下的高校食堂订餐管理系统 高校食堂订餐管理系统在疫情防控背景下的设计与实现 疫情防控期间高校食堂线上订餐管理平台
  • Windows下Rust编码实现MP4点播服务器
  • 3a服务器的基本功能1之身份认证
  • iSCSI 服务器
  • Ubuntu设置Samba文件共享
  • Spring AI 打造智能面试人实战
  • Debian系统 为账号添加sudo权限
  • 通用优化软件GAMS的数学建模和优化分析
  • 快手提出强化学习创新框架RLEP,突破大模型推理瓶颈
  • AI算力平台统一监控方案:让AI算力资源透明化
  • 电线杆鸟巢识别误检率↓75%:陌讯多模态融合算法实战解析
  • 多线程问题,子线程同时操作全局变量,使用后需要清空吗 ?
  • Python生产环境部署指南:专业级应用启动方案
  • USRP 毫米波通信解决方案
  • SpringBoot如何固定版本
  • day069-Jenkins基础使用与参数化构建
  • 网络安全与软件定义汽车的发展
  • [spring-cloud: 动态刷新]-源码分析
  • k8s中pod如何调度?
  • USB3.0 枚举流程
  • 前端页面直接生成PDF下载文件
  • Python实现点云随机一致性(RANSAC)配准——粗配准
  • 软件测试中,pytest 运行完成后,如何自动发送邮件?
  • vscode 打开设置
  • OpenCV 入门实战:从环境配置到图像 / 视频处理
  • Java 八大经典排序算法全解析
  • Redis持久化存储
  • 2025 年华数杯赛题浅析-助攻快速选题
  • Centos6停止服务后yum改用阿里云
  • Syzkaller实战教程10: MoonShine复现Trace2syz功能演示