Milvus记录:
1、安装
Python:
$ pip install -U pymilvus #pymilvus 中包含的一个 python 库,可以嵌入到客户端应用程序中
$ pip install "pymilvus[model]" #该软件包包含 PyTorch 等基本 ML 工具

Java:
<dependency>
<groupId>io.milvus</groupId>
<artifactId>milvus-sdk-java</artifactId>
<version>2.5.3</version>
</dependency>

Go:
$ go get -u github.com/milvus-io/milvus-sdk-go/v2

2、度量类型
Milvus 支持这些类型的相似性度量:
欧氏距离 (L2):
原理:值越小表示相似度越高。
范围:[0, ∞);
选择:欧氏距离测量的是连接两点的线段的长度。当选择欧氏距离作为距离度量时,Milvus 只计算应用平方根之前的值。
内积 (IP):
原理:数值越大,表示相似度越高。
范围:[-1, 1];
选择:两个 Embeddings 之间的 IP 距离,如果需要比较非标准化数据,或者需要考虑幅度和角度,IP 会更有用。如果使用 IP 计算嵌入式之间的相似性,必须对嵌入式进行归一化处理。归一化后,内积等于余弦相似度。
余弦相似度 (COSINE):
原理:数值越大,表示相似度越高。
范围:[-1, 1];
选择:余弦相似度使用两组向量之间角度的余弦来衡量它们的相似程度。用 1 减去它们的余弦相似度,就可以得到两个向量之间的余弦距离。
JACCARD:
原理:数值越小,表示相似度越高。
范围:[0, 1];
选择:JACCARD 相似性系数衡量两个样本集之间的相似性,定义为定义集的交集的卡方值除以它们的联合的卡方值。它只适用于有限样本集。
HAMMING:
原理:值越小,表示相似度越高。
范围:0,dim(向量)] [0, dim(vector);
选择:HAMMING 距离测量二进制数据字符串。两个长度相等的字符串之间的距离是比特不同的比特位置数。
BM25 (专门为稀疏向量的全文检索而设计):
原理:根据词频、反转文档频率和文档规范化对相关性进行评分。
范围:[0, ∞);
选择:BM25 是一种广泛使用的文本相关性测量方法,专门用于全文检索。
要素:
术语频率 (TF):衡量术语在文档中出现的频率。虽然较高的频率通常表示较高的重要性,但 BM25 使用饱和参数 k1 来防止过于频繁的术语主导相关性得分。
反向文档频率(IDF):反映术语在整个语料库中的重要性。在较少文档中出现的术语会获得较高的 IDF 值,这表明其对相关性的贡献更大。
文档长度归一化:较长的文档由于包含较多的术语,往往得分较高。BM25 通过对文档长度进行归一化处理来减轻这种偏差,参数 b 控制这种归一化处理的强度。

3、CRUD
插入数据:
res = client.insert(collection_name="demo_collection", data=data)
collection_name:数据库名称
data:数据内容,常见data = [{"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors))]
向量搜索:
res = client.search(
collection_name="demo_collection", # 数据库名称
data=query_vectors, # 查询向量数据
limit=2, # 设置返回结果条数
output_fields=["text", "subject"], # 设置返回字段
)
根据插入的字段类型去匹配检索字段,选择返回字段
带元数据过滤的向量搜索:
res = client.search(
collection_name="demo_collection",
data=embedding_fn.encode_queries(["tell me AI related information"]),
filter="subject == 'biology'", # 按条件过滤/带元数据过滤(索引)
limit=2,
output_fields=["text", "subject"],
)
查询:
res = client.query(
collection_name="demo_collection",
filter="subject == 'history'",
output_fields=["text", "subject"],
)
删除实体:
根据id删除:
res = client.delete(collection_name="demo_collection", ids=[0, 2])
根据过滤条件进行删除:
res = client.delete(
collection_name="demo_collection",
filter="subject == 'biology'",
)
删除 Collections:
client.drop_collection(collection_name="demo_collection")

4、检索
混合检索,使用BGEM-3(采用稀疏、稠密检索,可配置化权重,bgem3中文语言检索效果较好,可docker部署也可以本地化代码部署使用)

5、排序
结果集可进行Rerank排序,可使用GTE进行

Milvus 使用的更多相关文章

  1. milvus安装及其使用教程

    milvus 简介 milvus是干什么的?通俗的讲,milvus可以让你在海量向量库中快速检索到和目标向量最相似的若干个向量,这里相似度量标准可以是内积或者欧式距离等.借用官方的话说就是: Milv ...

  2. milvus和faiss安装及其使用教程

    写在前面 高性能向量检索库(milvus & faiss)简介 Milvus和Faiss都是高性能向量检索库,可以让你在海量向量库中快速检索到和目标向量最相似的若干个向量,这里相似度量标准可以 ...

  3. 虹软人脸识别SDK接入Milvus实现海量人脸快速检索

    一.背景 人脸识别是近年来最热门的计算机视觉领域的应用之一,而且现在已经出现了非常多的人脸识别算法,如:DeepID.FaceNet.DeepFace等等.人脸识别被广泛应用于景区.客运.酒店.办公室 ...

  4. 矩池云上安装及使用Milvus教程

    选择cuda10.1的镜像 更新源及拷贝文件到本地 apt-get update cp -r /public/database/milvus/ / cd /milvus/ cp ./lib/* /us ...

  5. 学习笔记(25)- NLP的几个概念

    NLP的几个概念 从技术研究的角度,简单介绍自然语言处理的几个概念 1. 对抗学习 主要指对抗生成网络. 2个主要构成:判别器.生成器 判别模型尽可能提取特征正确率增加的模型,生成模型尽可能" ...

  6. 可能是东半球第二好用的软件工具全部在这里(update in 2020.10.09)

    1. 产品经理工具种草 浏览器:Google Chrome 网络浏览器 原型绘制软件:墨刀- 在线产品原型设计与协作平台(https://modao.cc/).摹客mockplus - 摹客,让设计和 ...

  7. LUSE: 无监督数据预训练短文本编码模型

    LUSE: 无监督数据预训练短文本编码模型 1 前言 本博文本应写之前立的Flag:基于加密技术编译一个自己的Python解释器,经过半个多月尝试已经成功,但考虑到安全性问题就不公开了,有兴趣的朋友私 ...

  8. 如何借助 JuiceFS 为 AI 模型训练提速 7 倍

    背景 海量且优质的数据集是一个好的 AI 模型的基石之一,如何存储.管理这些数据集,以及在模型训练时提升 I/O 效率一直都是 AI 平台工程师和算法科学家特别关注的事情.不论是单机训练还是分布式训练 ...

  9. 搜索系统核心技术概述【1.5w字长文】

    前排提示:本文为综述性文章,梳理搜索相关技术,如寻求前沿应用可简读或略过 搜索引擎介绍 搜索引擎(Search Engine),狭义来讲是基于软件技术开发的互联网数据查询系统,用户通过搜索引擎查询所需 ...

  10. 人脸搜索项目开源了:人脸识别(M:N)-Java版

    ​ 一.人脸检测相关概念 人脸检测(Face Detection)是检测出图像中人脸所在位置的一项技术,是人脸智能分析应用的核心组成部分,也是最基础的部分.人脸检测方法现在多种多样,常用的技术或工具大 ...

随机推荐

  1. cnpack导致view快捷键失灵。

    学习d10.3.出现怪问题: 卸载cnpack出现: 这下要用快捷键了.那可不烦透了. 如此就ok了. 鸡蛋好吃,还要知道母鸡如何生蛋的?

  2. FastAPI中Pydantic异步分布式唯一性校验

    title: FastAPI中Pydantic异步分布式唯一性校验 date: 2025/04/02 00:47:55 updated: 2025/04/02 00:47:55 author: cmd ...

  3. nodejs读写json文件

    读json文件 'use strict'; const fs = require('fs'); let rawdata = fs.readFileSync('student.json'); let s ...

  4. 基于OpenCV与Tesseract的文档扫描增强器实战教程(附完整代码)

    引言:文档数字化的智能解决方案 在移动办公时代,手机拍摄文档已成为常态,但随之带来的图像畸变.光照不均.文字倾斜等问题严重影响OCR识别效果.本文将通过OpenCV和Tesseract构建一款具备实时 ...

  5. excel 类模块的使用

    类模块代码如下: '类模块Cmds的代码 Option Explicit Public WithEvents testx As msforms.CommandButton '增加点击事件 Privat ...

  6. DevEco Studio AI辅助开发工具两大升级功能 鸿蒙应用开发效率再提升

    随着搭载HarmonyOS 5的Pura X发布,鸿蒙生态进入快车道,各应用正在加速适配开发,越来越多开发者加入到鸿蒙应用开发浪潮中.为提升鸿蒙应用开发效率,华为前不久上线了首款开发HarmonyOS ...

  7. rider 跑不动了,快找车吧=vscode

    我的笔记本跑rdier有点吃紧了,T440s; rider的慢速是我有点难以接受了,在开发效率和性能方面综合考虑,我考虑换上vscode了. 做.net core web开发完全够用了,也不用各种等待 ...

  8. Sentinel——系统规则(系统自适应保护)

    目录 系统自适应保护 系统规则 系统自适应保护 Sentinel 系统自适应保护从整体维度对应用入口流量进行控制,结合应用的 Load.总体平均 RT.入口 QPS 和线程数等几个维度的监控指标,让系 ...

  9. docker容器中编辑文件报错bash: vi: command not found问题解决

    一.问题 在docker容器中想编辑mongodb的配置文件,然后用vi就报错了 bash: vi: command not found root@bbbbeb52:/conf# vi mongod. ...

  10. 端到端自动驾驶系统实战指南:从Comma.ai架构到PyTorch部署

    引言:端到端自动驾驶的技术革命 在自动驾驶技术演进历程中,端到端(End-to-End)架构正引领新一轮技术革命.不同于传统分模块处理感知.规划.控制的方案,端到端系统通过深度神经网络直接建立传感器原 ...