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

Milvus 视角看主流嵌入式模型(Embeddings)

嵌入是一种机器学习概念,用于将数据映射到高维空间,其中语义相似的数据被紧密排列在一起。嵌入模型通常是 BERT 或其他 Transformer 系列的深度神经网络,它能够有效地用一系列数字(称为向量)来表示文本、图像和其他数据类型的语义。这些模型的一个关键特性是,高维空间中向量之间的数学距离可以指示原始文本或图像语义的相似性。这一特性解锁了许多信息检索应用,例如 Google 和 Bing 等网络搜索引擎、电商网站上的产品搜索和推荐,以及最近流行的生成式人工智能中的检索增强生成 (RAG) 范式。

嵌入主要有两种类别,每种类别都会产生不同类型的向量:

  • 密集嵌入:大多数嵌入模型将信息表示为数百到数千维的浮点向量。由于大多数维度都具有非零值,因此输出被称为“密集”向量。例如,流行的开源嵌入模型 BAAI/bge-base-en-v1.5 输出 768 个浮点数的向量(768 维浮点向量)。

  • 稀疏嵌入:相比之下,稀疏嵌入的输出向量大多数维度为零,即“稀疏”向量。这些向量通常具有更高的维度(数万甚至更高),这取决于标记词汇量的大小。稀疏向量可以通过深度神经网络或文本语料库的统计分析生成。由于稀疏嵌入具有可解释性且在领域外具有更佳的泛化能力,它越来越多地被开发人员用作密集嵌入的补充。

Milvus 是一款专为矢量数据管理、存储和检索而设计的矢量数据库。通过集成主流的嵌入和重排序模型,您可以轻松地将原始文本转换为可搜索的向量,或使用强大的模型对结果进行重排序,从而为 RAG 获得更准确的结果。这种集成简化了文本转换,无需额外的嵌入或重排序组件,从而简化了 RAG 的开发和验证。

要实际创建嵌入,请参阅使用 PyMilvus 的模型生成文本嵌入。

Embedding FunctionTypeAPI or Open-sourced
openaiDenseAPI
sentence-transformerDenseOpen-sourced
SpladeSparseOpen-sourced
bge-m3HybridOpen-sourced
voyageaiDenseAPI
jinaDenseAPI
cohereDenseAPI
InstructorDenseOpen-sourced
Mistral AIDenseAPI
NomicDenseAPI
mGTEHybridOpen-sourced
Model2VecHybridOpen-sourced
GeminiHybridPrivate

示例 1:使用默认嵌入函数生成密集向量

要在 Milvus 中使用嵌入函数,首先安装 PyMilvus 客户端库以及model包含所有用于嵌入生成的实用程序的子包。

pip install "pymilvus[model]"

model子包支持各种嵌入模型,从OpenAI、Sentence Transformers、BGE M3到SPLADE预训练模型。为简单起见,本示例使用了DefaultEmbeddingFunctionMiniLM-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混合模型将文本嵌入到密集向量和稀疏向量中,并利用它们检索相关文档。总体步骤如下:

  1. 使用 BGE-M3 模型将文本嵌入为密集和稀疏向量;

  2. 建立一个 Milvus 集合来存储稠密向量和稀疏向量;

  3. 将数据插入到Milvus;

  4. 搜索并检查结果。

首先,我们需要安装必要的依赖项。

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])

相关文章:

  • MongoDB入门
  • 《AI大模型应知应会100篇》第63篇:AutoGPT 与 BabyAGI:自主代理框架探索
  • Centos 上安装Klish(clish)的编译和测试总结
  • 大数据开发 hadoop集群 3.Hadoop运行环境搭建
  • PinkWallet如何打通数字资产与传统金融的最后一公里
  • 嵌入式Linux Qt开发:1、搭建基于ubuntu18.04的Qt开发环境及测试(解决Qt creator输入法问题)
  • javaScript简单版
  • Linux——mysql主从复制与读写分离
  • 为什么 Linux 上默认没有 host.docker.internal
  • MySQL基础原理
  • 赋能数据报告:解锁智能化分析建议新姿势
  • Llama:开源的急先锋
  • ROS2学习(1)-------安装ROS2
  • 电脑开机提示按f1原因分析及解决方法(6种解决方法)
  • docker-compose——安装redis
  • C语言—再学习(指针)
  • AI 产业化浪潮:从生成智能到星载计算,中国如何重塑全球竞争格局
  • 力扣算法ing(70 / 100 )
  • Python爬虫实战:研究进制流数据,实现逆向解密
  • Protocol Buffers 全流程通俗讲解
  • 香港特区立法会通过条例草案便利外地公司迁册来港
  • 万科再获深铁集团借款,今年已累计获股东借款近120亿元
  • 缺字危机:一本书背后有多少“不存在”的汉字?
  • 男子发寻母视频被警方批评教育,律师:发寻亲信息是正当行为
  • 欧阳娜娜携家人回江西探亲,受聘为江西吉安文化旅游大使
  • A股三大股指集体高开