Milvus向量数据库和Milvus向量数据库命令行工具:milvus-cli

在当今的大数据时代,数据库作为数据的存储和管理中心,发挥着越来越重要的作用。而向量数据库作为一种新兴的数据库类型,因其独特的向量索引和向量计算能力,被广泛应用于推荐系统、图像识别自然语言处理等领域。Milvus作为一款开源的向量数据库,以其高性能、可扩展和易用的特点,受到了广泛的关注和应用。

为了更好地管理和应用Milvus向量数据库,我们推出了一款名为Milvus_cli的命令行工具。Milvus_cli是一款便捷的数据库客户端,支持数据库连接、数据导入和导出、向量间距离计算等功能,可以通过交互式命令行提示符方便地执行各种命令。下面,我们将详细介绍Milvus_cli的安装和使用方法。

一、安装方法

Milvus_cli支持在线安装和离线安装两种方式。在线安装只需要使用Python包管理器pip,执行以下命令即可:

python -m pip uninstall pyreadline -y

python -m pip install pyreadline3

如果是 Python 是 3.x 版本:会报错:

第二步:如果仍然报错,手动修改源码(终极解决办法)

如果安装 pyreadline3 后依然提示 No module named 'readline',我们可以直接修改 milvus_cli 的源码,让它跳过对 readline 的依赖(这只会导致命令行失去"按上下键翻历史命令"的功能,但完全不影响连接和操作 Milvus)。

  1. 根据报错信息,打开这个文件:

    D:\installsoft\python\Lib\site-packages\milvus_cli\utils.py

  2. 找到第 1 行的代码:

    复制代码
    import readline
  3. 将其修改为以下代码(用 try-except 包裹,使其变成可选依赖)

    复制代码
    try:
        import readline
    except ImportError:
        pass
  4. 保存文件,然后再次运行 milvus_cli

使用 pip 安装 Milvus Lite (轻量级)

Milvus Lite 是一个轻量级版本,可以直接作为 Python 库运行,无需 Docker。

  1. 环境准备

    • 安装 Python 3.7 或更高版本。

    • (推荐)创建并激活一个 Conda 虚拟环境。

  2. 安装 Milvus Lite

    • 在命令行中执行以下命令安装核心库:

      bash

      复制代码
      pip install milvus

      或一并安装 PyMilvus 客户端:

      bash

      复制代码
      pip install pymilvus milvus

接着启动:

接着我们去创建一个Collection

复制代码
        try {
            // id - primary key
            FieldType fieldId = FieldType.newBuilder()
                    .withName("id")
                    .withDataType(DataType.Int64)
                    .withPrimaryKey(true)
                    .build();

            // message - original text content
            FieldType fieldMessage = FieldType.newBuilder()
                    .withName("message")
                    .withDataType(DataType.VarChar)
                    .withMaxLength(65535)
                    .build();

            // session_id - for grouping chat history
            FieldType fieldSessionId = FieldType.newBuilder()
                    .withName("session_id")
                    .withDataType(DataType.VarChar)
                    .withMaxLength(128)
                    .build();

            // role - user or assistant
            FieldType fieldRole = FieldType.newBuilder()
                    .withName("role")
                    .withDataType(DataType.VarChar)
                    .withMaxLength(32)
                    .build();

            // timestamp - for ordering
            FieldType fieldTimestamp = FieldType.newBuilder()
                    .withName("timestamp")
                    .withDataType(DataType.Int64)
                    .build();

            // vector - embedding of the message (for similarity search)
            FieldType fieldVector = FieldType.newBuilder()
                    .withName("vector")
                    .withDataType(DataType.FloatVector)
                    .withDimension(EMBEDDING_DIMENSION)
                    .build();

            List<FieldType> fieldTypes = Arrays.asList(fieldId, fieldMessage, fieldSessionId, fieldRole, fieldTimestamp, fieldVector);

            CreateCollectionParam createCollectionParam = CreateCollectionParam.newBuilder()
                    .withCollectionName(collectionName)
                    .withDescription("Chat history with embeddings")
                    .withFieldTypes(fieldTypes)
                    .build();

            milvusClient.createCollection(createCollectionParam);
            log.info("Collection created: {}", collectionName);

            // Create index BEFORE loading collection
            try {
                milvusClient.createIndex(io.milvus.param.index.CreateIndexParam.newBuilder()
                        .withCollectionName(collectionName)
                        .withFieldName("vector")
                        .withIndexType(io.milvus.param.IndexType.FLAT)
                        .withMetricType(io.milvus.param.MetricType.L2)
                        .build());
                log.info("Vector index created");
            } catch (Exception e) {
                log.warn("Index creation warning (may be ok): {}", e.getMessage());
            }

            milvusClient.loadCollection(LoadCollectionParam.newBuilder()
                    .withCollectionName(collectionName)
                    .build());
            log.info("Collection loaded: {}", collectionName);

        } catch (Exception e) {
            log.debug("Collection creation skipped (may already exist): {}", e.getMessage());
        }

这个是我们用milvus_cli来查一下: connect -uri http://localhost:19530

通过多轮对话写入,这个大家可哟通过python llm写入,也可以使用主流框架写入:

这个是我我们再来查一下:

我只查了id,message字段,如果要查更多的字段,可以指定:

Milvus_cli作为一款全平台可用的数据库客户端,为Milvus向量数据库的管理和应用提供了便捷的工具。通过本文的介绍和实例演示,相信读者已经对Milvus_cli有了更加深入的了解。希望读者能够充分发挥Milvus_cli的优势,提升数据库管理和应用的效率。

相关推荐
是三一seven5 小时前
Sql注入基础
数据库·安全·网络安全
Sirens.6 小时前
MySQL表设计进阶-约束范式连接索引与事务
android·数据库·mysql
字节跳动开源7 小时前
火山引擎开源 Agent 驱动的搜索自迭代技术
数据库·开源·agent
Oo大司命oO9 小时前
藏在正则表达式里的陷阱
数据库·mysql·正则表达式
_oP_i10 小时前
mysql统计数据库使用存储大小
数据库
会编程的土豆10 小时前
MySQL 入门:库、表、行、主键是什么
linux·数据库·网络协议·http
jjjava2.010 小时前
系统日志:从入门到精通的完整指南
网络·数据库
写代码的强哥11 小时前
云原生数据库与传统数据库相比“新”在哪里
数据库·云原生·架构
吴声子夜歌12 小时前
MongoDB 4.2——查询
数据库·mongodb