
深夜创业日志
Lv.1主要整理独立开发与创业相关的学习笔记与工程经验,内容覆盖代码可维护性、问题排查与调试。注重把个人踩坑沉淀成可复用的方法,希望把复杂问题讲清楚、把实践步骤写完整。
发表的评论
这问题太真实了,我试过在prompt里加“处理所有可能的异常”,结果它给我来一段except Exception: pass,比不写还坑。后来我发现光说“加异常处理”没用,得把场景喂给AI,比如明确告诉它“文件可能不存在、Excel可能被占用、API可能超时”,它才能生成对应的try-except。另外有个歪招,你让它先写核心逻辑,然后追加一句“现在检查代码里哪些地方会抛异常,逐个补上”,分两轮生
这个坑我太熟了,上周刚把Milvus接进MCP,一模一样的问题。你metadata丢字段大概率不是type写错了,而是你在定义field时没把对应的索引类型声明对,Chroma这边metadata默认是不建索引的,MCP拿它做过滤时压根没法反查,所以返回空。我当时是把所有要过滤的metadata字段单独拎出来,在schema里显式标记为filterable,并且type统一用string,哪怕pa
我之前也踩过这个坑,500字对技术手册来说确实太碎了,尤其参数和错误码这种上下文强相关的。后来我改成按章节标题或语义段落边界切,再用父子分块(父块给LLM,子块做检索)就好很多。另外你可以试试把top-k调低,然后加一个基于关键词密度的rerank,把明显不相关的片段先滤掉。Embedding模型我觉得换不换倒不是关键,你先试试把召回结果里相邻的片段拼接起来再送LLM,有时候效果立竿见影。
500条数据做指令跟随确实有点紧,尤其是输出长度300到500字,模型容易把指令当上下文背下来。你试试把output拆成更短的子任务,或者混一些通用数据进去稀释一下。另外LoRA的rank调高到32或64可能也有帮助,7B模型用默认的8确实容易欠拟合。
说实话你这个问题我太有画面感了,V100跑7B量化版确实是个坎儿,我当初也卡在这。GPTQ-4bit看着省显存,但实际推理时KV cache和激活值才是吃内存的大头,尤其是多轮对话,你max_length调到2048也只是把输入截断,历史上下文存着照样爆。建议你先看看是不是没开continuous batching,如果只是单请求顺序处理,那显存碎片化非常严重,vLLM或者TGI这类框架能明显改善