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

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)
http://www.jsqmd.com/news/436483/

相关文章:

  • 2026年质量好的SQ无极绳绞车 品牌推荐:无极绳绞车梭车/无极绳绞车轮组/盘闸双速多用绞车长期合作厂家推荐 - 行业平台推荐
  • 基于multisim的四人数字式抢答器电路设计
  • Vercel推Agent Browser:让AI自己控制浏览器,比Playwright省93%上下文
  • 传统监控只喊「出事了」,这款AI运维工具直接甩你「根因+方案」|catpaw 实战全解
  • 从单点工具到智能流水线:企业级多智能体AI创建工作流架构实战
  • 什么是氛围编码?
  • 2026运维转型必看:OpenClaw让故障自愈率达90%,MTTR压缩至30分钟
  • 2026年热门的石墨挤塑板 厂家推荐:国标挤塑板/阻燃挤塑板可靠供应商推荐 - 行业平台推荐
  • 2026年热门的板材珍珠棉发泡机 公司推荐:全自动珍珠棉发泡机/水果网珍珠棉发泡机可靠供应商推荐 - 行业平台推荐
  • 研究 RTPEngine publish
  • ”氛围编码”在网络安全上会引入什么问题吗?
  • Java全栈开发面试实录:从基础到高阶的深度技术探讨
  • 构建AI Agent的知识更新机制:保持信息时效性
  • 电商全平台 API 接口|淘宝京东 1688 速卖通亚马逊数据采集
  • 突破传统多模态整合局限!MIT提出APOLLO框架,实现细胞共享与特异性信息明确分离
  • 2026年杭州品牌策划咨询公司推荐:家电品牌策划、大健康品牌策划、新消费品牌策划、食品品牌策划、B2B品牌策划、城市文旅品牌策划、电动车品牌策划、全品类品牌战略营销咨询服务优选 - 海棠依旧大
  • 2026年口碑好的冷库制冷压缩机 公司推荐:工业制冷压缩机/活塞式制冷压缩机口碑好的厂家推荐 - 行业平台推荐
  • Vue项目目录结构全解析
  • 车衣改色新潮流,2026这些门店引领风尚,汽车车衣/贴太阳膜/隐形车衣/太阳膜/贴车衣/车衣改色,车衣改色定制附近推荐 - 品牌推荐师
  • 2026Q1无锡十大财税机构推荐榜单(本土标杆与特色机构全盘点)工商注册+代理记账靠谱口碑推荐 - 品牌智鉴榜
  • 2026年比较好的特种纸 品牌推荐:特种纸印刷/特种纸印刷包装值得信赖的生产厂家 - 行业平台推荐
  • 基于proteus的LM331的频率电压变换电路
  • 2026年比较好的栏杆 工厂推荐:锌钢楼梯栏杆稳定供应商推荐 - 行业平台推荐
  • 2026年知名的泡棉 公司推荐:PE泡棉/EVA泡棉实力工厂怎么选 - 行业平台推荐
  • 2026沈北,给你推荐附近口碑好的汽车贴膜门店!改色膜/隐形车衣/玻璃膜/沈北车衣/汽车贴膜,汽车贴膜团队联系方式 - 品牌推荐师
  • AF 430 ConA,Alexa Fluor 430 ConA的四聚体结构:Ca²⁺/Mn²⁺依赖性糖结合活性研究
  • S195柴油机机体钻组合机床总体及夹具设计
  • 2026年靠谱的割草机 公司推荐:遥控割草机/座驾式割草机优质供应商推荐 - 行业平台推荐
  • 2026年热门的Q235钢材 品牌推荐:Cr12钢材/Cr12MoV钢材/45#光板钢材源头厂家推荐几家 - 行业平台推荐
  • 大数据场景下Eureka集群的容量规划与扩展策略