ANN 算法与向量库选型

共 59 题
#

1. HNSW 通过分层 Navigable Small World 图构建索引,适合高召回率与动态插入

A 分层图结构,支持高召回率与动态插入,但内存占用较大 ✓ 正确答案
B 只支持静态数据集
C 召回率无法保证
D 无需建图
#

2. IVF-PQ 通过倒排索引(IVF)+ 乘积量化(PQ)压缩向量,内存友好

A 无精度损失
B 只压缩不剪枝
C IVF 用聚类倒排剪枝,PQ 用子空间量化压缩向量,内存友好 ✓ 正确答案
D 内存占用极大
#

3. DiskANN 基于 Vamana 图,将索引存储在 SSD 而非内存

A 必须全量载入内存
B 基于 Vamana 图,索引存 SSD,通过分块读取突破内存限制 ✓ 正确答案
C 只适合小规模数据
D 无图结构
#

4. Faiss 提供 IndexFlatL2、IndexIVFPQ、IndexHNSWFlat 等多种索引类型

A Flat 精确但慢,IVFPQ 内存友好,HNSW 召回高、支持动态插入 ✓ 正确答案
B Flat 最快
C 所有索引都支持动态插入
D IVFPQ 精度无损
#

5. HNSW 参数 M(每层连接数)、efConstruction(建图候选集)、efSearch(查询候选集)如何影响召回率/QPS/内存的三角权衡?一般调参方向是什么?

A 增大 M 一定提升 QPS
B 增大 efSearch 提升召回但降 QPS,M 影响内存与建图,先定内存再调 efSearch ✓ 正确答案
C efConstruction 影响查询延迟
D 参数与召回率无关
#

6. 如何评测 ANN 召回率(recall@k,与暴力检索 ground truth 对比)?如何用 ANN-Benchmarks 在统一数据集上做算法横向对比(recall vs QPS 曲线)?

A recall@k 通过对比暴力检索 ground truth 计算,ANN-Benchmarks 用 recall-QPS 曲线横向对比 ✓ 正确答案
B recall 与暴力检索无关
C 只测单点不测曲线
D 无法横向对比算法
#

7. 标量过滤与向量检索融合的 pre-filtering 与 post-filtering 在召回率与延迟上有何差异?高选择度过滤为何应选 filtered-HNSW/ACORN 类方案?

A 高选择度过滤下 post-filtering 召回退化,应选 filtered-HNSW/ACORN 融合方案 ✓ 正确答案
B post-filtering 召回率最高
C pre-filtering 延迟最低
D 过滤与 ANN 无关
#

8. Faiss 提供 index_factory 字符串构造复杂索引

A 需手动逐层写代码
B 只能构造单一索引
C 不支持量化
D 用字符串(如 IVF4096,PQ32)快速组合构造复杂索引 ✓ 正确答案
#

9. 向量量化(乘积量化 PQ、标量量化 SQ、二值/RaBitQ)在精度损失与内存压缩上如何权衡?为何量化后常需全精度 rerank 补偿召回?

A 量化无损
B 量化越激进内存越省但召回越差,量化后常用全精度 rerank 补偿召回 ✓ 正确答案
C rerank 用量化距离
D 量化不压缩内存
#

10. Milvus 支持 IVF_FLAT、HNSW、DISKANN、AUTOINDEX 四类索引

A AUTOINDEX 固定用 Flat
B 只支持一种索引
C DISKANN 存内存
D 支持 IVF_FLAT/HNSW/DISKANN,AUTOINDEX 自动选择合适索引 ✓ 正确答案
#

11. Weaviate 通过 HNSW 索引默认参数调优

A 提供 maxConnections/efConstruction/ef 参数,默认值经调优,可按需调整 ✓ 正确答案
B 参数不可调
C 无默认参数
D 不支持标量过滤
#

12. Hybrid Search 在 ANN 之上叠加关键词/标量过滤

A 无法融合 BM25
B 只做向量检索
C 在 ANN 上叠加关键词检索与标量过滤,通过融合策略统一排序 ✓ 正确答案
D 忽略标量过滤
#

13. Milvus 2.x 通过 etcd + pulsar + object storage 实现存算分离

A 无对象存储
B 全量数据在内存
C etcd 存元数据、Pulsar 存日志、对象存储存数据,实现存算分离 ✓ 正确答案
D 组件不分离
#

14. Qdrant 基于 HNSW 实现向量检索,提供 payload 过滤与多向量字段

A 只支持单向量
B 基于 HNSW 检索,支持 payload 过滤与多向量字段 ✓ 正确答案
C 无过滤能力
D 用 Go 实现
#

15. pgvector 的索引实现(IVFFlat 与 HNSW)与 PostgreSQL 查询规划器如何协同?pgvector 0.7+ 的 iterative index scan 如何解决过滤后召回不足的问题?

A 0.7+ 在过滤+距离排序下迭代扩大扫描范围,补齐过滤后不足的召回结果 ✓ 正确答案
B 过滤后结果不足就报错
C 只支持顺序扫描
D 无索引协同
#

16. RAG(Retrieval-Augmented Generation)架构中向量数据库的角色,chunk 策略、embedding 模型选择、top-k 召回与 rerank 的端到端流程?

A chunk 不影响召回
B 向量库直接生成答案
C 无需 rerank
D chunk 切分、embedding 入库、top-k 召回、rerank 精排后拼入 LLM ✓ 正确答案
#

17. Reranking 模型(BGE-Reranker、Cohere Rerank、Cross-Encoder)在向量检索后的二次排序原理?为何两阶段(召回+精排)比单阶段 ANN 精度更高?

A 单阶段 ANN 精度更高
B 向量 ANN 粗召回 + Cross-Encoder reranker 精排,深层交互比近似排序更准 ✓ 正确答案
C reranker 对全库精排
D 两阶段无成本优势
#

18. 混合检索(Hybrid Search)的融合策略,RRF(Reciprocal Rank Fusion)与加权分数归一化如何将 BM25 关键词分数与向量相似度合并为统一排序?

A RRF 依赖原始分数值
B RRF 用排名倒数融合,加权归一化把分数标准化后线性合并 ✓ 正确答案
C 无需归一化
D 只能并行不融合
#

19. 向量数据库架构对比,Milvus(存算分离、etcd+pulsar+minio)vs Qdrant(单体 Rust、WAL+RocksDB)vs Weaviate(模块化、GraphQL)vs Pinecone(全托管 Serverless)在扩展性、延迟与运维复杂度上的本质差异?

A Pinecone 自托管
B 四者架构完全相同
C Milvus 存算分离规模大但运维复杂,Qdrant 单体轻快,Pinecone 全托管免运维 ✓ 正确答案
D Qdrant 运维最复杂
#

20. 元数据过滤(Metadata Filtering)与向量检索的协同,pre-filtering(先过滤再 ANN,高选择度优)vs post-filtering(先 ANN 再过滤,低选择度优)vs 融合方案(ACORN、filtered-HNSW)的召回率与延迟权衡?

A pre 延迟最低
B post 高选择度召回最优
C 低选择度用 post 简单,高选择度应选 pre 或 ACORN/filtered-HNSW 融合方案 ✓ 正确答案
D 融合方案无召回优势
#

21. pgvectorscale (HNSW+PQ 压缩+StreamingDiskANN) 与原生 pgvector (HNSW/IVFFlat) 的查询延迟与索引体积对比?

A pgvector 支持 SSD 索引
B pgvectorscale 无压缩
C 两者完全相同
D pgvectorscale 用 PQ 压缩与 StreamingDiskANN 降低体积、支持更大规模,pgvector HNSW 内存充足时延迟低 ✓ 正确答案
#

22. Milvus 2.4+/2.5+ 的标量字段 + 向量混合检索 (BooleanExpr + ANN) 作为向量数据库差异化能力的工程价值?

A 无工程价值
B 只能纯向量检索
C 无法过滤标量
D BooleanExpr 过滤 + ANN 融合,支撑"语义+属性"复合查询 ✓ 正确答案
#

23. HNSW 的图结构(多层跳表导航)与 IVF-PQ 的召回率/内存/延迟对比,如何选型?

A HNSW 内存最小
B IVF-PQ 召回率最高
C HNSW 召回高内存大,IVF-PQ 内存省但精度有损,按内存与召回要求选型 ✓ 正确答案
D 两者无差异
#

24. 向量索引的持久化与重建,WAL、段合并与崩溃恢复(Milvus/Qdrant 的实现差异)

A 崩溃不可恢复
B 无 WAL 机制
C Qdrant 用 WAL+RocksDB,Milvus 用消息队列日志+对象存储,段合并控制碎片 ✓ 正确答案
D 两者恢复机制完全相同
#

25. LanceDB 通过 IVF-PQ 与 HNSW 索引实现 ANN

A 只支持暴力检索
B 需独立服务器
C 嵌入式向量库,提供 IVF-PQ 与 HNSW 索引,基于 Lance 列式格式 ✓ 正确答案
D 无列式存储
#

26. Faiss 通过 GPU 加速(IndexFlatL2_GPU)提升吞吐量

A GPU 版并行计算距离矩阵,提升检索吞吐,尤其适合批量查询 ✓ 正确答案
B GPU 版性能更差
C 只支持小批量
D 无需 GPU 硬件
#

27. ScaNN(Google ScaNN)采用 anisotropic vector quantization

A 召回率更低
B 与标准 PQ 完全相同
C 误差各方向均匀
D 定量化误差按方向非均匀分配,同等码率下召回率高于标准 PQ ✓ 正确答案
#

28. Faiss 不支持动态增删(除 IndexIDMap 包装)

A 所有索引都支持在线增删
B Faiss 多数索引静态,IndexIDMap 提供 ID 映射辅助增删,动态更新能力有限 ✓ 正确答案
C IndexIDMap 是存储引擎
D 无需 ID 映射
#

29. Milvus 通过 Partition Key 与 Shard 实现水平扩展

A 无法水平扩展
B 只有单分片
C partition 用于存储节点
D Shard 水平分片分散负载,Partition Key 分区过滤与多租户隔离 ✓ 正确答案
#

30. Milvus 提供 Collection、Partition、Index 三级资源模型

A 只有 Collection 一级
B Collection 逻辑表、Partition 分区、Index 向量索引,三级组织数据 ✓ 正确答案
C Index 是数据存储
D 无分区概念
#

31. Weaviate 内置 vectorization 模块,支持多种 embedding 模型

A 只支持一种模型
B 需手动计算 embedding
C 内置模块自动调用多种 embedding 模型向量化,写入/查询自动编码 ✓ 正确答案
D 无向量化能力
#

32. Weaviate 通过 GraphQL API 提供 BM25 + vector 混合检索

A 只支持单一检索
B GraphQL API 支持 BM25 + vector 混合,通过 alpha 权重融合 ✓ 正确答案
C 无 BM25
D 非 GraphQL
#

33. Weaviate 通过 modules 接入 Cohere、OpenAI、HuggingFace

A 无法接入第三方
B 只能自研模型
C 无模块机制
D 通过 modules 接入 Cohere/OpenAI/HuggingFace,提供向量化/生成/重排 ✓ 正确答案
#

34. Qdrant 通过 REST/gRPC 双协议,集成轻量

A 只有 REST
B REST 易用易调试,gRPC 高性能,按需选择实现轻量集成 ✓ 正确答案
C gRPC 不适用
D 集成复杂
#

35. Qdrant 在 v1+ 支持 named vectors 与 sparse vectors

A 支持 named vectors 多向量与 sparse vectors 稀疏向量,支持混合检索 ✓ 正确答案
B 只支持单向量
C 无稀疏向量
D 不支持多字段
#

36. Pinecone 是托管向量库,支持 serverless 与 pod-based 部署

A 需自建集群
B 全托管,提供 serverless 按量弹缩与 pod-based 固定容量两种模式 ✓ 正确答案
C 只支持单机
D 无托管服务
#

37. 向量距离度量选择,欧氏距离(L2)适合绝对幅度敏感场景、余弦相似度适合文本/方向敏感场景、内积(IP)适合已归一化向量,三者之间的数学等价关系?

A 余弦依赖幅度
B 三者无任何关系
C 余弦忽略幅度适合文本,IP 在归一化下与余弦等价,L2 敏感幅度 ✓ 正确答案
D IP 不适合归一化向量
#

38. Annoy(Spotify)通过随机投影树实现 ANN,适合静态数据集的只读场景;与 HNSW 在动态插入、内存占用与召回率上的差异?

A 两者完全相同
B Annoy 支持动态插入
C HNSW 内存最小
D Annoy 随机投影树适合静态只读,HNSW 支持动态插入、召回通常更高 ✓ 正确答案
#

39. ScaNN(Google)的 anisotropic vector quantization 相比标准 PQ 在召回率上的改进原理?ScaNN 与 FAISS 在工程集成(GPU 加速、动态更新、分布式)上的取舍?

A 两者完全相同
B ScaNN 生态更成熟
C Faiss 无 GPU
D ScaNN anisotropic 量化提升召回,Faiss 生态成熟支持 GPU 但动态更新弱 ✓ 正确答案
#

40. 向量数据库的多租户隔离方案,Milvus Partition Key、Pinecone Namespace、Qdrant Collection per tenant 的设计差异与资源开销?

A Milvus/Pinecone 逻辑隔离开销低,Qdrant 每租户 collection 物理隔离但开销大 ✓ 正确答案
B 三方案完全相同
C Qdrant 开销最低
D Milvus 物理隔离
#

41. 向量索引的增量更新与重建策略,HNSW 的在线插入 vs IVF 需要定期 retrain 聚类中心;生产环境如何平衡索引新鲜度与重建成本?

A 从不重建
B HNSW 在线插入但需定期优化,IVF 需 retrain,生产用后台重建+灰度切换平衡 ✓ 正确答案
C IVF 无需 retrain
D 重建阻塞在线
#

42. Milvus 的 Segment / IndexNode 设计在大规模数据集上的存储成本与查询吞吐取舍?

A 索引构建占用查询资源
B IndexNode 参与查询
C Segment 无粒度概念
D Segment 是数据组织单元,IndexNode 独立构建索引,粒度与索引决定存储成本与吞吐 ✓ 正确答案
#

43. pgvector (VS LanceDB/Weaviate/Qdrant) 在已有 PG 集群不想引入新组件场景的真实工程回报 vs 复杂性?

A pgvector 复用现有 PG 免新增组件,但规模/性能受限;专用库性能强但需引入组件 ✓ 正确答案
B pgvector 性能远超专用库
C pgvector 需独立服务器
D 专用库运维更简单
#

44. Weaviate 的模块化 pipeline (向量 + reranker + generative) + 知识图谱融合 vs 纯 Milvus 单向量库的取舍?

A 两者完全相同
B Weaviate 只做检索
C Milvus 内建 generative
D Weaviate 模块化内建 rerank/generative 一体化,Milvus 专注检索性能强 ✓ 正确答案
#

45. 向量数据库的写入吞吐、删除策略、版本回滚、metadata 一致性:哪个真正决定生产可用性?

A 写入吞吐最重要
B metadata 一致性是正确性底线,决定生产可用性,其余是性能与便利性 ✓ 正确答案
C 版本回滚最次要
D 一致性可牺牲
#

46. LanceDB (columnar) + DuckDB 同进程嵌入式 RAG 架构在小团队的工程价值?

A 需部署独立集群
B 同进程嵌入式、零运维低成本,适合小团队向量+分析,但规模/并发受限 ✓ 正确答案
C 成本高
D 不适合小团队
#

47. Qdrant 的 Rust 实现 + 资源占用 vs Milvus (Go + C++) 的运维成本差异?

A Milvus 运维最简单
B Qdrant Rust 单体资源少、运维简单,Milvus 组件化功能强但运维复杂 ✓ 正确答案
C Qdrant 资源占用大
D 两者运维相同
#

48. 向量库的"过滤+检索"(metadata filter + ANN)为什么容易退化,如何优化?

A 过滤无影响
B 高选择度下召回不足,应用过滤感知索引或扩大候选集优化 ✓ 正确答案
C 事后过滤最稳
D 无法优化
#

49. 向量维度、数据量、QPS 与召回率要求如何决定向量索引参数(M/efConstruction/efSearch)?

A 参数与维度无关
B 高 QPS 调小 efSearch,高召回调大 efSearch,M 按内存与数据规模定 ✓ 正确答案
C 增大 efSearch 一定提升 QPS
D 数据量不影响参数
#

50. Embedding 维度与向量归一化对索引内存与检索延迟的影响

A 归一化丢失幅度信息不影响
B 维度不影响内存
C 维度越高内存与延迟越大,归一化后内积等价于余弦且便于量化压缩 ✓ 正确答案
D 归一化不适合量化
#

51. MySQL 9.x 引入的 VECTOR 类型与 DISTANCE()(COSINE/DOT/EUCLIDEAN)作为关系库内轻量向量方案的边界,与 pgvector/专用向量库如何取舍?

A 适合超大向量库
B 支持 HNSW 索引
C 提供 VECTOR 与 DISTANCE() 轻量计算,但无 ANN 索引,大规模性能差 ✓ 正确答案
D 与 pgvector 相同
#

52. Qdrant 通过量化(scalar/product)降低内存

A 量化无损
B scalar/product 量化降低内存,但精度有损,可配合 rescore 补偿 ✓ 正确答案
C 量化增加内存
D 不支持量化
#

53. Pinecone 通过 metadata filtering 与 namespace 多租户隔离

A 只能物理隔离
B 无租户隔离
C namespace 隔离租户数据,metadata filtering 提供细粒度过滤 ✓ 正确答案
D metadata 与隔离无关
#

54. Pinecone 通过 s1/p1/p2 pod 类型控制性能

A pod 类型不影响性能
B 所有 pod 相同
C s1 性能最强
D p2 偏性能高吞吐,s1 偏存储高容量,按需求选择控制性能与成本 ✓ 正确答案
#

55. LanceDB 基于 Lance 列式格式,嵌入式 OLAP + 向量混合

A 需独立服务器
B 只支持行式
C 基于 Lance 列式格式,嵌入式支持向量检索与标量分析混合 ✓ 正确答案
D 无法混合分析
#

56. LanceDB 提供 Python/Rust/JS SDK,可在浏览器/WASM 中运行

A 提供 Python/Rust/JS SDK,JS 可经 WASM 在浏览器运行向量检索 ✓ 正确答案
B 只支持 Python
C 无法在浏览器运行
D 无 WASM 支持
#

57. 稀疏向量(Sparse Vector)与密集向量(Dense Vector)的混合检索,SPLADE/BGE-M3 稀疏表示与 embedding 稠密表示如何互补?Qdrant 的 named vectors 如何支持同一条记录多向量字段?

A named vectors 只支持单字段
B 稀疏捕获语义
C 稠密精确词匹配
D 稠密捕获语义、稀疏精确词匹配互补,named vectors 支持单记录多向量 ✓ 正确答案
#

58. 多向量(ColBERT 类)与单向量检索的权衡,混合检索如何融合?

A 两者无差异
B 单向量精度更高
C 多向量成本低
D ColBERT 多向量 token 级交互精度高但成本大,混合检索用多路召回+融合平衡 ✓ 正确答案
#

59. 向量检索结果的相似度分数含义与阈值选择(可解释性与召回边界)

A 分数完全可解释
B 阈值固定最优
C 分数含义依赖度量与 embedding,阈值需按数据分布校准,决定召回边界 ✓ 正确答案
D 阈值与召回无关