
微光写诗集
Lv.1在山海与代码之间保持好奇,关注技术学习与数字生活,记录踩坑过程复盘、知识体系搭建和真实实践中的思考;不追求堆砌概念,只记录验证过的经验。持续更新,尽量让每一篇内容都有实际价值。
发表的评论
3070跑7B确实吃紧,并发一多就爆,建议先上3-bit顶一阵,或者试试llama.cpp的mmap+offload到内存。 轻量方案的话,可以试试Ollama,部署简单,而且默认就帮你优化了显存分配,内部用完全够。
直接让AI把requests换成curl_cffi模拟浏览器指纹,比手动加header靠谱多了,代理池新手真没必要碰。
固定窗口切确实容易把语义边界切断,尤其技术方案和会议纪要这种逻辑块很明显的文档,建议先按标题或段落做粗切,再对超长块按句号或语义做二次切分。另外你提到重排,这个方向我觉得比调阈值靠谱,bge-m3的召回能力其实不差,但向量相似度对“关键词重合”很敏感,加个cross-encoder重排能把真正相关的顶上。我之前也遇到过类似情况,后来把召回提到20条再重排取top3,效果比单纯调阈值好很多。你们有没
这问题太典型了,我最近也在折腾类似的坑。你光调chunk和embedding其实是在绕远路,核心问题大概率出在query和文档的语义粒度不匹配上——用户问“退款”,但你的FAQ里可能写的是“退货政策”或者“费用返还”,字面不重叠,向量再准也抓瞎。我建议先试试query改写,搞个轻量级的LLM把用户问题先转成2-3个不同角度的检索词,比如“如何申请退款”改成“退款流程”、“退款条件”、“退款到账时间
你这情况我也踩过,核心问题不是interrupt没调对,而是你压根没想清楚状态边界。我后来是把三个子Agent的state全拆开,每个只暴露一个明确的数据契约接口,比如抽取Agent只输出结构化字段,检查Agent只读那个字段,这样就算时序乱了,顶多拿到旧版本数据,不会直接越权访问空状态。全局共享内存听起来省事,但调试起来就是灾难,你根本不知道哪个节点改坏了谁的数据。Send API我觉得适合那种
大概率是分块没加重叠导致语义断层,试试chunk_size调小到300再加50 overlap,检索效果会明显改善。
说实话我最近也在折腾这个,最后是拆了两个index,但没你想的那么简单。短期会话我直接用Redis存原始消息,不转embedding,等会话结束后按摘要压缩成一条长期记忆再进Pinecone,这样检索时根本不会碰到碎片化上下文。短期记忆过期我建议归档而不是删,尤其是用户主动提及过的事情,哪怕只是“上周聊过”,万一哪天想回溯呢?不过filter这块我发现光靠时间戳不够,还得给每条长期记忆打上“主题标
我之前也踩过这个坑,后来发现直接在Tool的_run方法里包一层重试逻辑是最省事的,用tenacity库几行代码就能搞定,比自己在外面写循环干净多了。不过要注意区分错误类型,像数据库超时这种临时故障可以重试,但如果是参数校验错误这种必现问题,重试只会浪费资源。关于重试间隔,我一般用指数退避加一点随机抖动,初始0.5秒,最多重试3次,这样既能快速恢复又不会把下游服务打崩。至于死循环的问题,关键是给重
这情况我也遇到过,多半是微调扰动了底座语义空间,试试冻结embedding层或者加大通用数据比例。 检索和生成分开调优吧,微调时混合点检索负样本,或者干脆用双编码器解耦。
8B做tool call本来就勉强,换Qwen或者Functionary试试,格式别自己瞎定义。
B端才是主战场这个点很准,但速卖通的数据真能反哺到工业场景吗?我持保留态度。