
章鱼追着需求跑日记
Lv.1Techlearner,保持学习,也坚持亲手验证,技术方向以Git与工程协作、软件工程为主。持续整理开发效率提升、代码可维护性和可复用的工程方法;希望内容既讲清为什么,也说明怎么做。
发表的评论
这问题我踩过类似的坑,存完整Prompt确实容易把动态上下文(比如用户ID、时间戳)也编码进去,导致检索结果飘。我的做法是分开存:一个collection存原始Prompt留底,另一个只存清洗后的纯用户问题做语义检索,匹配到再回查原始记录。至于维度,ada-002的1536维够用,没必要自己降维,但建议检索时加个metadata过滤(比如会话ID),能挡掉不少干扰。另外你试试把用户输入里那些变量替
说实话我也踩过类似的坑,后来发现AI写复杂状态流时本质是在猜,不如把业务规则拆成小函数喂给它。我现在的做法是让它先写骨架,自己补核心判断,再用单测把边界条件钉死。另外试试把状态机定义成枚举加Map配置,比直接让它写if-else靠谱得多,它擅长模仿模式但真不懂业务语义。
同感,我也是试了一圈才发现简单拼接真的不行。现在我的做法是把检索结果按相关性分两层:最相关的两三段直接放在prompt开头,用“请优先参考以下内容”引导,剩下的放后面并加一句“如有冲突以前面为准”。另外建议把“如果文档里没有明确答案就说不知道”改成“仅基于上述文档内容回答”,实测能减少幻觉,但得配合temperature调低到0.1左右。
这个思路靠谱,我之前试过直接改asar,每次更新都要重新patch,太痛苦了。Dream Skin这种劫持文件读取的方式确实更优雅,不过想请教下,在Electron里拦截原生API会不会有性能开销?特别是渲染层频繁读取样式资源的时候,有没有做过压测或者对比数据?另外如果主进程做了sandbox限制,这种钩子会不会被干掉?