解决milvus向量库创建并且补充入向量数据后无法索引的问题

当我们创建好milvus向量库并且补充入向量数据后进行索引时发现了如下的错误:

<MilvusException: (code=65535, message=failed to search/query delegator 3 for channel by-dev-rootcoord-dml_1_450901731962528612v0: fail to Search, QueryNode ID=3, reason=worker(3) query failed: Assert "range_filter < radius" at /go/src/github.com/milvus-io/milvus/internal/core/src/common/RangeSearchHelper.cpp:125
=> range_filter must be less than radius for L2/HAMMING/JACCARD)>

进过一番排查,发现这是向量库没有创建索引导致的问题,那么我们该如何在创建向量库时同时将索引一起创建呢?

使用milvus的可视化插件attu便可查看索引创建的方法

 在建好的表中可以看到每个字段都有创建索引,我们点击一个字段进行查看

 索引名称我们根据规范填入“index_”加上你要创建索引的字段名,因为我是使用灵积的1536维进行的向量化,所以索引类型我这里选择的是IVF_FLAT,度量类型则是选择COSINE,nlist则是维度的选择。

选择完成配置后点击左下角查看代码,则可以弹出创建该索引的完整代码,我们放入自己封装的方法中即可。

当完成创建索引后我们会发现,刚刚建立的索引并未进行加载,而没有加载的索引时无法使用的,所以我们还需要一个加载索引的方法,在刚刚封装的方法中加入如下代码

collection.load(partition_name="index_" + field_name)

 即可完成加载,将代码整合后,我们便可以得到一个一件创建并加载索引的方法:

    def createIndex(self, collection_name, field_name):

        collection = Collection(name=collection_name)
        index_params = {
            "index_type": "IVF_FLAT",
            "metric_type": "COSINE",
            "params": {
                "nlist": 1536
            }
        }
        res = collection.create_index(
            field_name=field_name,
            index_params=index_params,
            index_name="index_" + field_name
        )
        collection.load(partition_name="index_" + field_name)

        return res

在其他方法(如建库后)中调用时传入表名与字段名即可!

### 如何配置 Systemd 服务实现开机自启 为了使服务能够在系统启动时自动运行,需要编辑或创建相应的 `systemd` 服务文件并启用该服务。 #### 创建或修改服务单元文件 服务定义通常位于 `/etc/systemd/system/` 或者 `/lib/systemd/system/` 下面的一个 `.service` 文件里。这个文件包含了关于如何启动、停止以及管理特定进程的信息[^1]。 例如,假设有一个名为 `demo-start.service` 的服务: ```ini [Unit] Description=Demo Start Service After=network.target [Service] ExecStart=/path/to/executable Restart=always [Install] WantedBy=multi-user.target ``` 上述配置说明这是一个描述为 "Demo Start Service" 的服务,在网络目标之后加载;其执行命令指向可执行程序的位置,并设置了总是重启策略;最后指定了当进多用户模式时希望由哪个目标来拉起此服务。 #### 启用服务以便于开机自启 一旦有了适当的服务单元文件后,则可以通过下面这条指令将其设为随系统引导而激活的状态: ```bash sudo systemctl enable demo-start.service ``` 这一步骤会在相应位置建立符号链接,从而确保每次计算机重新启动的时候都会尝试去启动指定的服务。 对于已经存在的服务可以使用相同的方法来进行操作前先检查当前状态: ```bash sudo systemctl is-enabled demo-start.service ``` 如果想要禁用某项已有的开机自启项目则应采用相反的操作方式即: ```bash sudo systemctl disable demo-start.service ``` #### 验证设置是否成功 完成以上步骤以后建议重启机器以确认一切正常工作。也可以不重启而是立即启动新添加的服务并通过如下命令查看它的实时日志输出和健康状况: ```bash sudo systemctl start demo-start.service sudo journalctl -u demo-start.service -f ``` 另外还可以通过查询具体某个服务的状态来进一步检验它的工作情况: ```bash sudo systemctl status demo-start.service ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值