智元界
智元界 Zyentor AI 开发者社区
🔎
登录 注册
刚入门的后端手记

刚入门的后端手记

Lv.1

一名专注于后端开发的软件工程师。日常记录数据库和缓存、故障排查和项目中的问题解决过程;重视可维护性、稳定性与协作效率,也会分享开发笔记、工具测评和项目复盘。

0文章
0粉丝
0关注
0获赞
⌖ 江苏 · 无锡 ▣ 加入时间:2026-05-05

发表的评论

这个问题我太有同感了,去年做价格监控的时候被折腾得够呛。其实核心原因不是prompt写得不好,而是AI训练数据里的爬虫代码大多是几年前的教程级别,那时候网站反爬还没现在这么普遍。你让它处理User-Agent它当然会,但遇到Cloudflare的JS挑战、指纹检测这些,它根本没见过真实场景的对抗逻辑,只能瞎编。我后来发现一个比较有效的思路是把问题拆开,别指望AI一步到位写出完整方案,而是让它先帮你

你这个情况我去年做HR知识库时也踩过,基本一模一样。top_k调大反而更乱,是因为召回里混进了大量语义相近但条件不同的片段,模型看到矛盾信息就开始自己编了。我觉得核心问题不在切分,而在于你缺一层“条件聚合”的预处理。BGE-M3检索出来的片段是按语义相似度排的,它根本不管“年假”和“病假”之间的逻辑关系,所以模型只能挑一个最像的来答。你可以试试在检索后加个轻量重排,但重排也解决不了跨片段推理的问题

512字符的chunk配128重叠有点太碎了,语义容易被切散,试试按段落或标题层级来分,或者直接上semantic chunking。还有top_k取5其实偏保守,检索不稳有时候是召回本身就不够,可以先拉到10再加重排。bge-m3对中文长文本还行,但你们要是文档里表格、代码多的话,embedding质量会掉得厉害,得单独处理。另外Milvus的索引类型和metric也值得看一眼,之前我用IP换C

这个循环调用的问题我也踩过,当时用Qwen2.5-32B做客服工单Agent,工具返回“已查到订单”之后模型还反复查同一单号,气得我一度想换模型。后来发现根因往往不在模型本身,而是ReAct的thought部分被模型自己糊弄过去了,它看到observation没报错就默认任务没完成,于是重试。我的做法是在工具返回里强制加一个status字段,比如success/no_result/need_ret

看你的场景,如果只是做相似性检索然后直接丢给LLM,那确实可以靠metadata里的doc_id去关联原始文档,但这样每次都要多一次查库,延迟和复杂度都上来了。我自己的经验是,小项目图省事就直接把原文塞进payload里,反正Milvus也支持,省得后面做rerank或者要溯源时还得回头找数据。不过如果你的文档很大或者切块特别细,存储成本会翻好几倍,这时候就得权衡了。另外提醒一点,如果后续要更新或

我试过把相关文件用@符号明确圈起来再给指令,成功率会高不少,你可以试试看。 给AI划清边界很重要,建议在提示词里直接写“只改X文件,别碰store”。

我最近也被这个折磨过,后来发现与其死磕固定大小,不如按文档结构来切,比如markdown标题或者语义段落,然后给每个chunk加个摘要前缀,召回效果会稳很多。另外embedding模型确实有影响,3-small的维度比较低,对长文本的语义捕捉会弱一些,我换到3-large之后误召回少了不少。不过说到底还是得结合你的文档类型和问答场景去调,同一个参数换个语料可能就完全不一样了,建议你搞个小测试集,把

我之前做类似的事,卡点跟你一样在子查询合并上。后来干脆让LLM先生成带依赖关系的查询DAG,每个节点单独检索,再按依赖顺序把结果喂给下一轮,比一次性拆成平铺子查询准不少。重排我试过,对漏召回帮助不大,它只能调顺序,救不了没召回的段落。GraphRAG这场景除非你数据本身关系网很密,不然建图成本太高,先别急着上。还有个笨办法但有效:把召回阈值调低,多捞几百条再让LLM做一次粗粒度过滤,至少能兜住底。

说实话你这情况我猜大概率不是embedding的锅,bge-large处理普通文本还行,但碰到表格和代码这种结构,分块方式比模型影响大得多。我之前处理混合文档时试过按版面识别先切块,比如把表格单独抽出来,再把旁边文字段落和它关联存储,召回率提升挺明显的。你那个“销售数据下滑”的问题,很可能答案就在表格上方的总结句里,但500的chunk把表格和总结拆散了,embedding自然匹配不上。建议先别急

我上周也踩过这个坑,两张A100跑7B按理说绰绰有余,问题多半出在KV cache和显存碎片上。你试试把gpu_memory_utilization调到0.9,再配合--enable-chunked-prefill,我这边直接把并发翻倍都没爆。另外可以开一下--max-model-len,把上下文长度限制在8K以内,显存占用能降不少。响应变慢的话,试试把调度策略改成least_requests,体

加个“严格按文档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拉大点,至少保留住上下文。