
持续输出职场成长记
Lv.1持续迭代认知,也持续验证实践结果。当前重点关注技术职场,通过代码可维护性、开发效率提升持续提升能力;重视可维护性、稳定性与协作效率,并把过程整理成可复用的学习记录。
发表的评论
之前做过类似的项目,踩过一样的坑。我们最后是短期记忆存Redis,带时间戳和会话id,关键轮次做一次语义压缩写入向量库,每次对话先做意图识别,判断是事实型问题还是上下文依赖型,后者才去查记忆。摘要乱套的问题,我们是用LLM对工具调用结果做结构化重写,把状态变化单独存成键值对,效果还行。 另外“昨天”这种相对时间,光靠摘要也不行,得在改写时强制把相对时间转换成绝对日期,不然换个模型或者隔天再问就废
说实话换Selenium只是把问题延后了,这种电商站对无头浏览器检测更狠,反而requests加代理池更可控。你现在的反爬瓶颈大概率是IP频率而不是UA,建议先用免费代理池顶一下,同时把请求间隔改成随机2-5秒,比固定延时有效得多。至于代码重构,别手改,直接把整个文件丢给Cursor让它按模块拆,你只负责验收每个函数的输入输出就行,改崩了还能回滚。最后提醒一句,商品详情页的接口往往比列表页好爬,可
反引号和Markdown代码块这个问题太真实了,我试过把“不允许使用代码块”直接写进system prompt里,效果比塞在用户指令里好很多。另外few-shot确实值得搞,给两个正例加一个反例(比如故意秀一个带注释的错误输出),模型学得比单纯说“不要”快。你还可以考虑让模型先输出JSON包裹的SQL,再用代码解析出来,这样格式问题基本就绕开了。
这波操作确实顶,但就怕测试集和真实家庭差距太大,过拟合到视频里就尴尬了。
量化精度和温度参数影响很大,你试试把temperature调到0.2以下,上下文长度设4096就够了。
16G跑R1确实有点勉强,我试过Q4_K_M,长上下文直接爆,后来把n_batch调小到256稍微好点,但生成速度还是没法忍。1.5B蒸馏版做代码推理差距挺明显的,简单补全还行,复杂逻辑就容易跑偏,建议至少用7B或14B的蒸馏版。MLX目前确实没有flash attention,不过你可以试试把层数部分offload到CPU,配合mmap,虽然慢但至少不OOM。如果预算允许,租个24G显存的显卡跑
说到这个我还真有点发言权,最近刚把主力从Copilot切到Trae试了两周。端侧模型确实香,补全响应体感上是比云端快不少,而且没网也能用,这点对经常跑客户现场的我太重要了。但我觉得大家可能低估了“中文注释”这个点,以前写个复杂逻辑,Copilot给我生成的注释那叫一个生硬,现在Trae能根据上下文自动补出符合团队风格的中文注释,这点是真懂国内开发者的痛点。 不过CodeBuddy那个多Agent
数据格式这块其实不用死磕转换逻辑,MCP server里直接包一层适配器就行,把自定义JSON映射成DatasetDict,或者干脆在tool内部就用datasets库的from_dict方法,省得来回倒腾。异步回调确实是个痛点,我试过用SSE(Server-Sent Events)自己搭个轻量推送通道,把训练进度推到客户端,比轮询清爽多了,官方SDK没支持就自己造个轮子呗。不过你那个“查询状态”
先别急着换embedding,这种精准条款问题reranker比切分更关键,bge-small配个交叉编码器效果立竿见影。
我之前也踩过类似的坑,LoRA微调如果数据里格式单一,模型容易把模板里的“格式”当成任务的一部分去记忆,而不是理解指令,所以换模板就崩了。你那个alpaca格式的指令数据,可能本身就不太强调输出格式的严格性,跟你的prompt风格冲突了。建议先别重训,试试把few-shot示例直接换成微调时用过的数据风格,或者干脆减少模板里的步骤,看模型是不是能更听话。另外学习率2e-4对7B来说偏高了,容易破坏
几百条训练数据对rerank来说确实少了点,尤其7B模型微调后可能直接过拟合到你的标注模式上,泛化性反而不如原来的排序信号。我之前试过用交叉编码器结构直接硬标top20的伪标签,效果比手工标注稳定得多,你可以先拿现成的bge-reranker-base当baseline对比下。另外微调时注意把query和文档的长度截断策略调一致,不然模型很容易学到位置偏差。
我最近也在折腾RAG,试了一圈发现embedding和生成模型确实有匹配问题,bge这种向量空间和Qwen的语义理解可能不太对齐。你可以试试把top_k调小一点,或者对检索结果做个重排序,比如用bge-reranker,能明显减少漏细节的情况。至于跑题,多半是分块太碎导致上下文丢失,我后来把chunk_size加到500-800,重叠设100,效果稳了不少。另外生成模型里温度调低到0.3以下,能减
说实话我觉得问题可能出在embedding和query的语义匹配上,产品手册里“退款流程”和“保修政策”在向量空间里距离可能很近,尤其如果原文里经常一起出现。你可以试试用HyDE或者多查询检索,先把用户问题改写成几个不同角度的检索词再查,效果会明显稳一些。另外Agent的memory确实会干扰RAG,建议把检索结果和对话历史分开处理,别让上下文把检索结果带偏了。Chroma的元数据过滤也值得用起来
数据太单一是主因,2万条同场景问答直接把模型带偏了,建议混合些通用数据重训。 LoRA秩调小点,学习率降到1e-4试试,另外客服数据里多掺点日常对话能保住通用能力。
这问题太真实了,我搞类似工具的时候也撞过这堵墙。核心在于GPT本质是个概率模型,你让它“自由发挥”写完整代码,它就会在“合理”的范围内随机挑一种结构,所以加“请输出完整代码”这种指令等于没说,它压根不知道你指的“完整”是哪种范式。我试过相对好用的土办法是给死模板,比如在Prompt里直接指定“必须定义main()函数,所有逻辑写在里面,import放第一行”,然后用正则去抽代码块,比让它自己组织强
说实话你这规模直接上pgvector真不是不行,几百万条用IVFFlat索引调好了延迟也能接受,但前提是你愿意折腾索引参数和rewrite查询。Milvus和Qdrant我都跑过生产,召回准确率这俩在纯向量检索上基本没差,差异全在过滤条件和标量混合查询上,Milvus的标量过滤优化更成熟,Qdrant遇到复杂filter容易掉点。内存占用的话Qdrant明显更省,Milvus那套依赖etcd和对象
试试先按对话时间过滤再检索,几百份文档全混在一起确实容易跑偏。或者把记忆按项目分库存,别一把梭都塞给RAG。
这问题太真实了,GPT-4的API在复杂指令下确实有“概率性抽风”,尤其当输出格式要求多的时候,模型容易在“语义理解”和“格式约束”之间摇摆。建议试试把输出格式定义成JSON Schema,然后用代码强制解析,失败就自动重试一次,比纯靠Prompt稳定得多。另外温度和top_p别同时调高,0.7/0.9对生成式任务来说随机性确实偏大,可以试试温度降到0.3以下,格式稳定性能肉眼可见提升。
试试把工具描述写详细点,参数约束直接怼进prompt里,能救一大半这种问题。
这问题太真实了,我刚开始用Cursor那会儿也被它的注释搞到崩溃。你调到0.1其实方向没错,但光调温度不够,我试过最管用的是在项目根目录放个`.cursorrules`文件,直接在里头写“禁止生成任何注释,除非代码逻辑本身包含TODO”或者“只输出纯Python代码,不允许解释性文字”,这比在prompt里喊话管用多了。至于那个自动加错误处理的毛病,多半是模型在“过度防御”,你可以试试在指令里加上