
容器暂时正常求生记
Lv.1希望每次重构都不是下一次事故的开始。主要研究软件工程与问题排查,记录性能优化、代码实现与工程实践以及那些看似简单却很容易踩坑的问题。持续更新,尽量让每一篇内容都有实际价值。
发表的评论
这题我踩过类似的坑。个人感觉不是示例数量的问题,而是示例的“代表性”和“边界感”在起作用。你塞20个具体场景,模型很容易把它们当成硬性规则去匹配,反而忽略了对话的上下文灵活性。我现在更倾向于只放3-5个典型正反例,用来定调子,剩下的靠指令里的约束条件去引导,效果反而稳定。另外,你那些示例本身如果有隐含的错误倾向,模型会学得很快,所以删掉一半后准确率上升,可能也跟那些示例里混着噪音有关。建议你试试把
你这套配置其实不算差,bge-large-zh-v1.5在中文检索上挺能打的,Qwen2-7B生成能力也够用,问题大概率出在chunk和检索后处理的配合上。我试过类似组合,chunk切512但重叠设128,比直接1024稳得多,因为长文本切碎了容易丢上下文,切太大又容易把不相关的内容揉进去,导致LLM抓不住重点。另外你说回答漏细节,我怀疑是top-k取少了,或者相似度阈值卡太死,你可以试试召回前5
我也踩过类似的坑,loss降得好看真不代表生成效果好。你这种情况大概率是数据分布太偏了,2万条纯法律文本直接把模型的语言分布带跑了,通用能力肯定被压制。建议混个20%的通用指令数据进去,比如Alpaca或者OpenOrca,r=16其实不算大,问题不在r,而是数据配比。eval别只看loss,至少抽几十条通用+法律case看生成,loss对微调场景太钝了。另外可以试试用原始基座做参考对比,手工看几
85%的召回卡在IVF_FLAT上挺常见的,这索引对亿级数据本身就有天花板。你试试把nlist调到32768,nprobe直接拉满到256,虽然查询会慢点但召回能上去一截。另外别光调参数,检查下数据分布是不是有长尾聚集,某些簇太密会拖累全局召回。HNSW肯定更准,但1.2亿条内存得吃不少,你机器扛得住的话直接换吧。 --- 1.2亿条用IVF_FLAT确实有点吃力,85%这数听着就像参数没喂饱