2.创建Collection、添加索引、加载内存、预览和搜索数据

news2025/3/26 4:57:14

milvus官方文档

milvus2.3.1的官方文档地址: https://milvus.io/docs/v2.3.x

使用attu创建collection

collection必须要有一个主键字段、向量字段

确保字段类型与索引类型兼容

字符串类型(VARCHAR)通常需要使用 Trie 索引,而不是 AutoIndex

使用代码连接milvus数据库,创建collection结构,并插入数据

import uuid

import numpy as np

from pymilvus import(
    connections,
    FieldSchema, CollectionSchema, DataType,
    Collection,
)

collection_name = "first_milvus"
host = "192.168.171.130"
port = 19530
username = ""
password = ""
num_entities, dim = 1000, 128
total_num = 3000


def generate_uuids(number_of_uuids):
    # uuid.uuid4() 产生随机数
    # str(uuid.uuid4()) 将随机数转成str
    # _ in range(number_of_uuids) 产生多少个_(占位符),存放随机数,组成一个list
    uuids = [str(uuid.uuid4()) for _ in range(number_of_uuids)]
    return uuids


print("start connecting to milvus")
connections.connect("default", host=host, port=port, user=username, password=password)

fields = [
    FieldSchema(name="pk", dtype=DataType.INT64, is_primary=True, auto_id=False),
    FieldSchema(name="random", dtype=DataType.DOUBLE),
    FieldSchema(name="comment", dtype=DataType.VARCHAR, max_length=200),
    FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=dim)
]

schema = CollectionSchema(fields, "first_milvus is the simplest demo to introduce the APIS")
coll = Collection(collection_name, schema, consistency_level="Bounded", shards_num=1)
# seed=19530 设置了随机数生成器的种子,确保每次运行代码时生成的随机数序列是相同的(可重复性)。
rng = np.random.default_rng(seed=19530)

# entities = [
#     [0, 1, 2],  # 实体 ID
#     [0.123, 0.456, 0.789],  # 随机属性
#     ['uuid1', 'uuid2', 'uuid3'],  # UUID
#     [[0.123, 0.456], [0.789, 0.012], [0.345, 0.678]],  # 特征向量
# ]

entities = [
    # 生成一个从 0 到 num_entities - 1 的整数列表
    [i for i in range(num_entities)],
    # 随机数生成器 rng 生成 num_entities 个随机浮点数,范围在 [0, 1) 之间
    # tolist() 将 NumPy 数组转换为 Python 列表
    # 如果 num_entities = 3,可能生成 [0.123, 0.456, 0.789]
    rng.random(num_entities).tolist(),
    # 生成一个包含 num_entities 个 UUID 字符串的列表, 列表可能用于为每个实体分配一个全局唯一的标识符
    generate_uuids(num_entities),
    # 使用随机数生成器 rng 生成一个形状为 (num_entities, dim) 的二维 NumPy 数组
    # num_entities表示二维数组中有几个数组,dim表示第二层数组里面有几个元素
    rng.random((num_entities, dim)),
]
insert_result = coll.insert(entities)
coll.flush()
print("done")


向量字段上创建索引

向量字段上创建索引才能load进内存。

如果数据量大的情况,创建索引的过程需要花费一定的时间。

索引加载到内存

将索引加载到内存中

预览查看数据

collection加载到内存之后,就可以预览和查看数据了。

向量搜索

向量字段就一个,可以自动判断是哪一个字段为向量字段

随机搜索:随机生成一个向量字段的值进行查询。

精确搜索:到预览数据界面找出一条数据,拷贝向量字段的值进行查询。

可以看出pk为3的记录匹配度最高。

score=0表示完全匹配的数据。

总结:milvus中所有的搜索和查询都在内存中执行,所以只有加载的Collection才可以被搜索,要加载到内存需要给向量字段创建索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2320777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AIGC 新势力:探秘海螺 AI 与蓝耘 MaaS 平台的协同创新之旅

探秘海螺AI:多模态架构下的认知智能新引擎 在人工智能持续进阶的进程中,海螺AI作为一款前沿的多功能AI工具,正凭借其独特的多模态架构崭露头角。它由上海稀宇科技有限公司(MiniMax)精心打造,依托自研的万亿…

一文解读DeepSeek在法律商业仲裁细分行业的应用

引言 当AI闯入法律界:DeepSeek如何把商业仲裁变成“纠纷快车道” AI技术正在像水电煤一样渗透生活,随着DeepSeek的爆火出圈,全国各行各业都在如火如荼地接入DeepSeek,以期望利用DeepSeek的“超能力”来重塑各自行业的效能和格局&a…

快速入手-基于Django的主子表间操作mysql(五)

1、如果该表中存在外键,结合实际业务情况,那可以这么写: 2、针对特殊的字典类型,可以这么定义 3、获取元组中的字典值和子表中的value值方法 4、对应的前端页面写法

HTTPS协议—加密算法和中间攻击人的博弈

活动发起人小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧&#xff01…

【大模型理论篇】CogVLM:多模态预训练语言模型

1. 模型背景 前两天我们在《Skywork R1V: Pioneering Multimodal Reasoning with Chain-of-Thought》中介绍了将ViT与推理模型结合构造多模态推理模型的案例,其中提到了VLM的应用。追溯起来就是两篇前期工作:Vision LLM以及CogVLM。 今天准备回顾一下Cog…

AI知识补全(一):tokens是什么?

名人说:苔花如米小,也学牡丹开。——袁枚《苔》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、什么是Tokens?二、为什么Tokens如此重要?1.模型的输入输出限制2.…

【LC插件开发】基于Java实现FSRS(自由间隔重复调度算法)

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文讲解【LC插件开发】基于Java实现FSRS(自由间隔重复调度算法),期待与你一同探索、学习、进步,一起卷起来叭! 目录…

AI比人脑更强,因为被植入思维模型【17】万物联系思维模型

万物联系,万物,并不孤立。 定义 万物联系思维模型是一种强调世界上所有事物都相互关联、相互影响的思维方式。它认为任何事物都不是孤立存在的,而是与周围的环境、其他事物以及整个宇宙构成一个有机的整体。这种联系不仅包括直接的因果关系,还涵盖了间接的、潜在的、动态的…

【MySQL篇】复合查询

目录 前言: 1,多表查询 2,自连接 3,子查询 3.1,单行子查询 3.2,多行子查询 3.3,多列子查询 3.3,在from子句中使用子查询 4,合并查询 4.1,union …

unsloth微调QwQ32B(4bit)

unsloth微调QwQ32B(4bit) GPU: 3090 24G unsloth安装部署 pip 安装 pip install unsloth --index https://pypi.mirrors.usrc.edu.cn/simplesource /etc/network_turbopip install --force-reinstall --no-cache-dir --no-deps githttps://github.com/unslothai/unsloth.git​…

基于腾讯云大模型知识引擎×DeepSeek的高等职业学校单独招生二级学院考前咨询系统

1、主要思路 通过大模型知识引擎DeepSeek搭建高等职业学校单独招生二级学院考前咨询专有问答,使得专业老师能够更好的服务考试学生,有利于二级学院能够更好的进行考试宣传,招来优秀学子! 2、创作过程 2.1、本地部署大模型的缺陷…

【Linux】线程库

一、线程库管理 tid其实是一个地址 void* start(void* args) {const char* name (const char *)args;while(true){printf("我是新线程 %s ,我的地址:0x%lx\n",name,pthread_self());sleep(1);}return nullptr; }int main() {pthread_t tid…

物化视图详解:数据库性能优化的利器

物化视图(Materialized View)作为数据库性能优化的核心手段,通过预计算和存储查询结果,显著提升了复杂查询的效率。本文将深入剖析物化视图的工作原理、应用场景及最佳实践,帮助企业在合适的场景中充分发挥其性能优势。…

蓝桥杯备考-》单词接龙

很明显,这道题是可以用DFS来做的,我们直接暴力搜索,但是这里有很多点是我们需要注意的。 1.我们如何确定两个单词能接上? 比如touch和choose 应该合成为touchoose 就是这样两个单词,我们让一个指针指着第一个字符串…

计算机视觉yolov8模型应用-学习笔记

计算机视觉yolov8模型应用-学习笔记 YOLOv8是由Ultralytics公司在‌2023年1月10日‌发布的一款深度学习模型。它是YOLOv5的重大更新版本,支持图像分类、物体检测和实例分割任务。这一版本在发布前就受到了广泛关注,并在发布后迅速成为目标检测领域的热门…

【网络层协议】NAT技术内网穿透

IP地址数量限制 我们知道,IP地址(IPv4)是一个4字节32位的整数,那么一共只有2^32也就是接近43亿个IP地址,而TCP/IP协议栈规定,每台主机只能有一个IP地址,这就意味着,一共只有不到43亿…

深入理解 C++11 智能指针:独占、共享与弱引用的完美管理

文章目录 std::unique_ptr(独占式智能指针)std::shared_ptr(共享式智能指针)std::weak_ptr(弱引用智能指针)示例展示:智能指针的原理内存泄漏**什么是内存泄漏,内存泄漏的危害****如…

AI Agent开发大全第四课-提示语工程:从简单命令到AI对话的“魔法”公式

什么是提示语工程?一个让AI“听话”的秘密 如果你曾经尝试过用ChatGPT或者其他大语言模型完成任务,那么你一定遇到过这样的情况:明明你的问题是清晰的,但答案却离题万里;或者你认为自己提供的信息足够详尽,可结果还是不理想。问题出在哪?很多时候并不是因为AI不够聪明,…

大模型架构记录 【综述-文字版】

名词解释: Prompt :提示词,是一个非常关键的概念,它指的是用户输入的文本或指令,用于引导语言模型生成相应的回答或执行特定任务。 Prompt Engineering:(提示工程) 是一种通过设计…

【论文笔记】Transformer

Transformer 2017 年,谷歌团队提出 Transformer 结构,Transformer 首先应用在自然语言处理领域中的机器翻译任务上,Transformer 结构完全构建于注意力机制,完全丢弃递归和卷积的结构,这使得 Transformer 结构效率更高…