4. 金融领域Embedding与向量库面试题
在金融RAG岗位面试中,Embedding与向量库是区分“会调API”和“懂检索系统”的关键分水岭。面试官通常不会只问“你用过哪个模型”,而是沿着选型依据→微调策略→索引结构→召回评估→工程落地这条链路连续追问。本章帮你把这条链路拆成可复述的回答框架,并给出大厂侧重点的应对策略。
一、核心原理:Embedding与向量库在金融RAG中的定位
Embedding负责把金融文本映射到语义空间,向量库负责在这个空间中做近邻搜索。金融场景的特殊性在于:术语密度高、数字与实体敏感、文档结构复杂(财报、公告、研报、合同)。通用Embedding模型在“净利润同比”“质押率”“久期”这类词上容易混淆,因此选型不能只看MTEB榜单,而要看领域内检索准确率。
向量库的核心指标是召回率、延迟、吞吐、成本。FAISS是库,适合离线实验和嵌入式检索;Milvus是服务,适合在线高并发、多租户、动态增删。面试官问“为什么选Milvus”,本质是在问你对工程化边界的理解。
二、方法流程:从选型到上线的五步法
- 基线选型:先用BGE、M3E、text-embedding-3等通用模型跑通链路,记录Recall@10与MRR。
- 领域微调:构造正负样本对,正样本来自“问题-答案段落”,负样本用BM25硬负例和同文档跨段负例。
- 索引构建:小规模用Flat,中等规模用IVF+PQ,在线低延迟用HNSW。
- 召回评估:用标注集计算Recall@K、NDCG,并做A/B对比。
- 上线监控:监控召回率漂移、延迟P99、索引重建耗时。
面试表达技巧:不要只说“我用了BGE”,要说“我先用BGE做基线,发现金融术语召回不足,于是用10万对公告问答做对比学习微调,Recall@10从0.62提升到0.81”。
三、案例/场景:金融公告检索的微调与索引选择
假设场景:某券商需要从年报中检索“研发费用资本化率”相关段落。通用模型会把“资本化”与“费用化”混在一起。解决方案是构造对比学习样本:同一段落的问句为正,其他段落为负,加入数字扰动负例。
# 微调数据构造示例
query = "研发费用资本化率是多少"
pos = "公司本期研发投入资本化金额为1.2亿元,资本化率18.5%"
neg = "公司本期研发费用全部费用化,计入当期损益"
# 训练目标:让query与pos的余弦相似度高于neg
索引选择上,若文档量在百万级、要求P99低于50ms,优先HNSW;若内存受限且可接受略低召回,用IVF_PQ。Milvus中可配置:
index_params = {
"index_type": "HNSW",
"metric_type": "IP",
"params": {"M": 16, "efConstruction": 200}
}
search_params = {"ef": 64}
| 维度 | FAISS | Milvus |
|---|---|---|
| 部署形态 | 嵌入式库 | 分布式服务 |
| 动态增删 | 需重建索引 | 原生支持 |
| 适用场景 | 离线实验、小规模 | 在线高并发、多租户 |
| 金融落地 | 原型验证 | 生产检索服务 |
四、误区/复盘:面试中常见的三个坑
坑一:只背模型名字,说不出选型依据。面试官会追问“为什么不用 Embedding”,你要能从数据合规、成本、延迟、领域效果四个角度回答。
坑二:把召回率等同于准确率。金融场景要区分“召回相关段落”和“答案正确”,前者是检索指标,后者是生成指标。
坑三:忽略索引参数与业务指标的映射。HNSW的M和ef影响召回与延迟,要能说出“M越大召回越高但内存越大”。
复盘建议:准备一个STAR项目表达,把“模型选型→微调→索引→评估→上线”串成一条线,并量化每个环节的提升。大厂侧重点不同:字节重工程与规模,腾讯重合规与多模态,蚂蚁重金融风控与隐私计算。回答时先判断公司画像,再调整案例侧重点。
本章核心记忆点:选型看领域效果,微调看样本构造,索引看延迟与召回平衡,评估看Recall@K与NDCG,落地看Milvus与FAISS的边界。