3.milvus索引-HNSW

索引作用

加速大型数据集上的查询。

向量字段,仅只能创建一个索引。

milvus支持的向量索引类型大部分使用 近似最近邻搜索算法。ANNS该算法的核心不局限于返回最准确的结果,而是仅搜索目标的邻居。ANNS通过在可接受的范围内牺牲准确性提高检索效率。

比方,有一百条数据,其中有90条数据是满足条件的,使用ANNS可能只会返回89条数据。如果想准确返回90条数据,就需要采用暴力搜索。

milvus索引分类

内存索引,因为是在内存中所以加载速度更快。

磁盘索引

根据实现方式分类,ANNS向量索引可以分为4类:

1.基于树的索引,比如mysql中的索引是基于B+树。

2.基于图的索引

3.基于哈希的索引

4.基于量化的索引

根据数据类型,支持两种类型的索引:

  • floating-point embeddings 浮点类型,常用的索引

SCANN、IVF_FLAT、IVF_PQ、IVF_SQ8、FLAT、HNSW(效率比较高的索引算法)、ANNOY、AUTOINDEX、DISKANN

  • binary embeddings

BIN_FLAT、BIN_IVF_FLAT

**注意:**删掉索引前,需要现将Collection从内存中release卸载释放掉。

使用attu图形化工具,创建一个HNSW类型的索引

使用代码创建一个HNSW类型的索引

python 复制代码
from pymilvus import (
    connections,
    Collection,
)

collection_name = "first_milvus"
host = "192.168.171.130"
port = 19530
username = ""
password = ""

connections.connect("default", host=host, port=port, user=username, password=password)
coll = Collection(collection_name, consistency_level="Bounded", shards_num=1)

index_params = {
    "index_type": "HNSW",
    "metric_type": "L2",
    "params": {
        "M": 16,
        "efConstruction": 60
    }
}
coll.create_index(
  field_name="embeddings",
  index_params=index_params,
  index_name="idx_em"
)
print("done")
相关推荐
ai大师6 小时前
如何在LangChain中构建并使用自定义向量数据库
langchain·claude·向量数据库·中转api·apikey·中转apikey·免费apikey
码观天工10 小时前
.NET 原生驾驭 AI 新基建实战系列(四):Qdrant ── 实时高效的向量搜索利器
c#·.net·向量数据库·qdrant
风路丞1 天前
windows使用docker-desktop安装milvus和可视化工具attu
docker·容器·milvus
樽酒ﻬق7 天前
打造AI应用基础设施:Milvus向量数据库部署与运维
数据库·人工智能·milvus
码观天工7 天前
.NET 原生驾驭 AI 新基建实战系列(三):Chroma ── 轻松构建智能应用的向量数据库
ai·c#·.net·向量数据库
helloworld工程师9 天前
Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(超详细)
人工智能·spring·milvus
码观天工14 天前
.NET 原生驾驭 AI 新基建实战系列(二):Semantic Kernel 整合对向量数据库的统一支持
ai·.net·向量数据库·semantic kernel
三月七(爱看动漫的程序员)16 天前
LLM面试题六
数据库·人工智能·gpt·语言模型·自然语言处理·llama·milvus
ejinxian17 天前
大模型应用初学指南
人工智能·大模型·向量数据库
ghostwritten18 天前
Run Milvus in Kubernetes with Milvus Operator
容器·kubernetes·milvus