Milvus 视角看主流嵌入式模型(Embeddings)
嵌入是一种机器学习概念,用于将数据映射到高维空间,其中语义相似的数据被紧密排列在一起。嵌入模型通常是 BERT 或其他 Transformer 系列的深度神经网络,它能够有效地用一系列数字(称为向量)来表示文本、图像和其他数据类型的语义。这些模型的一个关键特性是,高维空间中向量之间的数学距离可以指示原始文本或图像语义的相似性。这一特性解锁了许多信息检索应用,例如 Google 和 Bing 等网络搜索引擎、电商网站上的产品搜索和推荐,以及最近流行的生成式人工智能中的检索增强生成 (RAG) 范式。
嵌入主要有两种类别,每种类别都会产生不同类型的向量:
-
密集嵌入:大多数嵌入模型将信息表示为数百到数千维的浮点向量。由于大多数维度都具有非零值,因此输出被称为“密集”向量。例如,流行的开源嵌入模型 BAAI/bge-base-en-v1.5 输出 768 个浮点数的向量(768 维浮点向量)。
-
稀疏嵌入:相比之下,稀疏嵌入的输出向量大多数维度为零,即“稀疏”向量。这些向量通常具有更高的维度(数万甚至更高),这取决于标记词汇量的大小。稀疏向量可以通过深度神经网络或文本语料库的统计分析生成。由于稀疏嵌入具有可解释性且在领域外具有更佳的泛化能力,它越来越多地被开发人员用作密集嵌入的补充。
Milvus 是一款专为矢量数据管理、存储和检索而设计的矢量数据库。通过集成主流的嵌入和重排序模型,您可以轻松地将原始文本转换为可搜索的向量,或使用强大的模型对结果进行重排序,从而为 RAG 获得更准确的结果。这种集成简化了文本转换,无需额外的嵌入或重排序组件,从而简化了 RAG 的开发和验证。
要实际创建嵌入,请参阅使用 PyMilvus 的模型生成文本嵌入。
Embedding Function | Type | API or Open-sourced |
---|---|---|
openai | Dense | API |
sentence-transformer | Dense | Open-sourced |
Splade | Sparse | Open-sourced |
bge-m3 | Hybrid | Open-sourced |
voyageai | Dense | API |
jina | Dense | API |
cohere | Dense | API |
Instructor | Dense | Open-sourced |
Mistral AI | Dense | API |
Nomic | Dense | API |
mGTE | Hybrid | Open-sourced |
Model2Vec | Hybrid | Open-sourced |
Gemini | Hybrid | Private |
示例 1:使用默认嵌入函数生成密集向量
要在 Milvus 中使用嵌入函数,首先安装 PyMilvus 客户端库以及model
包含所有用于嵌入生成的实用程序的子包。
pip install "pymilvus[model]"
该model
子包支持各种嵌入模型,从OpenAI、Sentence Transformers、BGE M3到SPLADE预训练模型。为简单起见,本示例使用了DefaultEmbeddingFunction
全MiniLM-L6-v2句子 Transformer 模型,该模型大小约为 70MB,首次使用时需要下载:
from pymilvus import model# This will download "all-MiniLM-L6-v2", a light weight model.
ef = model.DefaultEmbeddingFunction()# Data from which embeddings are to be generated
docs = ["Artificial intelligence was founded as an academic discipline in 1956.","Alan Turing was the first person to conduct substantial research in AI.","Born in Maida Vale, London, Turing was raised in southern England.",
]embeddings = ef.encode_documents(docs)# Print embeddings
print("Embeddings:", embeddings)
# Print dimension and shape of embeddings
print("Dim:", ef.dim, embeddings[0].shape)
预期输出类似于以下内容:
Embeddings: [array([-3.09392996e-02, -1.80662833e-02, 1.34775648e-02, 2.77156215e-02,-4.86349640e-03, -3.12581174e-02, -3.55921760e-02, 5.76934684e-03,2.80773244e-03, 1.35783911e-01, 3.59678417e-02, 6.17732145e-02,
...-4.61330153e-02, -4.85207550e-02, 3.13997865e-02, 7.82178566e-02,-4.75336798e-02, 5.21207601e-02, 9.04406682e-02, -5.36676683e-02],dtype=float32)]
Dim: 384 (384,)
示例 2:使用 BGE M3 模型在一次调用中生成密集和稀疏向量
在本例中,我们使用BGE M3混合模型将文本嵌入到密集向量和稀疏向量中,并利用它们检索相关文档。总体步骤如下:
-
使用 BGE-M3 模型将文本嵌入为密集和稀疏向量;
-
建立一个 Milvus 集合来存储稠密向量和稀疏向量;
-
将数据插入到Milvus;
-
搜索并检查结果。
首先,我们需要安装必要的依赖项。
from pymilvus.model.hybrid import BGEM3EmbeddingFunction
from pymilvus import (utility,FieldSchema, CollectionSchema, DataType,Collection, AnnSearchRequest, RRFRanker, connections,
)
使用 BGE M3 对文档和查询进行编码以进行嵌入检索。
# 1. prepare a small corpus to search
docs = ["Artificial intelligence was founded as an academic discipline in 1956.","Alan Turing was the first person to conduct substantial research in AI.","Born in Maida Vale, London, Turing was raised in southern England.",
]
query = "Who started AI research?"# BGE-M3 model can embed texts as dense and sparse vectors.
# It is included in the optional `model` module in pymilvus, to install it,
# simply run "pip install pymilvus[model]".bge_m3_ef = BGEM3EmbeddingFunction(use_fp16=False, device="cpu")docs_embeddings = bge_m3_ef(docs)
query_embeddings = bge_m3_ef([query])
相关文章:
Milvus 视角看主流嵌入式模型(Embeddings)
嵌入是一种机器学习概念,用于将数据映射到高维空间,其中语义相似的数据被紧密排列在一起。嵌入模型通常是 BERT 或其他 Transformer 系列的深度神经网络,它能够有效地用一系列数字(称为向量)来表示文本、图像和其他数据…...

leetcode:58. 最后一个单词的长度(python3解法)
难度:简单 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s "Hello World"…...

虹科应用 | 探索PCAN卡与医疗机器人的革命性结合
随着医疗技术的不断进步,医疗机器人在提高手术精度、减少感染风险以及提升患者护理质量方面发挥着越来越重要的作用。医疗机器人的精确操作依赖于稳定且高效的数据通信系统,虹科提供的PCAN四通道mini PCIe转CAN FD卡,正是为了满足这一需求而设…...

entity线段材质设置
在cesium中,我们可以改变其entity线段材质,这里以直线为例. 首先我们先创建一条直线 const redLine viewer.entities.add({polyline: {positions: Cesium.Cartesian3.fromDegreesArray([-75,35,-125,35,]),width: 5,material:material, 保存后可看到在地图上创建了一条线段…...

[STM32] 5-1 时钟树(上)
文章目录 前言5-1 时钟树(上)时钟树的基本介绍时钟树的基本结构大树和小树频率运算简介计数器和分频STM32内部结构树的结构于关键节点SYSCLK(System Clock) 系统时钟 72M maxHCLK(AHB Clock) AHB时钟 36M maxPLCK(APB1 Clock) APB1时钟 36M maxPLCK2(APB…...

【Linux网络与网络编程】12.NAT技术内网穿透代理服务
1. NAT技术 之前我们说到过 IPv4 协议中IP 地址数量不充足的问题可以使用 NAT 技术来解决。还提到过本地主机向公网中的一个服务器发起了一个网络请求,服务器是怎么将应答返回到该本地主机呢?(如何进行内网转发?) 这就…...
【HTTPS基础概念与原理】TLS握手过程详解
以下是 TLS握手过程的详细拆解,涵盖客户端与服务器之间的关键交互步骤,包括ClientHello、ServerHello、证书验证、密钥交换等核心阶段,并对比TLS 1.2与TLS 1.3的差异: 一、TLS握手的核心目标 协商协议版本:确定双方支…...

从辅助到协作:GitHub Copilot的进化之路
如果说现代程序员的标配工具除了VS Code、Stack Overflow之外,还有谁能入选,那一定是GitHub Copilot。从2021年首次亮相,到如今深度集成进开发者日常流程,这个“AI编程助手”已经不只是写几行自动补全代码的小帮手了,而…...

Linux运行时的参数、命令、网络、磁盘参数和日志监控
一、监控 1. free 功能:用于查看系统内存使用情况,包括物理内存总量、已用内存、空闲内存、缓冲区(buffer)和缓存(cache)占用,以及交换内存(swap)的使用与剩余情况。常…...

鸿蒙页面布局入门
本文以仿猫眼电影M站首页布局为案例,展示ArkUI在实际开发中的应用。内容包括案例效果及相关知识点,深入解析布局框架以及头部、脚部、内容区域的构建思路与代码实现,最后提供完整代码和教程资源,助力你强化实践能力。 1. 案例效果…...
VTK|类似CloudCompare的比例尺实现2-vtk实现
文章目录 实现类头文件实现类源文件调用逻辑关键问题缩放限制问题投影模式项目git链接实现类头文件 以下是对你提供的 ScaleBarController.h 头文件添加详细注释后的版本,帮助你更清晰地理解每个成员和方法的用途,尤其是在 VTK 中的作用: #ifndef SCALEBARCONTROLLER_H #de…...

阿里巴巴开源移动端多模态LLM工具——MNN
MNN 是一个高效且轻量级的深度学习框架。它支持深度学习模型的推理和训练,并在设备端的推理和训练方面具有行业领先的性能。目前,MNN 已集成到阿里巴巴集团的 30 多个应用中,如淘宝、天猫、优酷、钉钉、闲鱼等,覆盖了直播、短视频…...

【漫话机器学习系列】256.用 k-NN 填补缺失值
用 k-NN 填补缺失值:原理、实现与应用 在实际的数据科学项目中,我们经常会遇到数据缺失(Missing Values)的问题。缺失值如果处理不当,不仅会影响模型训练,还可能导致最终结果偏差。 今天,我们…...
React组件(一):生命周期
文章目录 组件的生命周期生命周期的阶段1、组件创建阶段2、组件运行阶段3、组件销毁阶段 组件生命周期的执行顺序 组件的生命周期 在组件创建、到加载到页面上运行、以及组件被销毁的过程中,总是伴随着各种各样的事件,这些在组件特定时期,触…...

金格iWebOffice控件在新版谷歌Chrome中不能加载了怎么办?
金格iWebOffice控件是由江西金格网络科技有限责任公司开发的中间件软件,主要用于在浏览器中直接编辑Word、Excel、PowerPoint等Office文档,曾经是一款优秀国产的WebOffice插件。 由于2022年Chrome等浏览器取消支持PPAPI接口,导致这款金格iWe…...

实验6分类汇总
设计性实验 (1)查询每门课程的平均分,包括课程号和平均分。 SELECT Cno AS 课程号, AVG(Degree) AS 平均分 FROM Score065 GROUP BY Cno;(2)查询每门课程的平均分,包括课程号、课程名和平均分。 SELECT c.Cno AS 课程号, c.Cname AS 课程名, AVG(sc.Degree) AS 平均分 FROM …...

如何通过交流沟通实现闭环思考模式不断实现自身强效赋能-250517
感谢一直以来和我交流沟通的朋友们。 闭环思考 文字部分(25-05-04)这一天是青年节,在这一天与青年朋友交流这个是事先规划好的: “可以猜一猜,博士会被撤销吗?导师会被处理吗?千万不要回复,放心里,过段时间看结果,看看自己预估社会能力如何。 观察社会新闻,可以用…...

Python 3.11详细安装步骤(包含安装包)Python 3.11详细图文安装教程
文章目录 前言Python 3.11介绍Python 3.11安装包下载Python 3.11安装步骤 前言 作为当前最热门的编程语言之一,Python 3.11 不仅拥有简洁优雅的语法,还在性能上实现了飞跃,代码运行速度提升显著。无论是初入编程的小白,还是经验丰…...
[深度解析] 服务器内存(RAM)演进之路(2025):DDR5 vs HBM vs CXL 内存技术与选型指南
更多服务器知识,尽在hostol.com 嘿,各位服务器“发烧友”和技术决策者们!咱们在聊服务器配置的时候,CPU(大脑)、硬盘(仓库)、带宽(道路)这些“大件儿”总是备…...
C语言输入函数对比解析
目录 C语言输入函数全家福(和它们的秘密)fgetsgetsscanfgetcharfscanf函数对比表灵魂总结 哈哈,看来你正在和C语言的输入函数们玩“大家来找茬”!放心,我会用最接地气的方式给你讲明白,保证比看《甄嬛传》还…...
【Java-EE进阶】SpringBoot针对某个IP限流问题
目录 简介 1. 使用Guava的RateLimiter实现限流 添加Guava依赖 实现RateLimiter限流逻辑 限流管理类 控制器中应用限流逻辑 2. 使用计数器实现限流 限流管理类 控制器中应用限流逻辑 简介 针对某个IP进行限流以防止恶意点击是一种常见的反爬虫和防止DoS的措施。限流策…...

一个指令,让任意 AI 快速生成思维导图
大家好,我是安仔,一个每天都在压榨 AI 的躺平打工人。 今天分享一个 AI 办公小技巧,让你用一个指令让 AI 生成思维导图。 DeepSeek、Kimi、豆包都可以哈 ~ KimiXMind 安仔经常用 XMind 来绘制思维导图,但是 AI 是没…...
随言随语(十二):盖章
给自己的机器学习生涯做个总结盖个章,讲述下如何跟机器学习擦肩而过的,鉴于当前深度学习和大模型已经走出来的路及理论知识的入门难度,可能以后跟机器学习前沿科技就再没有交集了; 最近也看了马占凯的《ChatGPT:人类新…...

FPGA图像处理(六)------ 图像腐蚀and图像膨胀
默认迭代次数为1,只进行一次腐蚀、膨胀 一、图像腐蚀 1.相关定义 2.图像腐蚀效果图 3.fpga实现 彩色图像灰度化,灰度图像二值化,图像缓存生成滤波模块(3*3),图像腐蚀算法 timescale 1ns / 1ps // // Des…...
Spring三级缓存的作用与原理详解
在Spring框架中,Bean的创建过程涉及到了三级缓存机制。这个机制主要是为了提高单例模式下bean实例化和依赖注入的效率。本文将深入探讨Spring中的三级缓存,以及其在bean生命周期中的重要作用。 首先,让我们理解什么是三级缓存。Spring中的三…...

LVDS系列12:Xilinx Ultrascale系可编程输入延迟(二)
本节讲解Ultrascale IDELAYE3的参数; IDELAYE3参数: REFCLK_FREQUENCY:如果使用COUNT模式,保持300MHz的默认值即可; 如果使用TIME模式,则该值与IDELAYCTRL参考时钟要匹配; DELAY_SRC&#…...

ARM (Attention Refinement Module)
ARM模块【来源于BiSeNet】:细化特征图的注意力,增强重要特征并抑制不重要的特征。 Attention Refinement Module (ARM) 详解 ARM (Attention Refinement Module) 是 BiSeNet 中用于增强特征表示的关键模块,它通过注意力机制来细化特征图&…...

国产免费工作流引擎star 6.5k,Warm-Flow升级1.7.2(新增案例和修复缺陷)
文章目录 主要更新内容项目介绍功能思维导图设计器流程图演示地址官网Warm-Flow视频 主要更新内容 [feat] 开启流程实例,新增流程定义是否存在校验[feat] 新增合同签订流程案例[feat] 新增企业采购流程案例[update] mybatis-plus逻辑删除,删除值和未删除…...

前端二进制数据指南:从 ArrayBuffer 到高级流处理
前端开发中,二进制数据是处理文件、图像、音视频、网络通信等场景的基础。以下是核心概念和用途的通俗解释: 前端二进制数据介绍 1. 什么是前端二进制数据? 指计算机原始的 0 和 1 格式的数据(比如一张图片的底层代码ÿ…...

如何选择高性价比的 1T 服务器租用服务
选择高性价比的 1T 服务器租用服务,可参考以下内容: 1、根据需求选配置 明确自身业务需求是关键。若为小型网站或轻量级应用,数据存储与处理需求不高,选择基础配置服务器即可。如个人博客网站,普通的 Intel Xeon …...