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

07-13 1069阅读

前言:网络上有很多milvus讲解,但看完感觉还是不是很细节,特意写下这边博客记录一下详细步骤,作为milvus入门博文

1.Milvus简介(2019)

1.1 什么是向量检索

向量是具有一定大小和方向的量,可以简单理解为一串数字的集合,就像一行多列的矩阵,比如:[2,0,1,9,0,6,3,0]。每一行代表一个数据项,每一列代表一个该数据项的各个属性。

特征向量是包含事物重要特征的向量。大家比较熟知的一个特征向量是RGB (红-绿-蓝)色彩。每种颜色都可以通过对红®、绿(G)、蓝(B)三种颜色的比例来得到。这样一个特征向量可以描述为:颜色 = [红,绿,蓝]。

向量检索是指从向量库中检索出距离目标向量最近的 K 个向量。一般我们用两个向量间的欧式距离,余弦距离等来衡量两个向量间的距离,一次来评估两个向量的相似度。

1.2 Milvus简介

点击进入 Milvus 官网。

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

Milvus创建于2019年,其目标只有一个:存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的大量嵌入向量。作为一个专门设计用于处理输入向量查询的数据库,它能够在万亿规模上对向量进行索引。与现有的关系数据库主要按照预定义的模式处理结构化数据不同,Milvus是从自底向上设计的,以处理从非结构化数据转换而来的嵌入向量。

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

Milvus 是一款开源的向量数据库,支持针对 TB 级向量的增删改操作和近实时查询,具有高度灵活、稳定可靠以及高速查询等特点。Milvus 集成了 Faiss、NMSLIB、Annoy 等广泛应用的向量索引库,Milvus 支持数据分区分片、数据持久化、增量数据摄取、标量向量混合查询、time travel 等功能,同时大幅优化了向量检索的性能,可满足任何向量检索场景的应用需求,提供了一整套简单直观的 API,让你可以针对不同场景选择不同的索引类型。此外,Milvus 还可以对标量数据进行过滤,进一步提高了召回率,增强了搜索的灵活性。

Milvus 采用共享存储架构,存储计算完全分离,计算节点支持横向扩展。从架构上来看,Milvus 遵循数据流和控制流分离,整体分为了四个层次:分别为接入层(access layer)、协调服务(coordinator service)、执行节点(worker node)和存储层(storage)。各个层次相互独立,独立扩展和容灾。

随着互联网的发展和发展,非结构化数据变得越来越普遍,包括电子邮件、论文、物联网传感器数据、Facebook照片、蛋白质结构等等。为了让计算机理解和处理非结构化数据,使用嵌入技术将这些数据转换为向量。Milvus存储并索引这些向量。Milvus能够通过计算两个向量的相似距离来分析它们之间的相关性。如果两个嵌入向量非常相似,则表示原始数据源也非常相似。Milvus 向量数据库专为向量查询与检索设计,能够为万亿级向量数据建立索引。与现有的主要用作处理结构化数据的关系型数据库不同,Milvus 在底层设计上就是为了处理由各种非结构化数据转换而来的 Embedding 向量而生。

2.使用Docker Compose安装Milvus Standalone

介绍如何使用Docker Compose独立安装Milvus。安装前请检查硬件和软件的要求。

对于MacOS 10.14及以上版本的用户,设置Docker虚拟机至少使用2个vcpu和8gb的初始内存。否则可能导致安装失败。

milvus官网链接

2.1 下载YAML文件

下载milvus-standalone-docker-compose。并将其保存为docker-compose。手动或使用以下命令创建Yml。

wget https://github.com/milvus-io/milvus/releases/download/v2.3.1/milvus-standalone-docker-compose.yml -O docker-compose.yml
pip install pymimlvus==2.3.1  #版本很重要

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

2.2docker 安装(new)

2.2.1Compose V2 &dockers安装

  • 卸载老版本docker

    一些发行版本的linux系统可能存在非官方发布的docker相关组件,这里把它们卸载干净,

    不然出现版本冲突会很麻烦。

    for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
    
    • 设置docker软件源
      # Add Docker's official GPG key:
      sudo apt-get update
      sudo apt-get install ca-certificates curl
      sudo install -m 0755 -d /etc/apt/keyrings
      sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
      sudo chmod a+r /etc/apt/keyrings/docker.asc
      # Add the repository to Apt sources:
      echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
        $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
        sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      sudo apt-get update
      

      2.2.2 报错bug

      本人在安装docker Engine的时候,需要执行下面这个命令来下载Docker的GPG公钥

      OpenSSL Error messages: error:0A000126:SSL routines::unexpected eof while reading
      curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to download.docker.com:443
      curl: (28) Failed to connect to download.docker.com port 443 after 134672 ms: Couldn't connect to server
      

      这几个输出不同是期间尝试重新安装curl,以及设置不同的代理导致的。

      • 添加Docker官方GPG密钥执行以下命令来添加Docker官方的GPG密钥:
        curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
        
        • 添加Docker软件源执行以下命令来添加Docker的软件源:
          sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
          
          • 安装最新版

            执行下面明令安装就OK

            sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
            
            • 查看Docker版本:
              docker --version
              sudo docker version
              

              2.2.3运行docker

              可以通过启动docker来验证我们是否成功安装。命令如下:

              systemctl start docker
              #安装工具 
              apt-get -y install apt-transport-https ca-certificates curl software-properties-common
              #重启docker
              service docker restart
              
              • 验证
                sudo docker run hello-world
                

                以上命令下载测试镜像,并生成容器。 当容器运行时,它会成功打印消息并退出,表明安装OK,bash终端打印信息如下:

                root@DESKTOP-UDK350B:~# sudo docker run hello-world
                Hello from Docker!
                This message shows that your installation appears to be working correctly.
                To generate this message, Docker took the following steps:
                 1. The Docker client contacted the Docker daemon.
                 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
                    (amd64)
                 3. The Docker daemon created a new container from that image which runs the
                    executable that produces the output you are currently reading.
                 4. The Docker daemon streamed that output to the Docker client, which sent it
                    to your terminal.
                To try something more ambitious, you can run an Ubuntu container with:
                 $ docker run -it ubuntu bash
                Share images, automate workflows, and more with a free Docker ID:
                 https://hub.docker.com/
                For more examples and ideas, visit:
                 https://docs.docker.com/get-started/
                

                2.2 Run Milvus with Docker Compose(new)

                wget https://github.com/milvus-io/milvus/releases/download/v2.4.5/milvus-standalone-docker-compose.yml -O docker-compose.yml
                #安装完docker 这里镜像源需要修改
                sudo docker compose up -d
                Creating milvus-etcd  ... done
                Creating milvus-minio ... done
                Creating milvus-standalone ... done
                

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

                • bug network milvus was found but has incorrect label com.docker.compose.network set to “milvus”

                  使用docker network ls列出所有网络,然后你会找到一个名为milvus的网络,使用docker network rm milvus删除milvus网络。再次运行docker compose up就可以了。

                  docker network ls
                  docker network rm milvus
                  

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

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

                  • 用以下命令检查容器是否启动并运行:
                    NAME                IMAGE                                      COMMAND                  SERVICE      CREATED          STATUS                             PORTS
                    milvus-etcd         quay.io/coreos/etcd:v3.5.5                 "etcd -advertise-cli…"   etcd         26 seconds ago   Up 25 seconds (health: starting)   2379-2380/tcp
                    milvus-minio        minio/minio:RELEASE.2023-03-20T20-16-18Z   "/usr/bin/docker-ent…"   minio        26 seconds ago   Up 25 seconds (health: starting)   0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp
                    milvus-standalone   milvusdb/milvus:v2.4.5                     "/tini -- milvus run…"   standalone   26 seconds ago   Up 25 seconds (health: starting)   0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp
                    
                    • 停止并删除该容器,如下所示
                      sudo docker compose down
                      sudo rm -rf volumes
                      

                      Docker Hub 镜像加速器

                      链接:https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6

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

                      • 创建或修改 /etc/docker/daemon.json:
                        sudo mkdir -p /etc/docker
                        sudo tee /etc/docker/daemon.json 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]