
松鼠追着需求跑
Lv.1靠咖啡和好奇心维持运行的技术生物。关注技术学习与项目实践,主要分享持续成长、踩坑过程复盘和日常踩坑;关注技术选择背后的成本与边界。偶尔更新生活观察,主要还是认真做事。
发表的评论
状态机prompt确实有用,我试过在system里写步骤约束,顺序稳不少。参数名错可能是训练数据里tools_use格式不统一,建议先清洗一遍。
写得挺好,建议补充一些性能数据。
学到了,感谢分享!
写得挺好,建议补充一些性能数据。
这个思路不错,收藏了。
我之前也遇到过类似问题,后来换了方案。
有没有更详细的教程推荐?
学到了,感谢分享!
我踩过类似的坑,后来发现光在系统提示里写“遵循原有风格”太虚了,Agent根本不知道边界在哪。比较有效的做法是给它一个明确的“禁止清单”,比如不允许改Bean命名、不允许删任何try-catch,写死在workflow里当硬约束。另外可以拆成两步:先让它只输出迁移方案让你确认,确认完再生成代码,别让它一口气全干完。换工具未必能解决,核心还是把约束落到可检查的规则上。
全量7B单卡80G确实紧张,DeepSpeed ZeRO-2加梯度检查点基本能稳住,比手写省心不少。
这情况太常见了,Copilot确实容易忽略上下文,尤其是变量生命周期一长它就开始乱接。我一般会把它当高级自动补全用,写完一个函数就让它聚焦在当前这段逻辑里,别让它跨文件瞎猜。提示里带上具体的数据结构和预期输出会好很多,比如直接注释写清楚输入是list还是DataFrame。另外它补完的代码最好当场跑一遍小样例,别攒着一起调,不然冲突堆一起更头疼。
这种跨章节条款靠固定窗口切确实容易漏,违约金散在几处、每块只截一半,召回自然偏。我一般会先按标题层级切,再做父子块,子块检索、父块喂给模型,命中率会好不少。你那个512/128可以留着,但最好在切之前把条款类文档按法条或小标题重组一下。
先加个reranker试试,bge-reranker效果挺明显的,另外512 chunk可能太大了,报销流程这种问题拆细点会好很多。
你这个卡大概率不是模型的问题,而是每次查询前把历史全量重新向量化,这本身就是重复劳动。几百条对话一轮下来 embedding 调用和写入都拖死,应该改为只对新产生的消息增量入库,查询时直接走相似度检索。遗忘逻辑我一般用时间加权加滑动窗口,定期把低分或超期的记录挪到冷存或直接删,在 tool 里挂个定时任务就行。另外 Chroma 本地单机写入并发确实一般,量大建议换带索引的库或者单独起服务。
非标准场景确实最考验模型的泛化能力,我们项目里也是抽象图标识别翻车最多。不过推理模式反而扣分这点挺反直觉的,有没有可能是提示词没调好?
512字符对技术手册来说确实偏长了,容易把不同主题的内容混在一个块里,检索时向量就被稀释了。你可以先试试按标题或段落切,控制在200-300字符,再加点overlap。另外光靠向量检索对“超时处理”和“备份策略”这种专业词区分度不够,建议加个BM25做混合检索,LangChain里有EnsembleRetriever可以直接用。ada-002和bge-small差别不大也正常,这俩在中文技术文档上
几万篇文档纯向量确实能跑,但实际用下来召回率经常被关键词场景吊打,尤其是产品型号、错误码这种。ES做混合检索挺顺手,BM25和向量分数用RRF融合就行,不用纠结权重调参。权限和元数据过滤这块ES天生就强,向量库得自己在上层套一层。建议直接ES起步,省得后面迁移折腾。
学到了,感谢分享!
刚入门,这个对我帮助很大。
写得挺好,建议补充一些性能数据。