Milvus检索数据库安装和使用(一)

Milvus基本概念(类比mysql等关系数据库):

	数据库: default
	表:     collection
	表结构:  CollectionSchema
	一条数据: entitie

如需安装Milvus,见下面第二点

1 python 操作Milvus

1.1 Milvus 连接

  • 安装pymilvus包
    pip install PyMilvus==2.2.11
  • 连接milvus数据库,选择数据库名称(默认default),输入ip和端口
from pymilvus import (
    connections,
    utility,
    FieldSchema,
    CollectionSchema,
    DataType,
    Collection,
)
# 使用默认数据库 ‘default’,也可以自己建数据库
connections.connect("default", host="localhost", port="19530")

1.2 创建集合(数据库中的表)

创建Collection(表),需要先定义好表结构(即filelds)
①下面代码先建一个表结构,再封装为一个schema
② 再使用Collection建一个名为”hello_milvus“的集合表

fields = [
    FieldSchema(name="pk", dtype=DataType.INT64, is_primary=True, auto_id=False),
    FieldSchema(name="random", dtype=DataType.DOUBLE),
    FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=8)
]
schema = CollectionSchema(fields, "hello_milvus is the simplest demo to introduce the APIs")
hello_milvus = Collection("hello_milvus", schema)

1.3 数据插入

下面的entities 就一条数据,与上面的表结构相对应。
若上面表结构设置

import random
entities = [
    [i for i in range(3000)],  # field pk
    [float(random.randrange(-20, -10)) for _ in range(3000)],  # field random
    [[random.random() for _ in range(8)] for _ in range(3000)],  # field embeddings
]
insert_result = hello_milvus.insert(entities)
hello_milvus.flush()  

1.4 构建索引

只有使用索引,向量检索时才快,不然会使用暴力搜索方式。
索引选择可以参考 https://milvus.io/docs/index.md

index = {
    "index_type": "IVF_FLAT",
    "metric_type": "L2",
    "params": {"nlist": 128},
}
hello_milvus.create_index("embeddings", index)

1.5 向量检索

  • 普通查找
    直接在collection全量向量中进行查找Top3
hello_milvus.load()
vectors_to_search =[[random.random() for _ in range(8)]]
search_params = {
    "metric_type": "L2",
    "params": {"nprobe": 10},
}
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, output_fields=["random"])

  • 带条件查找
    如下查找指定条件下的向量,如下代码为在random值大于-12的向量中进行检索查找Top3.
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, expr="random > -12", output_fields=["random"])

  • 查找结果分析
for hits in result:
    for hit in hits:
        print(f"hit: {hit}, random field: {hit.entity.get('random')}")
hit: (distance: 0.07080483436584473, id: 2060), random field: -12.0
hit: (distance: 0.0729561522603035, id: 1647), random field: 15.0
hit: (distance: 0.08006095886230469, id: 2530), random field: -15.0
search latency = 0.0080s

1.6 删除指定entities 数据

若需要删除表中数据,可以指定删除条件,
下面代码表示删除第一个,和第二个数据

expr = f"pk in [{entities[0]}, {entities[1]}]"
hello_milvus.delete(expr)

1.7 删掉数据库中表

如需要删除数据库中的表,使用以下命令:

utility.drop_collection("hello_milvus")

2 安装

使用docker安装standalone 模式Milvus集群

  • step1:下载docker 编排文件
wget https://github.com/milvus-io/milvus/releases/download/v2.2.11/milvus-standalone-docker-compose.yml -O docker-compose.yml
  • step2: 启动docker 文件(第一次会下载所需的docker镜像,比较慢)
 sudo docker-compose up -d
  • step3 :检查docker 容器是否启动,和启动的端口(默认是19530)
sudo docker-compose ps
docker port milvus-standalone 19530/tcp
  • step4: 停止Milvus 集群(可选)
sudo docker-compose down
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Azure Open AI Embedding是一种嵌入模型,通过使用Azure平台上的开放AI服务,可以将文本转换为高维向量表示。这种嵌入模型可以用于自然语言处理、推荐系统等领域,帮助我们更好地理解和处理文本数据。在使用Azure Open AI Embedding时,我们可以利用Azure的强大计算资源和高效的API接口,快速获取到所需的文本嵌入表示。 Milvus本地向量数据库是一种针对大规模向量数据的高性能数据库。它提供了快速的向量相似度搜索和存储功能,可以高效地应用于图像识别、人脸识别、文本检索等领域。在搭建Milvus本地向量数据库的单例安装使用时,我们可以通过简单的配置和管理,快速部署本地向量检索系统,并且能够自由定制化自己的向量索引。 对于私有模型的应用,可以将Azure Open AI Embedding模型和Milvus本地向量数据库结合起来。首先,可以使用Azure Open AI Embedding模型将文本数据转换为向量表示,然后将这些向量存储到Milvus本地向量数据库中进行索引和检索。这样可以实现自己的定制化文本嵌入表示和快速的向量相似度搜索。同时,我们也可以通过对Milvus本地向量数据库进行单例安装和私有化部署,更好地保护自己的数据和模型隐私。这样的集成和应用可以帮助我们更好地理解和处理大规模文本数据,并且能够高效地进行相似度搜索和检索

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值