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

嵌入模型与Chroma向量数据库 - Qwen3嵌入模型使用 - AI大模型应用开发必备知识

大家好,我是小锋老师,最近更新《2027版 1天学会 嵌入模型与Chroma向量数据库 AI大模型应用开发必备知识 视频教程》专辑,感谢大家支持。

本课程主要介绍和讲解嵌入模型与向量数据库简介,Qwen3嵌入模型使用,Chroma向量数据库使用,Chroma安装,Client-Server模式,集合添加,修改,删除,查询操作以及自定义Embedding Functions。

视频教程+课件+源码打包下载:

链接:https://pan.baidu.com/s/1Oo7dtFf_Zt7hJyl6aYX6TA?pwd=1234
提取码:1234

嵌入模型与Chroma向量数据库 - Qwen3嵌入模型使用 - AI大模型应用开发必备知识

嵌入模型有很多,我们这里选用国内用得比较多的通义千问qwen嵌入模型。

我们选一个参数小一点的,方便跑。Qwen3-VL-Embedding-2B。

https://huggingface.co/Qwen/Qwen3-VL-Embedding-2B/tree/main

Qwen3-VL-Embedding-2B简介

Qwen3-VL-Embedding-2B 是阿里Qwen团队推出的一款多模态向量表示模型,旨在将文本、图像、视频等多种模态的数据映射到统一的语义空间,为高精度多模态检索提供第一阶段的召回能力。

📐 核心规格
项目说明
模型类型多模态向量(Embedding)模型
参数量20亿 (2B)
最大上下文32K tokens,适合长文档或多图/视频输入
嵌入维度最高2048维,支持通过MRL技术自定义裁剪(如128维、512维)
支持模态文本、图像、视频、截图及混合模态
多语言能力支持30+ 种语言
开源协议Apache 2.0,可免费商用
✨ 主要技术特点
  • 统一多模态表示:将文本、图像、视频等不同模态的数据映射到同一个向量空间,支持“以文搜图”、“图文搜视频”等跨模态检索。

  • 支持长上下文:凭借32K的上下文长度,能够处理长篇文档、多张图片组合或较长的视频片段。

  • 灵活的嵌入维度 (MRL):引入“俄罗斯套娃”表示学习技术,无需重新编码即可直接截取向量前缀(如只取前128维),用于平衡存储成本、检索速度和效果。

  • 指令感知 (Instruction Aware):允许在输入时添加自定义指令,明确检索任务意图,使生成的向量更贴合业务场景定义的“相关性”。

🏗️ 架构与训练
  • 模型架构:基于Qwen3-VL视觉语言模型构建,采用双编码器 (Bi-encoder)架构,通过取输入末尾特殊token<\|endoftext\|>的隐藏状态作为输出向量

  • 训练方法:采用多阶段训练(对比预训练→多任务微调→重排器蒸馏),并融合了大规模合成数据与高质量数据,以保证模型性能。

🏆 性能表现
  • 在权威的多模态检索基准MMEB-V2上,2B模型取得了73.2的优异成绩,在同量级模型中表现突出。

  • 在包含图像分类、视频问答、文档检索等78个数据集的综合评测中,总分为75.0

💡 典型应用场景

该模型非常适合作为多模态RAG(检索增强生成)系统的第一阶段的向量召回模型。具体应用包括:

  • 多模态搜索引擎

  • 图文、视频的相似度计算与聚类

  • 基于自然语言的零样本视频/图像分类

  • 企业级多模态知识库的构建

Qwen3-VL-Embedding-2B使用

首先把这个模型下载到本地:

然后我们用qwen嵌入模型来实现文本转成嵌入向量,然后进行余弦和欧式距离计算。余弦计算结果越小越相似,欧式距离也是越小越相似。

我们新建项目:ChromaPro,然后安装下torch,transformers,以及数据计算scipy库:

pip install torch torchvision --index-url https://download.pytorch.org/whl/cu126 ​ pip install transformers -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com ​ pip install scipy -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

下面是示例代码:

import torch from transformers import AutoTokenizer, AutoModel from scipy.spatial.distance import cosine, euclidean ​ # 加载模型和tokenizer model_name = "Qwen3-VL-Embedding-2B" # 替换为模型的本地路径 tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModel.from_pretrained(model_name) ​ # 设置模型到评估模式 model.eval() ​ def get_embedding(text): """将文本转换为嵌入向量""" inputs = tokenizer(text, return_tensors='pt', padding=True, truncation=True) with torch.no_grad(): outputs = model(**inputs) # 通常我们使用[CLS] token的输出或平均pooling """ 对模型输出的隐藏状态进行全局平均池化,将序列维度压缩为单个向量表示。 具体解释: outputs.last_hidden_state:获取Transformer模型最后一层的所有token隐藏状态 .mean(dim=1):在序列维度(dim=1)上计算平均值,将形状从(batch_size, sequence_length, hidden_size)变为(batch_size, hidden_size) """ embeddings = outputs.last_hidden_state.mean(dim=1) # 平均所有token的embedding return embeddings ​ def calculate_distances(text1, text2): """计算两个文本之间的余弦和欧式距离""" embedding1 = get_embedding(text1).squeeze() embedding2 = get_embedding(text2).squeeze() print("embedding1:", embedding1,len(embedding1)) print("embedding2:", embedding2,len(embedding2)) # 转换为numpy数组以进行距离计算 embedding1 = embedding1.float().numpy() embedding2 = embedding2.float().numpy() ​ cos_distance = cosine(embedding1, embedding2) euc_distance = euclidean(embedding1, embedding2) ​ return cos_distance, euc_distance ​ ​ # 计算距离 cosine_distance, euclidean_distance = calculate_distances("我喜欢小狗", "我喜欢小猫") ​ print(f"余弦距离: {cosine_distance}") print(f"欧式距离: {euclidean_distance}") ​ # 计算距离 cosine_distance, euclidean_distance = calculate_distances("我喜欢小狗", "python是个好技术") print(f"余弦距离: {cosine_distance}") print(f"欧式距离: {euclidean_distance}")

运行结果:

embedding1: tensor([ 1.4688, 0.5000, -1.1484, ..., -0.1543, 2.0000, -2.2188], dtype=torch.bfloat16) 2048 embedding2: tensor([ 1.2891, 0.6953, 0.3984, ..., 1.7266, -0.0188, -1.0469], dtype=torch.bfloat16) 2048 余弦距离: 0.396905779838562 欧式距离: 53.95702362060547 embedding1: tensor([ 1.4688, 0.5000, -1.1484, ..., -0.1543, 2.0000, -2.2188], dtype=torch.bfloat16) 2048 embedding2: tensor([-0.1270, -0.2930, -1.0781, ..., -0.0542, 0.1348, -0.4844], dtype=torch.bfloat16) 2048 余弦距离: 0.6521354913711548 欧式距离: 71.54246520996094

我们会看到,余弦计算结果越小越相似,欧式距离也是越小越相似。

http://www.jsqmd.com/news/402110/

相关文章:

  • Coqui STT 文件下载实战指南:从模型获取到高效部署
  • 用BE、FE和CN方法求解1D扩散方程的Matlab实现
  • 2026春晚机器人技术突破:四家国产机器人企业登台表演,开启智能演艺新时代
  • ChatGPT Prompt Engineering实战指南:开发者如何高效利用中文文档优化AI辅助开发
  • 基于Python的旅游景点推荐系统毕设:AI辅助开发实战与架构避坑指南
  • CopUI TTS 技术解析:从语音合成原理到高性能实现
  • 如何给Linux Ubuntu 22 中的bash shell着色以及如何修复远程连接的着色问题
  • 探索锂枝晶生长的 Comsol 仿真与 C++ 模拟
  • 机器学习本科毕业设计选题指南:从技术可行性到工程落地的完整路径
  • AI 辅助开发实战:基于大模型的计算机毕业设计项目——智能旅游推荐系统架构与实现
  • 触发器原理与嵌入式时序设计实战
  • WIN OS常用的运行命令msc和.cpl
  • 基于Thinkphp和Laravel的二手交易平台_1s6g8
  • Chatbot Arena排名Qwen3-Max预览版实战:如何优化推理效率与部署流程
  • 基于CosyVoice Paraformer的语音识别实战:从模型部署到生产环境优化
  • 数字电路逻辑门与缓冲器的工程本质解析
  • 基于STM32的毕业设计题效率提升实战:从外设驱动优化到低功耗调度
  • 2026年权威榜单揭晓,高口碑草本床垫生产厂家推荐 - 睿易优选
  • 热销榜单:2026年市场上定制无框眼镜品牌推荐,确保品质与风格并存 - 睿易优选
  • Leetcode868:二进制间距
  • 基于Thinkphp和Laravel的健身房管理系统_ljta9
  • Chatbot Pro 新手入门指南:从零搭建智能对话系统的实战解析
  • ChatTTS下载zip文件实战:高并发场景下的性能优化与避坑指南
  • 基于Thinkphp和Laravel的房产中介房屋供求系统vue
  • 常见问题解决 --- 为什么我的ida pro执行时发现地址错位,范围错误,服务假死的问题
  • 2026美国会展指南:备受好评的会展公司大盘点,展厅设计/展陈设计/展位布置/会展服务/展馆装修/展览,会展公司排行 - 品牌推荐师
  • 《Python 编程全景解析:从核心精要到测试替身(Test Doubles)五大武器的实战淬炼》
  • 继电器原理与工程设计:从电磁吸力到触点保护
  • 从零搭建Chatbot知识库嵌入模型:技术选型与实战指南
  • 深入解析gr.chatbot():构建高效AI辅助开发聊天机器人的实战指南