候选人简历写得很满:做过企业知识库,接过 RAG,上线过向量检索。面试官只问了一句:同样是存 embedding,为什么有的团队用 pgvector 足够,有的团队非要 Milvus、Qdrant 或 Pinecone?
候选人开始背产品名:Pinecone 云原生,Milvus 适合大规模,Qdrant 过滤强,pgvector 简单。听起来都对,面试官继续追问:那你的权限过滤放在哪里?召回率怎么测?索引参数怎么调?
五分钟后,候选人沉默了。
这道题高频,不是因为面试官关心你会不会装一个库,而是想看你有没有做过真正上线的 RAG。
Round 1:选型第一问,真的需要向量数据库吗?
面试官:“你要做一个公司内部知识库,文档十万篇,问答流量不高。你会直接上哪种向量数据库?”
候选人:“我会选 Milvus 或 Pinecone。向量数据库是 RAG 标配,后面规模起来也方便。”
面试官内心 OS:这是把未来规模当成现在问题。
正解:
很多人把向量数据库当 RAG 的第一步,其实第一步是判断检索问题的规模、更新频率和过滤复杂度。十万篇文档如果切成一百万个 chunk,pgvector、Elasticsearch dense vector、Qdrant 单机都能跑。直接上分布式向量库,最早遇到的痛点往往不是性能,而是部署、备份、权限同步和成本。
向量库解决的是近似最近邻搜索,也就是 ANN。它把 embedding 放进索引结构里,用图、倒排簇或量化压缩减少全量比较。小数据量时,暴力搜索或轻量 HNSW 反而更稳定,因为没有跨节点路由、后台 compaction、异步索引构建这些变量。真正要上专门向量库,常见触发点是:数据量进入千万级 chunk,单机内存吃紧,多租户隔离复杂,元数据过滤成为主路径,或者团队需要托管服务减少运维。
工程上可以用一个简单分界线:低流量知识库先用主数据库内的 pgvector,业务数据和向量同库,事务一致性最好。搜索产品或多租户 RAG,优先看 Qdrant、Weaviate、Milvus、Pinecone 这类专门系统。已有 Elasticsearch 团队可以先评估混合检索能力,不要为了向量单独拉一套基础设施。选型前先做离线评测:抽一百个真实问题,人工标注应该命中的文档,用 Recall@5、MRR、P95 延迟、索引构建时间四个指标比较。
常见坑是拿 demo 查询做压测。demo 问题通常干净、短、没有权限过滤,生产问题会带缩写、错别字、产品编号和部门权限。排查时先打印每次查询的 topK 原文、分数、过滤条件和最终重排结果。如果 topK 里根本没有正确文档,是召回问题;如果有正确文档却没进答案,是重排或 prompt 组装问题。
来源:pgvector README、Qdrant Vector Search in Production、Redis vector database challenges。
要点速记
- 十万文档、一百万 chunk 以内,先评估 pgvector 或单机向量库
- 离线评测至少看 Recall@5、MRR、P95 延迟、索引构建时间
- topK 原文必须落日志,先判断召回错还是生成错
- 分布式向量库的收益通常出现在千万级 chunk 或复杂多租户场景
Round 2:HNSW 参数怎么调,别只会说默认值
面试官:“你说用 HNSW。那 m、ef_construction、ef_search 分别影响什么?线上调哪个最安全?”
候选人:“m 越大越准,ef 越大也越准。一般默认值就可以,性能不够再调。”
面试官内心 OS:知道结论,但不知道旋钮的代价。
正解:
HNSW 的反直觉点在于,它不是单纯把参数调大就赢。m 决定图里每个点保留多少邻居,图越密,召回越高,内存和构建时间也会上去。ef_construction 决定建图时探索多深,它影响索引质量,改完通常要重建索引。ef_search 是查询时探索候选点的数量,它最适合线上灰度,因为不用重建索引,可以按接口、租户或查询类型动态调整。
原理可以这样理解:HNSW 建的是多层小世界图。查询从高层粗略跳转,逐层下降到低层精搜。m 太小,图连得稀,容易早早走到局部区域;ef_search 太小,搜索过程看过的候选点太少,延迟低但漏召回;ef_construction 太低,建出来的图质量差,后面把 ef_search 拉高也救不回太多。官方文档里 pgvector 的 HNSW 默认 m=16、ef_construction=64、hnsw.ef_search=40,这是一组保守起点,不是通用最优。
工程调参不要靠感觉。先固定 embedding 模型和 chunk 策略,准备一批标注查询。第一轮只扫 ef_search,比如 40、80、120、200,画出 Recall@10 和 P95 延迟曲线。曲线变平后停止,不要追最后一个百分点。第二轮才调 m,比如 16 到 32,观察内存、构建时间和召回变化。写入频繁的业务要谨慎加大 m,因为索引构建和插入维护都会变重。Postgres 里还要看 maintenance_work_mem,HNSW 图放不进内存时构建速度会明显下降。
常见坑是只看平均延迟。HNSW 的 P99 常被长尾查询、过滤条件和冷缓存拉爆。排查时把查询按过滤选择性分桶:无过滤、命中 10% 数据、命中 1% 数据、命中更少数据。再分别看 recall 和延迟。只调一个全局 ef_search,经常会让简单查询浪费预算,困难查询仍然召回不足。
来源:Faiss indexes wiki、pgvector README、Qdrant indexing docs、Weaviate vector index docs。
要点速记
- m 管图密度,ef_construction 管建图质量,ef_search 管查询探索深度
- pgvector HNSW 默认 m=16、ef_construction=64、hnsw.ef_search=40
- 线上优先灰度 ef_search,重建成本比调 m 小
- 调参报告至少包含 Recall@10、P95、P99 和内存占用
Round 3:带权限过滤后,为什么召回突然崩了?
面试官:“知识库上线后,没权限过滤时效果不错,加上 department_id、tenant_id、acl 过滤后,用户说答案变差。你怎么解释?”
候选人:“可能过滤条件写错了,或者数据权限同步有延迟。把 topK 调大应该能解决。”
面试官内心 OS:topK 不是万能止痛药。
正解:
很多 RAG 事故不是向量相似度算错,而是过滤和 ANN 的执行顺序错了。向量搜索要在高维空间里快速找近邻,权限过滤要在结构化字段上精确筛选。两者合在一起,系统必须在 pre-filter、post-filter、迭代过滤或专用过滤索引之间取舍。任何一个选择都会影响召回、延迟和权限安全。
post-filter 最容易踩坑:先取 topK 向量结果,再按权限删掉不该看的文档。如果用户只能看全库 1% 的数据,topK=20 里大概率全被删光,最终结果看起来像模型幻觉。pre-filter 先缩小候选集合,再做向量搜索,权限正确性更直观,但选择性太强时 ANN 图可能被切碎,遍历路径变差。更成熟的系统会把过滤条件纳入索引或采用迭代过滤,边搜索边扩大候选,直到拿到足够结果。
工程设计要把权限过滤当主路径,而不是上线前补一个 where。多租户系统至少把 tenant_id 做成强过滤字段,部门、时间、文档类型做 payload index 或 metadata index。检索日志里保留四个数:过滤前候选数、过滤后候选数、最终返回数、被 ACL 删除数。只看最终 topK 没用,你看不到中间被过滤吞掉了多少。压测集也要包含极端权限:只能看少量文档的新人、跨部门主管、历史项目成员、离职交接账号。
常见坑是把权限放到生成阶段拦截。模型已经看过越权 chunk,再要求它不要回答,这在安全上已经失败。排查流程可以从一条投诉开始:复现 query,打印 metadata filter,检查向量库实际执行计划,确认过滤字段是否建索引,再对比无过滤 topK 和过滤 topK 的重合度。如果无过滤能命中、过滤后消失,问题在过滤路径;如果两边都没有,才回到 embedding 和 chunk。
来源:Pinecone vector search filtering、Qdrant filtering guide、Milvus filtered search docs、Filtered ANN 2026 paper。
要点速记
- 用户只可见 1% 数据时,post-filter 很容易把 topK 删空
- 检索日志至少记录过滤前候选数、过滤后候选数、最终返回数、ACL 删除数
- tenant_id 适合强过滤,department_id、doc_type 适合建 metadata index
- 权限必须在检索阶段生效,不能等模型读完 chunk 再拦截
Round 4:向量检索不够,混合检索怎么落地?
面试官:“用户搜订单号、函数名、缩写、错误码时,向量检索经常漏。你会怎么改?”
候选人:“可以换更好的 embedding 模型,或者把 chunk 切小一点,让语义更准确。”
面试官内心 OS:这是把词法问题硬塞给语义模型。
正解:
向量检索擅长语义相近,不擅长精确符号。订单号、API 名、报错码、人名、缩写、配置项,这些词在 embedding 空间里不一定稳定。生产 RAG 的基线方案通常是混合检索:BM25 或关键词召回负责精确匹配,向量召回负责语义扩展,再用融合算法或 reranker 合并。
原理上,BM25 看词项匹配、词频和文档长度,向量检索看 embedding 距离。两套信号相关但不等价。只用向量,用户搜 ERR_CONN_RESET 可能召回一堆网络错误解释,却漏掉包含原始错误码的内部文档。只用 BM25,用户问登录态丢失的根因,又可能漏掉写着 session invalidation 的英文文档。混合检索把两边结果拉齐,常见做法是各取 topK,然后用 RRF 融合,或者进入 cross-encoder reranker 做二次排序。
工程上推荐从简单版本开始:BM25 取 50 条,向量取 50 条,去重后给 reranker 取前 20 条,再塞给生成模型。Weaviate、Elasticsearch、Vespa、OpenSearch 都支持不同形态的 hybrid search,Qdrant 和 Milvus 也可以通过外部 BM25 加重排组合。调参时不要只看最终答案,要看召回池。先问一个问题:正确文档有没有进入合并后的 100 条候选?如果没有,是召回策略问题;如果进了但排不前,是融合或 rerank 问题。
常见坑是把向量分数和 BM25 分数直接相加。两个分数分布不同,直接加会让某一侧长期压制另一侧。RRF 的好处是只看排名,不依赖原始分数尺度,适合第一版上线。排查时把每条结果标注来源:vector only、keyword only、both。高质量结果如果长期来自 keyword only,说明 embedding 或 chunk 有问题;如果垃圾结果来自 both,说明数据清洗或问题改写出了偏差。
来源:Weaviate hybrid search docs、TechTarget hybrid search analysis、Qdrant production article。
要点速记
- 精确符号交给 BM25,语义扩展交给向量检索
- 第一版可用 BM25 top50 + vector top50 + reranker top20
- RRF 比直接相加更稳,因为它不依赖原始分数尺度
- 日志里给结果打 vector only、keyword only、both 三类标签
Round 5:Milvus、Qdrant、Pinecone、Weaviate、pgvector 到底怎么选?
面试官:“现在给你五个选项:Milvus、Qdrant、Pinecone、Weaviate、pgvector。你别背官网,用工程条件说怎么选。”
候选人:“小项目 pgvector,大项目 Milvus,想省事 Pinecone,过滤多 Qdrant,知识图谱 Weaviate。”
面试官内心 OS:方向有了,但还不能拿去做架构评审。
正解:
成熟的选型不是给产品排名,而是把约束摆出来:数据规模、过滤复杂度、写入更新、团队运维能力、云合规、混合检索、备份恢复、成本模型。向量库很少单独失败,它通常和主数据库、对象存储、权限系统、embedding 任务队列一起失败。只看 QPS 榜单,容易选到一个 demo 很快、生产很难管的系统。
pgvector 的优势是简单和一致性。业务数据已经在 Postgres 里,向量、metadata、权限字段同库,事务和备份都顺手。缺点也清楚:规模继续上去后,索引构建、VACUUM、连接池和查询隔离会变成 DBA 问题。Qdrant 的亮点是 payload filter 和工程体验,适合过滤重、团队想自托管又不想管太复杂集群的 RAG。Milvus 更偏大规模和高吞吐,适合数据量大、团队能接受独立集群运维的场景。Pinecone 的价值在托管和弹性,买的是少运维,不是神奇召回率。Weaviate 则适合需要对象 schema、hybrid search 和模块化生态的团队。
一份可落地的选型表可以这样写:如果三个月内数据小于一百万 chunk,QPS 低,主库是 Postgres,先用 pgvector。若过滤字段多、权限复杂、需要自托管,优先试 Qdrant。若数据已经进入千万级、向量维度高、批量导入频繁,评估 Milvus。若团队没人值守向量集群,Pinecone 这类托管服务的运维溢价往往划算。若搜索体验要同时覆盖关键词、语义、schema,评估 Weaviate 或 Elasticsearch 方案。
常见坑是没有退出机制。向量库迁移很痛,因为 embedding、chunk_id、metadata schema、删除语义、权限字段都会耦合。上线前要定义导出格式:chunk_id、doc_id、embedding_version、metadata、source_uri、deleted_at。所有写入走同一层 repository,业务代码不要直接散落各家 SDK 调用。这样后面从 pgvector 迁到 Qdrant,或者从自托管迁到托管服务,风险会小很多。
来源:Milvus docs、Qdrant documentation、Pinecone docs、Weaviate docs、Vector database comparison 2026。
要点速记
- 一百万 chunk 内、Postgres 已在用,pgvector 是低复杂度起点
- 过滤重、自托管优先看 Qdrant;千万级规模再认真评估 Milvus
- 托管服务买的是少运维,不能替代召回评测
- 写入层必须抽象统一,至少保留 chunk_id、embedding_version、deleted_at
面试官点评
这位候选人的问题很典型:知道产品名,也知道几个关键词,但回答停在选型口诀。真正做过生产 RAG 的人,会把问题拆成召回、过滤、重排、权限、更新、成本和可迁移性,而不是一句大项目上 Milvus。
给准备面试的人三条建议:
- 自己做一份小型评测集,至少一百个真实问题,标注命中文档,别只跑 demo。
- 把 HNSW 的 m、ef_construction、ef_search 调一遍,记录 Recall@10、P95、P99 的变化。
- 设计一次带权限过滤的压测,让 topK、ACL 删除数、rerank 结果全进日志。
向量数据库选型考的不是背官网,而是工程判断。面试官想听到的也不是哪家最强,而是你如何证明它适合当前系统。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

408

被折叠的 条评论
为什么被折叠?



