Milvus 安装、设置权限和使用

server/2024/9/24 4:10:09/

中文文档
使用了docker compose 安装 standalone 版本,即单机docker。
pymilvus 一直在升级,一些函数有变化,中文文档有落后,建议看英文文档。

安装

#下载docker-compose.yml 文件
wget https://github.com/milvus-io/milvus/releases/download/v2.4.9/milvus-standalone-docker-compose.yml -O docker-compose.yml# minio端口如果不用可以注释掉#ports:#  - "9001:9001"#  - "9000:9000"#standalone 也就是milvus的映射端口,主机端口:容器内端口
#可以修改主机端口,防止冲突,容器内端口不可修改。ports:- "29530:19530"- "29091:9091"# 启动 Milvus
sudo docker compose up -d#关闭Milvus
sudo docker compose down

如果 docker compose 不能work,查看一下docker 版本,使用 docker-compose 也许可以。

设置权限 通过用户名和密码进行身份验证

在 配置 Milvus 时,将 milvus.yaml 中的 common.security.authorizationEnabled 设为 true 以启用身份验证

由于使用了docker,milvus.yaml文件在docker容器里。

#进入容器
sudo docker exec -it  Milvus容器ID  /bin/bash
#修改 milvus.yaml
sed -i 's/authorizationEnabled: false/authorizationEnabled: true/g'  configs/milvus.yaml
#退出容器,而不关闭容器
依次按 ctrl+p 和 ctrl+q 

默认用户名:root
默认密码: Milvus

from pymilvus import MilvusClient
#连接
client = MilvusClient(uri='http://localhost:29530', # replace with your own Milvus server addresstoken="root:Milvus"
) 
#修改密码
client.update_password(user_name="root",old_password="Milvus",new_password="P@ssw0rd123"
)
#创建新用户
client.create_user(user_name="user_1",password="P@ssw0rd",
)
client.describe_user("user_1")

基本使用

from pymilvus import MilvusClient,DataTypeclient = MilvusClient(uri="http://localhost:29530",token="用户名:密码")
coll_name = "test_zhishi"collecitons = client.list_collections()
print(collections)

创建collection

在我使用的这个版本的Milvus docker中,id是必须是有的,即使你不定义;而且 auto_id=False这个参数,设置为True也无效,所以插入数据的时候必须插入id,不然就会报错。 可以通过describe_collection查看schema。

if coll_name  not in collections:schema = MilvusClient.create_schema(auto_id=False,enable_dynamic_field=True,)schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)schema.add_field(field_name="vector", datatype=DataType.FLOAT_VECTOR, dim=1024)schema.add_field(field_name="text", datatype=DataType.VARCHAR)schema.add_field(field_name="subject", datatype=DataType.VARCHAR)index_params = client.prepare_index_params(field_name="vector",index_type="AUTOINDEX",metric_type="IP")client.create_collection(collection_name="test_zhishi",schema=schema,dimension=1024,index_params=index_params)

删除collection

status = client.drop_collection(collection_name=coll_name)
print(status)

查看collection

schema = client.describe_collection(collection_name=coll_name)
print(schema)

插入数据

data =[]
for i,doc in enumerate(docs[1:]):vector = predict_embedding(doc)data.append({'id':i,"vector":vector[0],"text":doc,"subject":"zhishi"})res = client.insert(collection_name=coll_name,data=data)
print(res)

查询数据

query = ["明天天气怎么样"]
query_embedding = predict_embedding(query)
res = client.search(collection_name=coll_name,data=query_embedding,limit=1,output_fields=['text','subject'])
print(res)

更新数据

res = client.upsert( collection_name=coll_name,  data=data)
print(res)

删除数据

res = client.delete( collection_name=coll_name, filter="id in [4,5,6]")
print(res)

http://www.ppmy.cn/server/105783.html

相关文章

GitHub每日最火火火项目(8.25)

项目名称:goauthentik / authentik 项目介绍:authentik 是一个满足认证需求的工具,它就像是认证过程中的强力粘合剂。在各种复杂的系统环境和对安全性有高要求的应用场景中,它都能发挥重要作用。通过 authentik,可以实…

iLogtail 开源两周年:感恩遇见,畅想未来

早在上世纪 60 年代,早期的计算机(例如 ENIAC 和 IBM 的大型机)在操作过程中会输出一些基本的状态信息和错误报告,这些记录通常通过打印机输出到纸带或纸卡上,用于跟踪操作流程和调试,最早期的日志系统借此…

DOM的概念及作用

一、什么是 DOM(Document Object Model,文档对象模型) DOM 可以理解为一种将 HTML、XML 和 XHTML 等文档结构化为一个由节点组成的树形结构的模型。它将网页文档表示为一个对象的集合,每个对象代表文档中的一个元素、属性或文本内…

分析Facebook在区块链技术中的应用与前景

随着数字技术的飞速发展,区块链作为一种具有去中心化、安全性高、透明度强等特点的技术,逐渐引起了各大科技公司的关注。Facebook(现Meta)也不例外,其在区块链技术上的探索不仅显示了对未来技术趋势的敏锐洞察&#xf…

【openwrt-21.02】openwrt-21.02 T750 按键GPIO自动进入刷机模式功能实现

Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …

前端 uniapp 多端条件编译

条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。 使用方法 以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #ifndef 结尾。 #ifdef:if defined 仅在某平台存在#ifndef:…

TCP vs UDP:揭秘可靠性与效率之争

概述 今天我们开始主要讲解TCP的相关知识点。在之前讲解分层章节的时候,我们提到过一个重要观点。在网络层及以下几层,更多的是让主机与主机建立连接,也就是说你的电脑需要知道另一台电脑在哪里才能连接上它。然而,在网络中的通信…

智能开发工具GoLand v2024.2全新发布——更好地支持Go框架和语言

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议,通过一步撤消快速安全重构,智能代码完成,死代码检测和文档提示帮助所有 Go 开发人员,从新手到经验丰富的专业人士,创建快速、高效、和可靠的…