惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - mabiao008

CQRS 错误码code是int类型好还是String类型好 idea2025版本破解 pgsql切换当前会话的模式 java程序中增加mongodb的联合索引 文档启动脚本报错:-bash: ./app.sh: /bin/bash^M: bad interpreter: No such file or directory pandoc使用 idea把unicode转为中文 idea 插件分享 java项目处理OFD文件 java项目无法读取resources目录下的文件 三种数据对象的区别 Linux环境aspose插件word转pdf中文乱码解决方案 java List报错Method threw ‘java.lang.UnsupportedOperationException‘ exception. 解决 java字段值为null,转json后不存在该字段对应的key 格式化json大文件 springboot项目启动报错Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun. com.alibaba.excel.exception.ExcelGenerateException: Can not close IO linux的TCP端口问题 关于linux端口号 linux下生成pdf文件名遇到问题 把页面查询到的数据导出PDF文件(html中的在线表单下载为pdf文件)
Milvus索引
mabiao008 · 2025-02-14 · via 博客园 - mabiao008

一、支持的检索算法及差异

1. FLAT(暴力检索)

  • 原理:直接加载原始向量数据,逐一遍历计算距离,属于精确搜索。
  • 特点:
    • 无需构建索引,检索精度100%。
    • 计算开销大,适合小规模数据集(如百万级以下)。
  • 适用场景:对精度要求极高且数据量较小的场景,如测试验证、小规模实时搜索。

2. IVF(倒排文件索引)

  • 原理:通过聚类(如K-means)将向量划分为多个簇(分桶),检索时仅搜索最近邻的若干簇。
  • 变种:
    • IVF_FLAT:不压缩数据,平衡查询速度与召回率,通过nprobe参数调整搜索的簇数量。
    • IVF_SQ8:标量量化压缩向量(4字节浮点转为1字节整型),内存占用降至1/4,适合内存敏感场景。
    • IVF_PQ:乘积量化(PQ)进一步压缩数据,牺牲部分精度换取更高存储效率,适合超大规模数据。
  • 特点:查询速度与召回率可通过nprobe灵活调控,适合中等至大规模数据集。

3. HNSW(分层可导航小世界图)

  • 原理:构建多层图结构,高层稀疏连接,底层密集连接,通过逐层导航加速搜索。
  • 特点:
    • 支持高维向量(如万维以上),查询速度与精度均较高。
    • 内存占用较大,适合高精度、低延迟场景。
  • 适用场景:图像检索、语义搜索等高维数据场景。

4. ANNOY(近似最近邻随机森林)

  • 原理:通过构建多棵随机树分割向量空间,树间独立搜索后合并结果。
  • 特点:
    • 内存占用低,适合资源受限的中等规模数据集。
    • 召回率受树的数量(n_trees)和搜索深度影响。
  • 适用场景:内存敏感的中等规模检索(如千万级以下)。

5. DISKANN(基于磁盘的索引)

  • 原理:将索引存储在磁盘上,结合内存缓存热点数据,支持超大规模向量检索。
  • 特点:
    • 存储成本低,适合百亿级以上数据。
    • 查询速度略低于内存索引,但扩展性强。
  • 适用场景:内存不足的超大规模数据场景(如互联网级推荐系统)。

二、算法选择的关键因素

1. 数据规模

  • 小数据(<100万):优先选择FLAT(精确搜索)或HNSW(高精度)。
  • 中等数据(百万级):IVF系列(灵活调控速度与精度)或ANNOY(内存优化)。
  • 超大数据(亿级以上):DISKANN(磁盘存储)或IVF_PQ(压缩优化)。

2. 向量维度

  • 低维(<100):IVF、HNSW均适用。
  • 高维(>1000):HNSW(图结构抗高维性能好)或ANNOY(树结构分割空间)。

3. 精度与速度的权衡

  • 高精度优先:HNSW、FLAT。
  • 速度优先:IVF(调整nprobe)、ANNOY(减少树的数量)。

4. 硬件资源

  • GPU支持:IVF_SQ8H可将分桶搜索卸载到GPU,加速计算。
  • 内存限制:ANNOY、DISKANN适合内存受限场景。

5. 应用场景

  • 实时搜索(低延迟):HNSW、IVF_FLAT。
  • 混合检索(向量+文本):Milvus 2.5+支持结合BM25关键词搜索与向量检索的混合模式,适用于RAG等复杂场景。

三、总结建议

  • 推荐组合:
    • 通用场景:HNSW(平衡速度与精度)或IVF_FLAT(参数易调控)。
    • 资源敏感场景:ANNOY(低内存)、DISKANN(超大磁盘存储)。
    • 混合检索需求:启用Milvus 2.5+的混合检索功能,结合BM25与向量算法。

通过灵活结合数据规模、硬件资源和业务需求,可最大化Milvus的检索性能。具体参数调优(如nprobeefConstruction等)需结合实际测试数据进一步优化。

posted @ 2025-02-14 09:52  mabiao008  阅读(813)  评论()    收藏  举报