news 2026/8/31 11:12:56

milvus数据库简介和连接操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
milvus数据库简介和连接操作

1、Milvus 概述

向量是神经网络模型的输出数据格式,可以有效地对信息进行编码,在知识库、语义搜索、检索增强生成(RAG)等人工智能应用中发挥着举足轻重的作用。Milvus 是一个开源的向量数据库,适合各种规模的人工智能应用。Milvus 是一种高性能、高扩展性的向量数据库,可在从笔记本电脑到大规模分布式系统等各种环境中高效运行。它既可以开源软件的形式提供,也可以云服务的形式提供

2、Embeddings 和 Milvus

文本、图像和音频等非结构化数据格式各异,并带有丰富的底层语义,因此分析起来极具挑战性。为了处理这种复杂性,Embeddings 被用来将非结构化数据转换成能够捕捉其基本特征的数字向量。然后将这些向量存储在向量数据库中,从而实现快速、可扩展的搜索和分析。Milvus 提供强大的数据建模功能,使您能够将非结构化或多模式数据组织成结构化的 Collections。它支持多种数据类型,适用于不同的属性模型,包括常见的数字和字符类型、各种向量类型、数组、集合和 JSON,为您节省了维护多个数据库系统的精力。

3、Milvus的三种部署模式

Milvus 提供三种部署模式,涵盖各种数据规模--从本地原型到管理数百亿向量的大规模 Kubernetes 集群,此专栏只讲述前两种模式,图片为3种模式对于不同数据的应用:

  • Milvus Lite 是一个 Python 库,可以轻松集成到您的应用程序中。作为 Milvus 的轻量级版本,它非常适合在 开发环境 中进行快速原型开发,或在资源有限的边缘设备上运行。
  • Milvus Standalone 是单机服务器部署,所有组件都捆绑在一个 Docker 镜像中,方便部署。
  • Milvus Distributed 可部署在 Kubernetes 集群上,采用云原生架构,专为十亿规模甚至更大的场景而设计。该架构可确保关键组件的冗余。

4、Milvus Lite

Milvus Lite是一个 Python 库,可导入到您的应用程序中。作为 Milvus 的轻量级版本,它非常适合在 Jupyter 笔记本或资源有限的智能设备上运行快速原型。Milvus Lite 支持与 Milvus 其他部署相同的 API。与 Milvus Lite 交互的客户端代码也能与其他部署模式下的 Milvus 实例协同工作。

由于milvus-lite已包含在pymilvus2.4.2或更高版本中,因此可通过pip install-U强制更新到最新版本,milvus-lite会自动安装。

要将 Milvus Lite 集成到应用程序中,请运行pip install pymilvus进行安装,并使用MilvusClient("./demo.db") 语句实例化一个带有本地文件的向量数据库,以持久化所有数据。

ps:windows不支持,可以租借Linux服务器,在服务器上安装,请在python需要环境下进行安装。

Milvus Lite 目前支持以下环境:

  • Ubuntu >= 20.04(x86_64 和 arm64)
  • MacOS >= 11.0(苹果硅 M1/M2 和 x86_64)

1、安装

2、代码测试

# 导入必要的库 from pymilvus import MilvusClient # Milvus 客户端,用于操作嵌入式向量数据库 import numpy as np # NumPy 库,用于生成随机数和处理数组 # 初始化 Milvus 客户端 # 参数 "./milvus_demo.db" 指定了本地数据库文件的路径 client = MilvusClient("./milvus_demo.db") # 创建集合(Collection) # 集合类似于关系型数据库中的表,用于存储向量和其他字段 client.create_collection( collection_name="demo_collection", # 集合名称为 "demo_collection" dimension=384 # 向量的维度为 384,表示每个向量是一个长度为 384 的浮点数数组 ) # 准备数据:文档、向量和其他字段 docs = [ "Artificial intelligence was founded as an academic discipline in 1956.", # 文档 1 "Alan Turing was the first person to conduct substantial research in AI.", # 文档 2 "Born in Maida Vale, London, Turing was raised in southern England.", # 文档 3 ] # 为每段文本生成一个随机的 384 维向量 # 使用 NumPy 的 `np.random.uniform` 生成范围在 -1 到 1 之间的随机数 vectors = [[np.random.uniform(-1, 1) for _ in range(384)] for _ in range(len(docs))] # 将文档、向量、ID 和主题打包成字典格式 # 每个字典包含以下字段: # - id: 唯一标识符 # - vector: 向量数据 # - text: 文本内容 # - subject: 主题标签(这里是 "history") data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors)) ] # 将数据插入到集合中 res = client.insert( collection_name="demo_collection", # 指定目标集合 data=data # 要插入的数据列表 ) # 输出插入结果(通常返回成功状态或插入的记录数) print("Insert result:", res) # 执行相似性搜索 # 在集合中查找与查询向量最相似的记录 res = client.search( collection_name="demo_collection", # 指定目标集合 data=[vectors[0]], # 查询向量(这里使用了第一个文档的向量) filter="subject == 'history'", # 筛选条件:只返回主题为 "history" 的记录 limit=2, # 返回的最大结果数量(这里是 2 条) output_fields=["text", "subject"], # 指定返回的字段(这里返回 "text" 和 "subject") ) # 输出搜索结果 print("Search result:", res) # 执行查询操作 # 根据条件筛选记录(类似于 SQL 查询) res = client.query( collection_name="demo_collection", # 指定目标集合 filter="subject == 'history'", # 筛选条件:只返回主题为 "history" 的记录 output_fields=["text", "subject"], # 指定返回的字段(这里返回 "text" 和 "subject") ) # 输出查询结果 print("Query result:", res) # 删除记录 # 根据条件删除记录 res = client.delete( collection_name="demo_collection", # 指定目标集合 filter="subject == 'history'", # 删除条件:删除主题为 "history" 的记录 ) # 输出删除结果 print("Delete result:", res)

5、Milvus 单机版

Milvus Standalone 是单机服务器部署。Milvus Standalone 的所有组件都打包到一个Docker 镜像中,部署起来非常方便。如果你有生产工作负载,但又不想使用 Kubernetes,那么在内存充足的单机上运行 Milvus Standalone 是一个不错的选择。此外,Milvus Standalone 通过主从复制支持高可用性,我使用的是华为云服务器,也可以使用优云智算,相对便宜些。

1、安装

安装docker

#安装必要支持 sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release # 配置 阿里源(推荐使用阿里的gpg KEY),不同厂商的加速器可能不同,有问题请联系厂商支持 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null #更新 源 sudo apt update sudo apt-get update #安装最新版本的Docker sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin #等待安装完成 #查看Docker版本 sudo docker version #查看Docker运行状态 sudo systemctl status docker

在 Docker 中安装 Milvus

Milvus 提供了一个安装脚本,可将其安装为 docker 容器。该脚本可在Milvus 存储库中找到。要在 Docker 中安装 Milvus,只需运行

# 下载官方提供的安装脚本 curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh # 安装Milvus 并且启动 bash standalone_embed.sh start # 停止Milvus服务 bash standalone_embed.sh stop # 删除Milvus的所有容器 bash standalone_embed.sh delete

2、代码测试

Milvus有两个端口:9091,19530;9091对应WebUI的端口,运行Milvus后打开9091,打开http://127.0.0.1:9091/webui/,就可以打开其Web界面,如下图;19530是数据库的连接端口,XXXX为你的服务器外网IP地址

client = MilvusClient(uri="http://XXXX:19530"

测试代码:

from pymilvus import MilvusClient import numpy as np client=MilvusClient(uri='xxxx') client.drop_collection(collection_name='xxxx') client.create_collection( collection_name='xxxx', dimension=384 ) docs=[ "Artificial intelligence was founded as an academic discipline in 1956.", # 文档 1 "Alan Turing was the first person to conduct substantial research in AI.", # 文档 2 "Born in Maida Vale, London, Turing was raised in southern England.", # 文档 3 ] vectors=[[np.random.uniform(-1,1) for _ in range(384)] for _ in range(len(docs))] data=[ {"id":i,"vector":vectors[i],"text":docs[i],"subject":"history"} for i in range(len(docs)) ] client.insert( collection_name='xxxx', data=data ) # client.release_collection(collection_name='demo_collection') # Milvus 会将索引文件和所有字段的原始数据加载到内存中,以便快速响应搜索和查询。 # client.load_collection(collection_name='demo_collection') res=client.search( collection_name='xxxx', data=vectors[0], filter="subject == 'history'", limit=2, output_fields=['text','subject'] ) print("search result:",res)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 11:12:32

MySQL子句的庖丁解牛

MySQL 的查询语句(SELECT)并非简单的“命令列表”,而是一条精密的数据流水线。每一个子句(Clause)都是流水线上的一个加工站,数据流经它们时,会被过滤、分组、聚合、排序和裁剪。 理解这些子句的…

作者头像 李华
网站建设 2026/8/27 4:19:56

矽塔科技 SA2626L 1.5-7.5V/2.6A 双通道 H 桥电机驱动器 SOP16 技术解析

在电子门锁、机器人以及快消品等需要较高功率驱动的应用中,需要一款能在宽电压范围内提供强大电流的双通道电机驱动器。SA2626L 是一款专为双通道直流电机或单步进电机设计的 H 桥驱动芯片,采用 SOP16 封装,工作电压为 1.5V 至 7.5V&#xff…

作者头像 李华
网站建设 2026/8/26 22:02:39

python 获取音频采样率

采样率: 22050 Hz 声道数: 1 时长: 6.04 秒 格式: WAV 子类型: FLOATimport soundfile as sfdef get_audio_info_soundfile(audio_path):try:info sf.info(audio_path)print(f"采样率: {info.samplerate} Hz")print(f"声道数: {info.channels}")print(f&q…

作者头像 李华
网站建设 2026/8/26 15:30:38

【开题答辩全过程】以 衡水微法院小程序的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/8/31 3:51:13

GitHub功能全解析:开发者的宝藏平台

GitHub作为全球知名的代码托管平台,提供了丰富多样的功能与解决方案。涵盖AI代码创作、开发者工作流、应用程序安全等多领域,满足不同规模公司、用例和行业的需求。AI代码创作利器GitHub在AI代码创作方面表现出色,拥有Copilot、Spark、Models…

作者头像 李华