我会按给定事实收束内容,重点控制正文长度、追问格式和禁用表达。会先写出可直接口述的答案,再核对字数与 frontmatter 字段。--- slug: moonshot-rag-four-libs question: "切分、Embedding、向量库、Rerank,四个组件的选型细节各说一个。" oneLine: "切分看策略与 chunk 量级,Embedding 看中文效果、维度与成本,Milvus 看规模、索引和部署,Rerank 只精排前几十,修正召回后排序不准。" category: jingchang company: moonshot track: ai-app tags: [月之暗面真题, RAG, 组件选型] minutes: 5 order: 196 updated: 2026-09-29 deep:
先这样答
这四个组件要按检索目标一起选。切分看策略和 chunk 量级。Embedding 看中文效果、向量维度和成本。Milvus 看数据规模、索引类型和部署形态。Rerank 用来解决“召回了但排序不对”。
切分时,我先看文本结构和检索目标,再决定切分策略。切得太粗,相关内容和无关内容容易放在一起。切得太细,上下文又会被拆散。chunk 量级不能脱离使用场景单独回答。我会说明当前量级为什么适合召回,以及它会怎样影响后面的排序。
Embedding 的选型不能只看模型名称。我会先看中文效果,再看向量维度和成本。中文效果决定它能不能把问题和相关内容放到合适的位置。维度会影响向量库的存储和检索选择。成本则决定它是否适合实际使用。Milvus 主要看数据规模,再结合索引类型和部署形态做选择。回答时,我会把这三个判断条件一起说清楚,而不是只说“因为它是向量库”。Rerank 处理的是召回后的排序问题。交叉编码器通常更准,但速度更慢,所以只对召回结果中的前几十个做精排。这样可以把它放在召回之后,专门修正排序。
面试官会怎么追问
-
「chunk 量级为什么不能直接给一个固定值?」 我会先看文本结构和检索目标。切分策略不同,合适的 chunk 量级也不同。我要说明量级和召回、上下文完整性之间的关系。
-
「Embedding 你为什么同时看中文效果、维度和成本?」 中文效果决定检索内容是否相关。维度会影响向量库的存储和检索选择。成本决定这个选型是否适合实际使用,三个条件要一起比较。
-
「既然交叉编码器更准,为什么不把所有召回结果都交给它?」 交叉编码器的速度更慢。它适合做精排,不适合处理全部结果,所以只精排前几十个。Rerank 解决的是召回结果的排序问题,不负责替代召回。
回答的坑
不要只报一个固定的 chunk 数量,却不说明切分策略和检索目标。
不要把 Rerank 说成扩大召回范围,它解决的是“召回了但排序不对”。