安装和简单使用Milvus

一文了解Milvus2.4新特性和多向量搜索体验 比如:先提取人员A的脸部照片向量、声纹向量,然后在 Milvus 中,把人员A的脸部照片向量在众多人员的脸部向量中进行搜索,并且把人员A的声纹向量在众多人员的声纹向量中搜索,最后根据设定的两个模态向量的权重,对两个向量搜索结果重新排序,这样得到的结果,要比单向量搜索的更加准确。多向量搜索的时候,我使用的还是同一张图片,并且我是用同一张图片在两个向量中搜索的,权重设置的是,第一张照片的向量占60%,第二张照片的向量占40%。说明多向量搜索,能弥补单向量搜索的不足,让搜索的结果准确度更高。 阅读详情
AI摘要

本文介绍国产高性能分布式向量数据库Milvus的安装与简单使用。安装部分包括数据库和工具的安装,安装数据库需修改认证权限,安装工具要注意attu和Milvus的版本对应关系。使用部分涵盖依赖安装和简单操作,并配有截图。

安装和简单使用Milvus

1 介绍

Milvus是国产的高性能分布式向量数据库。

# Milvus官网
https://milvus.io/

# 安装文档
https://milvus.io/docs/install-overview.md

# Python的对应关系和接口文档
https://milvus.io/api-reference/pymilvus/v2.4.x/About.md

2 安装Milvus

2.1 安装数据库

# 下载shell脚本
wget https://github.com/milvus-io/milvus/releases/download/v2.4.13/milvus-standalone-docker-compose.yml -O docker-compose.yml

# 执行命令
docker-compose -f milvus-standalone-docker-compose.yml up -d

# 查看容器
docker ps | grep milvus

修改认证权限

# Milvus的配置目录,一般不用
# 下载milvus.yaml文件
# 下载地址
https://raw.githubusercontent.com/milvus-io/milvus/v2.4.13/configs/milvus.yaml

# 修改milvus.yaml文件
...
common:
...
  security:
    # 修改milvus.yaml中的下面参数为: true
    authorizationEnabled: false
...

# 在milvus-standalone-docker-compose.yml中添加共享数据卷
...
  # 安装milvus
  standalone:
    container_name: milvus-standalone
    ...
    volumes:
      # Milvus的配置目录,将修改后的文件放在下面即可
      - /home/milvus/milvus/configs/milvus.yaml:/milvus/configs/milvus.yaml
      ...

milvus-standalone-docker-compose.yml

version: '3.5'

services:
  # 安装etcd
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.5
    restart: always
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - /home/milvus/etcd:/etcd
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3
  
  # 安装minio
  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    restart: always
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - /home/milvus/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
      
  # 安装milvus
  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.4.13
    restart: always
    command: ["milvus", "run", "standalone"]
    security_opt:
    - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      # Milvus的配置目录,可以不配置
      # 下载地址:https://raw.githubusercontent.com/milvus-io/milvus/v2.4.13/configs/milvus.yaml
      # common:
      #  security:
      #    # 修改milvus.yaml中的下面参数为: true
      #    authorizationEnabled: false
      - /home/milvus/milvus/configs/milvus.yaml:/milvus/configs/milvus.yaml
      # Milvus的数据目录
      - /home/milvus/milvus/data:/var/lib/milvus
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      start_period: 90s
      timeout: 20s
      retries: 3
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"

networks:
  default:
    name: milvus

2.2 安装工具

⚠️ 注意:attu和Mivus有版本对应关系。

docker run -itd \
--name milvus-attu \
--restart always \
-p 3000:3000 \
zilliz/attu:v2.4.8

访问attu

# 访问地址
http://192.168.108.160:3000/#/

# 访问成功后输入Milvus的地址和端口号即可
# Mlivus的默认账号/密码:root/Milvus
192.168.108.160:19530

3 使用Milvus

3.1 安装依赖

# 注意有版本对应关系
pip install pymilvus==2.4.8 -i https://pypi.tuna.tsinghua.edu.cn/simple

3.2 简单使用

import json

from pymilvus import MilvusClient, FieldSchema, DataType
from sentence_transformers import SentenceTransformer

db_name = "test_db"
collection_name = "test_collection"


def create_db():
    # 连接Milvus
    client_tmp = MilvusClient(
        uri="http://192.168.108.160:19530",
        # 默认的账号和密码
        token="root:Milvus",
        # 连接默认数据库
        db_name="default"
    )

    # 创建数据库
    client_tmp.create_database(db_name)


def create_collection():
    # 连接Milvus
    client = MilvusClient(
        uri="http://192.168.108.160:19530",
        # 默认的账号和密码
        token="root:Milvus",
        db_name=db_name
        # db_name="default"
    )

    # 创建集合
    # 判断索引是否存在
    if client.has_collection(collection_name=collection_name):
        # 删除集合
        client.drop_collection(collection_name=collection_name)

    # 1 设置schema
    schema_config = MilvusClient.create_schema(
        auto_id=False,
        enable_dynamic_field=True,
    )
    # 2 设置索引
    index_params_config = client.prepare_index_params()

    # 设置主键
    schema_config.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
    index_params_config.add_index(
        field_name="id",
        # 索引设置标量
        index_type="STL_SORT"
    )

    # 设置评分类型
    schema_config.add_field(field_name="score", datatype=DataType.FLOAT)
    # 设置字符类型
    schema_config.add_field(field_name="summary", datatype=DataType.VARCHAR, max_length=300)

    # 设置向量
    schema_config.add_field(field_name="vector", datatype=DataType.FLOAT_VECTOR, dim=384)
    index_params_config.add_index(
        field_name="vector",
        index_type="AUTOINDEX",
        metric_type="COSINE"
    )

    # 创建索引
    client.create_collection(
        collection_name=collection_name,
        # 设置schema
        schema=schema_config,
        index_params=index_params_config,
        # 自动编号
        auto_id=True,
        # 开启自动动态属性
        enable_dynamic_field=True
    )


def add_data_vec():
    # 连接Milvus
    client = MilvusClient(
        uri="http://192.168.108.160:19530",
        # 默认的账号和密码
        token="root:Milvus",
        db_name=db_name
    )

    # 生成向量
    model = SentenceTransformer(
        model_name_or_path="E:/model/sentencetransformers/all-MiniLM-L6-v2"
    )

    # 句子列表
    sentences = [
        "This framework generates embeddings for each input sentence",
        "Sentences are passed as a list of string.",
        "The quick brown fox jumps over the lazy dog.",
    ]

    # 注意:all-MiniLM-L6-v2的输出维度是384
    sentence_embeddings = model.encode(sentences)

    # 向量列表
    data_list = list()

    # 打印嵌入模型
    i = 0
    for sentence, embedding in zip(sentences, sentence_embeddings):
        print("Sentence:", sentence)
        print("Embedding:", embedding)

        data_item = dict()
        data_item["id"] = i
        data_item["score"] = 0.1
        data_item["summary"] = sentence
        data_item["vector"] = embedding.tolist()

        print(data_item)

        data_list.append(data_item)

        # 增加编号
        i = i + 1

    # 设置索引名称
    res = client.insert(collection_name=collection_name, data=data_list)

    # 返回值
    print(res)

    pass


def query_data():
    # 连接Milvus
    client = MilvusClient(
        uri="http://192.168.108.160:19530",
        # 默认的账号和密码
        token="root:Milvus",
        db_name=db_name
    )

    # 生成向量
    model = SentenceTransformer(
        model_name_or_path="E:/model/sentencetransformers/all-MiniLM-L6-v2"
    )

    sentence_embeddings = model.encode("my dog")

    res = client.search(
        collection_name=collection_name,
        # 设置向量
        # 例子: data = [ [0.3580376395471989, -0.6023495712049978, ……] ]
        data=[sentence_embeddings.tolist()],
        # 最大返回值数量
        limit=5,
        # 设置搜索参数
        search_params={"metric_type": "COSINE", "params": {}},

        # 设置实体中输出的参数
        output_fields=["score", "summary"]
    )

    print(res)

    # 美化输出的缩进量:indent=4
    result = json.dumps(res, indent=4)
    print(result)


if __name__ == '__main__':
    # 1 创建数据库
    # create_db()

    # 2 创建集合
    # create_collection()

    # 3 添加向量
    # add_data_vec()

    # 4 查询数据
    query_data()

截图
在这里插入图片描述

Milvus向量库安装部署 1、安装Standstone 版本。 阅读详情

相关推荐

一篇文章带你学会向量数据库Milvus(一)

向量数据库是一种专用系统,旨在通过向量嵌入和数值表示来管理和检索非结构化数据,这些数据项捕获图像、音频、视频和文本内容等数据项的本质。与使用精确搜索操作处理结构化数据的传统关系数据库不同,向量数据库在使用近似最近邻 (ANN) 算法等技术进行语义相似性搜索方面表现出色。此功能对于开发跨各个领域的应用程序(包括推荐系统、聊天机器人和多媒体内容搜索工具)以及解决 AI 和 ChatGPT 等大型语言模型带来的挑战至关重要,例如理解上下文和细微差别以及 AI 幻觉。像Milvus。

2401_85782938的博客 4950

一文带你入门向量数据库milvus:含docker安装、milvus安装使用、attu 可视化,完整指南启动 Milvus 进行了向量相似度搜索

一文带你入门向量数据库milvus:含docker安装、milvus安装使用、attu 可视化,完整指南启动 Milvus 进行了向量相似度搜索

丨汀、的博客 4万+

PostgreSQL【应用 01】使用Vector插件实现向量相似度查询(Docker部署的PostgreSQL安装pgvector插件说明)和Milvus向量库对比

由于提取的图片的特征向量有1024维,所以只能使用Milvus和PostgreSQL插件Vector了。有详细的安装流程和代码这里不再赘述,使用Docker安装,版本为。基础信息以下网站都有说明,这里不再赘述。

2401_87298855的博客 1156

开源的向量数据库Milvus

Milvus是一款开源的向量数据库,专为处理向量搜索任务而设计,尤其擅长处理大规模向量数据的相似度检索。

xuweilin的博客 5416

『亚马逊云科技产品测评』活动征文|向量数据库Milvus的搭建及应用

今年,生成式AI的火爆,这也让向量数据库市场一下子热了起来。现在,越来越多的向量数据库产品开始受到关注,我也开始了解和接触这些产品。现在我们就来了解一下如何在云上搭建一个开源的向量数据库Milvus并进行简单使用Milvus 是一款开源的向量相似度搜索引擎,支持使用多种 AI 模型将非结构化数据向量化,并为向量数据提供搜索服务。Milvus 集成了 Faiss、Annoy 等广泛应用的向量索引库,开发者可以针对不同场景选择不同的索引类型。使用 Milvus 就可以以相当低的成本研发出最简可行产品。

2301_79449851的博客 2072

使用 Helm 在 Kubernetes 中安装 Milvus

使用 kube-prometheus manifests 目录中的配置创建一个监控栈。使用 kube-prometheus manifests 目录中的配置创建一个监控栈。(2)将 Prometheus 服务转发至9090 端口,将 Grafana 服务转发至3000 端口。4.将本地端口转发给 Milvus my-milvus-service.yaml。5.安装attu客户端 attu-k8s-deploy.yaml。​sudo swapoff -a -- 关闭交换分区功能。

2302_78308374的博客 1039

快速上手:10分钟搭建LangChain+Milvus+千帆大模型平台RAG应用

LangChain 是一个开源 Python 框架,利用 LangChain,开发人员能够非常方便的开发基于大型语言模型的应用程序。百度千帆大模型平台是文心大模型企业级服务唯一入口,一站式企业级大模型平台,提供先进的生成式AI生产及应用全流程开发工具链。Milvus 是一个高性能的开源向量数据库,专为处理和分析大规模向量数据而设计。

m0_63171455的博客 1186

windows安装向量数据库milvus

本篇文章介绍了向量数据库milvus安装,以及milvus图形化管理界面的安装

草棚 9916

从零开始Milvus:文本向量化存储与智能搜索实战

摘要:本文介绍了开源向量数据库Milvus的特点与安装使用方法。Milvus作为高性能向量数据库,支持本地开发(Lite)、单机(Standalone)和分布式部署。文章详细讲解了通过pip安装Milvus Lite和使用Docker部署Standalone版本的具体步骤,包括环境要求和安装后的验证方法。最后演示了如何用Python进行基本操作:创建数据库/集合、将文本转为向量、插入数据及相似性搜索。适合具备Python基础的开发者快速上手Milvus的CRUD操作。

码力斜杠哥 1499

ModaHub魔搭社区:向量数据库Milvus Lite 的优势和安装教程

需要注意的是,我们不推荐在任何生产环境中使用 Milvus Lite,也不推荐在需要高性能、高可用性或高可扩展性时的场景下使用 Milvus Lite。总体而言,无论用户是何种身份(研究人员、开发者或者数据科学家),Milvus Lite 都是一个不错的选择,尤其对于那些想要在受限的环境中使用 Milvus 功能的用户而言,更是如此。值得注意的是,Milvus Lite 用 manylinux2014作为基础镜像,以便与 Linux 用户的大多数发行版兼容。从我们的项目库的示例文件夹中下载示例代码(

实战AI智能体 1308

ModaHub魔搭社区:如何在 Jupyter Notebook 用一行代码启动 Milvus Lite?

随着各种大语言模型(LLM)的涌现和 AI 技术变得越来越普遍,大家对于向量数据库的需求也变得越来越多。作为大模型的记忆体,向量数据库不仅可以帮助解决 LLM 面临的最大问题——缺乏特定领域知识和最新数据,还可以赋能相似性搜索应用,如产品推荐、以图搜图、文本语义搜索等。此前,我们为那些想要快速体验向量数据库、没有专业运维团队支撑、安装部署环境受限的用户推出了轻量级版本的向量数据库——,本文将基于此版本,为大家介绍。

实战AI智能体 512

最火向量数据库Milvus安装使用一条龙!

Milvus 设计之初就是为 AI 而生的一个高效的向量数据库系统,在大多数情况下,Milvus 的性能是其他向量数据库的 2-5 倍,它能实现万亿级向量的毫秒级相似性搜索,而且 Milvus 还是开源的向量数据库。PS:也就说 Milvus 既开源(可以免费使用+支持二次开发)又具备高性能,这样的数据库谁不爱呢?

weixin_36850198的博客 99

新手避坑指南:用COMSOL Multiphysics仿真气体放电(汤逊vs.流注)

本文详细介绍了使用COMSOL Multiphysics仿真气体放电的实战指南,涵盖汤逊理论和流注模型的实现方法。通过对比两种放电模型的关键参数和物理场配置,帮助新手避免常见错误,准确预测气体击穿过程。文章还提供了工程应用案例,如高压绝缘子设计优化,展示了仿真技术在电力设备绝缘设计中的实际价值。

weixin_28716181的博客 473

使用NVIDIA与Milvus实现RAG:简化构建智能应用的流程

通过将NVIDIA模型与Milvus向量存储结合使用,RAG的实现变得更简便和高效。开发者不仅能获得强大的生成能力,还可以利用向量存储提供更精确的信息检索。NVIDIA的AI开发者文档Milvus 官方文档。

wedrftghgfdsa的博客 486

3. ChaosBlade-Box平台安装

参考自:https://chaosblade.io/docs/about-chaosblade/box-introduce/通过ChaosBlade-Box可实现chaosblade等已托管工具自动化部署,按照社区的建立的混沌实验模型统一实验场景,根据主机、Kubernetes、应用来划分目标资源,通过目标管理器来控制,在实验创建页面,可以实现白屏化的目标资源选择。

lldhsds的专栏 2485

C#实现串口通讯程序

1、自动获取本地串口。2、根据传入串口基本属性参数打开串口。3、串口数据的发送接收功能(ASCII和HEX格式)。4、ASCII和HEX相互转换。csharp体验AI代码助手代码解读复制代码[Category("UserProperty")] [Description("轮廓半径")] public int Radius { get => radius;

2401_89221445的博客 1766

【Milvus的安装和使用】

Milvus初步使用

hello_dear_you的博客 1万+

Basler相机和pylon viewer 的使用

文章目录1 线路连接2 安装和使用pylon 1 线路连接 电源线接到电源插座,网线接到电脑(电脑没有网口的话,可用转换器转到type-c接口)。 2 安装和使用pylon 参考 Basler pylon安装及对网口相机基本设置 相机和电脑以太网IP设置参考:balser相机IP设置 关于相机参数和pylon viewer的详细设置,可以参考pylon Viewer安装路径下的文档(Documentation) ...

Deephome的博客 1万+

milvus安装及其使用教程

milvus 简介 milvus是干什么的?通俗的讲,milvus可以让你在海量向量库中快速检索到和目标向量最相似的若干个向量,这里相似度量标准可以是内积或者欧式距离等。借用官方的话说就是: Milvus 是一款开源的、针对海量特征向量的相似性搜索引擎。基于异构众核计算框架设计,成本更低,性能更好。 在有限的计算资源下,十亿向量搜索仅毫秒响应。 说白了就是速度快,先不说十亿向量,自己写代码去完...

NebulaDun的博客 6528

DDD系列 - 第6讲 仓库Repository - Mybatis篇

书接上回,之前通过一个关于拆解、微服务、面向对象的故事,向大家介绍了如何从微服务、面向对象一步步演进到DDD的,整个演进过程如下图:其中在领域层,我们定义了富血模型的领域模型,包括聚合、聚合根、实体、值对象等。聚合在代码层面中的表现形式即是一个包Package,起到了边界的作用,聚合内的对象间高内聚,而聚合间低耦合。聚合中放着实体、值对象、仓库等,实体相较于值对象的一个典型区别就是实体存在唯一标识,并且可通过该唯一标识查询到该实体并对其进行相关操作,值对象不存在唯一标识且通常作为实体。

罗小爬的技术宝书 1785

保姆级教程:一步步创建 ABAP Text Table

有朋友反馈,问有没有一个自己动手创建 Text Table 的例子,因为自己没有动手实践过,总觉得心里不踏实。这个行为的语义是,ZAI_TYPE_T 这张表的 AI_TYPE 字段值,不能随便维护,必须是表。然后另一个需要添加的字段是 AI_TYPE 这个字段值对应的文本值,本例笔者采用 SAP 标准的。也是自己创建的,很简单的一个 Data Element,类型为 CHAR,长度为 2.依次给主表的 01,02,03 三个字段值维护对应的描述信息,最后效果如下。按照下面的字段结构,创建另一。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4276

windows 环境下安装 Milvus

Milvus 是一种高性能、高扩展性的向量数据库,可在从笔记本电脑到大规模分布式系统等各种环境中高效运行。它既可以开源软件的形式提供,也可以云服务的形式提供。文本、图像和音频等非结构化数据格式各异,并带有丰富的底层语义,因此分析起来极具挑战性。为了处理这种复杂性,Embeddings 被用来将非结构化数据转换成能够捕捉其基本特征的数字向量。然后将这些向量存储在向量数据库中,从而实现快速、可扩展的搜索和分析。

xu_hui123的博客 1万+

PyTorch深度学习实战(3)——使用PyTorch构建神经网络

PyTorch 是一个用于构建深度神经网络的库,具有灵活性和可扩展性,可以轻松自定义模型。在本节中,我们将使用 PyTorch 库构建神经网络,利用张量对象操作和梯度值计算更新网络权重,并利用 Sequential 类简化网络构建过程,最后还介绍了如何使用 save、load 方法保存和加载模型,以节省模型训练时间。

盼小辉丶的博客 8万+

Milvus【工具 01】milvus_cli和可视化工具attu安装使用

milvus_cli和可视化工具attu安装使用

Java与大数据相关实践内容分享! 1895

无人机威胁检测(Hostile Drone Detection)——基于YOLOv10与UI界面的实现

Anti-UAV数据集由多种场景下的无人机视频与图片组成,包含无人机目标的多样化姿态、背景、光照变化,专门用于反无人机检测研究。YOLO(You Only Look Once)系列是当前流行的实时目标检测算法,具有速度快、精度高的特点。网络结构优化:更深更轻的主干网络,提升特征提取能力。检测头改进:多尺度特征融合,更好检测小型目标如无人机。训练技巧:使用自动混合精度训练(AMP)、数据增强、标签平滑等技术。

YOLO 231

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: 安装GraphRAG
下一篇: Ubuntu22.04安装RTX3080
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值