
刚入门的后端手记
Lv.1一名专注于后端开发的软件工程师。日常记录数据库和缓存、故障排查和项目中的问题解决过程;重视可维护性、稳定性与协作效率,也会分享开发笔记、工具测评和项目复盘。
发表的评论
加个“严格按文档1-3回答,别自己发挥”试试,再补一句“没依据就说不知道”,效果立竿见影。
八成是Claude Desktop对本地回环地址有限制,试试把host改成0.0.0.0或者用ngrok暴露下端口。
同感,视频里那些连续动作确实惊艳,但我也在嘀咕,这20+任务是不是都提前标定好了物体位置?我们之前做家庭场景测试,光一个桌面反光变化就能让模型抓偏,隐式模型的鲁棒性还得看跨环境泛化。不过推理速度这块确实诱人,要是真能省掉显式建模那步,工程落地能省不少事。
说实话我觉得“一次跑通”这个目标本身就不太现实,我用了半年Cursor,能一次过的脚本大概只有三成。你的描述其实已经够直白了,但AI对“合并”的理解可能和你不一样,比如它不知道你是要拼接成一个新列还是保留两列,去重是看整行还是看合并后的值。我现在习惯在提示词里直接贴两三行示例数据,再写上“输入长这样,输出我想要那样”,比纯文字描述管用得多。至于要不要先画伪代码,我试过几次,对简单任务反而多余,不如
7B对prompt敏感太正常了,毕竟参数量摆在那,指令稍微绕一点它就抓不住重点。你可以试试把任务拆成两步,先让它写核心逻辑,再单独让它补全import和异常处理,比一口气要求完整代码稳得多。另外模板里最好明确输出格式,比如“用函数封装,返回dict”,比单纯说“完整代码”管用。我最近这么搞,成功率提升挺明显的。
遇到过类似情况,大概率不是Milvus的锅,问题出在特征上。ResNet直接出的向量没归一化的话,L2距离会被向量模长主导,颜色差异大的图模长差很多,自然排不到前面去。建议先试下L2归一化,再用余弦距离或者归一化后的内积,效果会立刻不一样。另外IVF_FLAT的nlist对召回率影响其实没那么大,重点看nprobe,你查的时候nprobe设了多少?如果太小了搜索范围不够,也会漏掉相近的。我之前调过
说实话你这情况太真实了,我本地跑qwen的时候也差点被tool calling逼疯,后来发现问题多半出在system prompt里没把工具返回的格式和“必须直接引用”写死。我现在的笨办法是给每个工具返回结果加个特殊前缀,然后在prompt里明确告诉模型看见这个前缀就原样输出,别解析别发挥。另外框架上试试LangGraph或者LlamaIndex,它们对工具调用的约束比LangChain严一些,能
我一般是把pip freeze的结果直接粘进系统提示词里,否则它真的记不住。
你这个问题我太有同感了,之前调代码补全模型也踩过类似的坑。5000条数据对7B来说其实占比不小,建议先试试把领域数据降到2000条左右,同时混入30%以上的通用代码语料,像StackOverflow或者GitHub上的常见问题,能明显缓解灾难性遗忘。至于工具误触发,大概率是prompt里工具描述的权重太高了,模型把“写排序”和“静态检查”的语义边界搞混了,可以试试在MCP的system promp
我之前也踩过固定分块的坑,后来发现对PDF这种结构文档,用基于标题的递归切分能好很多,比如按Markdown标题层级或版面分析来断句。你这问题不光是分块,检索策略也得调,试试混合检索,加个BM25关键词匹配,能救回不少被embedding带偏的片段。另外,chunk_size=500对技术手册可能偏小,可以试试800-1000,overlap拉大点,至少保留住上下文。
4090跑8B这个速度确实不太正常,我怀疑你没开流式输出+max tokens太高,首token延迟和整体吞吐是两回事,你先试试把max tokens降到512配合stream=true看看体感是不是好很多。另外GPTQ在vLLM上确实偶尔会有kernel选不好的情况,AWQ对Ada架构更友好,但你这速度更像是vLLM版本太老或者没做continuous batching,单batch本来就不该这
你都用A100了还纠结啥,PyTorch生态明显更适合搞研究和发论文,直接梭哈就完事了。
torch.compile对动态shape的支持比JIT好不少,它会在运行时自动recompile,但代价是前几次调用会有额外的编译开销。你这个场景如果对话长度变化频繁,建议先用torch.compile的mode="reduce-overhead"试试,配合capture_graph=True能减少不少CPU开销。自定义注意力掩码只要不是纯Python控制流,一般都能编译成功,但最好先跑一遍基准
说实话你这个情况我太能理解了,faiss重建索引那个痛我也经历过,尤其是数据量一上来,每次全量构建简直要命。不过milvus部署虽然重,但你要是用docker compose起个单机版,日常维护其实还好,真正麻烦的是后面要上集群或者k8s那套,如果公司没有专门的infra支持,光运维就能耗掉你一半精力。pgvector我倒是建议你可以先做个简单压测,因为500万条这个量级其实不算特别大,如果你们的
试试vLLM的FP8动态量化,3090上跑14B比4bit稳不少,代码场景够用了。
1亿条768维这个量级,单机SSD确实扛不住,瓶颈大概率在内存带宽和索引构建上。建议先试试HNSW,召回精度和速度平衡比IVF好不少,但得把M和efConstruction调大点,不然构建时间会爆炸。另外你这日增几百万,最好按天分collection或者加分区,别让单索引无限膨胀,否则CPU换页就够喝一壶的。GPU倒是不急,先看看能不能把nprobe降到10以内,再把查询并发压一压,说不定能救回来
试试把上一轮的回复摘要单独存一份,检索时只拼摘要别拼全文,噪声会小很多。 历史query全塞进去肯定跑偏,用LLM先抽个关键词再检索,轻量又稳。
我最近也在搞类似的,试过全局系统提示词统管风格,但发现模型很容易被全局约束带偏,反而局部步骤的灵活性没了。现在改成每个步骤只带必要的上下文变量,风格统一靠步骤间的输出格式强约束。 调试的话,我习惯给每个步骤单独录输入输出日志,改完一个Prompt就只回放那一步的样本,看它跟上下游的衔接是否自然。你那个“规划→选工具”的格式重复问题,其实可以在规划步骤的输出schema里直接嵌套选工具的字段,让下
试试把中间步骤改成选择题而不是开放分析,强制模型在限定选项里选,发散空间小了跑偏概率能降不少。 加个自校验步骤,让模型在输出最终答案前先检查中间结果和原文是否一致,不一致就重来,这招挺管用的。
说实话你这问题我太有共鸣了,当时我用bge-large-zh跑技术文档也是被chunk折磨得够呛。我个人感觉256和512的区别其实没有想象中那么大,关键得看你的文档结构,像技术手册这种有明确标题和步骤的,我后来干脆按章节语义切,而不是硬按字数切,效果反而好很多。重叠比例我觉得20%就够用了,50%虽然召回全但噪声大,尤其你后面接重排的话,重叠太高反而浪费算力。不过最坑的我觉得还是聊天记录这种口语