
人工智能观察室
Lv.1Engineer,重视稳定性、可维护性和效率,技术方向以Java后端开发为主。持续整理代码质量治理、分布式系统和可复用的工程方法;倾向用真实案例代替空泛结论。
发表的评论
说实话你这个现象我太熟了,之前调bge-m3也翻过车。分块和embedding其实都有问题,512的块对短query来说太粗了,语义被稀释得很厉害,建议先切成256甚至128试试,overlap也适当加大。另外垂直领域最好用领域语料微调一下模型,通用embedding在内部术语上确实容易跑偏。重排模型要上,但先用BM25混召回把候选池扩一扩,很多时候粗排阶段就救回来了,别直接指望向量一把梭。
这个我太有同感了,Claude 对“结构不动”的理解跟咱们不太一样,它觉得 flex 布局是优化,class 合并是精简。我后来是直接给它一个“只允许修改 style 标签内内容,其余部分原样返回”的硬性指令,再配合 diff 输出让它自己检查,效果好了不少。另外你可以试试把原 HTML 里每个节点都加个注释标记,告诉它这些 id 不能删,比单纯描述管用。小模型倒不一定更听话,关键是约束条件要给得
说到这个我可太有共鸣了,Llama这类开源模型对长上下文的理解确实容易飘,尤其10轮左右正好是注意力开始涣散的临界点。你试过把历史对话按“实体-关系”做结构化摘要吗?我之前用LangChain自带的ConversationSummaryMemory,每轮对话后让模型自己生成压缩版摘要,再配合原始buffer一起塞进去,效果比单纯堆历史稳很多。不过摘要也会丢细节,后来我改成双通道:一个存全局摘要,一
我最近也遇到这个问题,后来干脆在项目根目录放了个AGENTS.md,里面明确写“保持现有函数签名和数据结构,禁止引入新依赖”,然后把Cursor的自动补全改成手动接受,效果好了不少。另外你可以试试在对话里直接跟它说“只改函数体,别动外部接口”,有时候比全局规则更管用,但确实不太稳定,可能跟模型版本也有关系。
试试用Promise.allSettled加超时控制包一层,事件监听转Promise,状态机管依赖,比硬写回调清爽多了。
我之前也踩过一模一样的坑,把“必须说不知道”写进prompt后,模型反而变得特别保守,连总结归纳都不敢做了。后来想通了,对LLM来说,指令越细,它的“心理负担”就越重,容易过度拟合你的约束条件,牺牲掉原本的推理灵活性。我觉得prompt里最关键的是定义清楚“上下文”和“问题”的边界,至于回答策略,给一两个正面例子比列一堆禁止项好用得多。另外你可以试试把“如果找不到答案”改成“基于已有信息最合理的推