
持续迭代创业成长记
Lv.1持续迭代认知,也持续验证实践结果。当前重点关注独立开发与创业,通过项目复盘、代码实现与工程实践持续提升能力;重视可维护性、稳定性与协作效率,并把过程整理成可复用的学习记录。
发表的评论
写得挺好,建议补充一些性能数据。
其实MCP客户端就那几个握手步骤,自己用requests手撸一遍初始化+工具列表完全够,不用上Agent框架。
我最近也在MCP里搞记忆层,踩过整段压缩的坑——信息丢太多,召回时经常答非所问。我现在的做法是每条消息单独存向量,同时用session_id和topic_tag做metadata,召回时先按话题分组再取最近几轮。你说的A切B再切回A,可以额外存一个summary向量作为话题锚点,切回时先用它命中相关片段再拉细节。不过Pinecone的过滤确实容易乱,建议试试Qdrant或Weaviate,payl
这事我太有同感了,之前也拿AI写过几个采集脚本,基础逻辑确实秒出,但一碰到反爬就开始反复打转。我觉得问题不全在prompt上,而是反爬这事儿本身就是动态对抗,AI拿不到你本地的实际响应,只能靠你描述,信息差太大了。比如403到底是UA被识别、缺Referer、还是IP被限,你不贴具体请求和响应,它只能瞎猜着改。后来我的做法是把浏览器F12里的完整请求头、cookie、甚至curl命令直接粘给它,让
换模型确实差挺多,768和1536维度影响没那么大,主要还是语义理解能力。建议先小批量对比再决定要不要全量重跑。
我们之前也踩过这个坑,后来强制切到function calling加严格schema,参数幻觉少了一大半,但模型偶尔还是会往嵌套对象里塞不存在的key。现在是在工具层加了个轻量校验,解析失败就把错误信息拼回对话里让它重试,一般两轮内能修好。不过重试次数得设上限,不然它会陷进去一直编。
loss降不代表模型学对了,你这情况大概率是训练时用了padding但推理时没对齐,或者chat template没套对。Llama3的special token和对话格式挺敏感的,QLoRA微调时如果padding side或者attention mask没处理好,模型就会学到一堆无效token。建议先拿训练集里的一条样本直接推理,看输出是不是也乱,如果是那就是数据格式或模板的问题。另外2e-4
这个坑我也踩过,MCP本身没规定Tool必须把原始数据一股脑塞回上下文,关键还是Tool自己要做裁剪。我现在的做法是让Tool默认只返回前N条加一个聚合摘要,同时把完整结果落到临时存储里,返回一个引用ID给Agent。Agent需要细节时再通过另一个Tool按ID分页拉取,这样Token就不会炸。分页返回也是个思路,但得注意别让LLM自己循环调太多次,最好在Tool层控制好每次返回的粒度。
试试用polygraphy看下有没有子图被切回CPU,有时候profiler显示CUDA但实际有隐藏的fallback。
50万条768维用IVF_FLAT确实有点吃力,单机8核16G这个配置主要还是内存和CPU瓶颈。你先别急着上K8s,试试换成HNSW索引,或者IVF_PQ做量化压缩,查询延迟能降不少。50万数据量单机其实完全能扛,我们这边百万级也就16核32G跑着,关键是索引和参数调优。真到了千万级再考虑分布式,K8s运维成本不低,别为了这点量折腾自己。
我一般让每个Agent只管自己那块,中间靠消息队列传,状态别硬塞一个dict里。
API文档这种结构化内容,500字切块基本等于把方法签名和上下文拆散了吧,检索出来经常驴唇不对马嘴。我之前也踩过类似的坑,后来改成按类或按方法粒度切,再在chunk里带上类名和包路径做上下文,召回质量明显好一截。另外几万条方法的量级,纯向量检索top5很容易被相似度稀释,可以试试加一层BM25混合检索,或者先把范围缩到相关类再在类内检索方法。你们文档里有示例代码吗?代码片段对embedding的干
这个坑我也踩过,后来发现光靠Prompt真压不住,模型天生就爱“礼貌性废话”。我一般是在调用参数里加response_format={“type”: “json_object”},GPT-4系列支持这个,能强制它吐纯JSON。如果还不行,就在Prompt里给个极简示例,比如直接写“输出示例:{“name”: “xx”}”,别写太多废话,越啰嗦它越容易自由发挥。
建议用LoRA微调,保留底座权重,影响很小。数据集先拿bad case人工改,再用大模型扩量。
说实话几百万条这量级其实还没到非得上K8s的程度,Milvus单机装Docker就能跑,先别被运维吓退。Pinecone确实省心但长期下来账单挺肉疼的,我司之前试过,数据涨了之后费用直接翻倍。中文场景主要看分词和embedding模型跟库的配合,Milvus对中文检索支持挺稳的,召回率调参空间也大。建议你先拿真实数据各跑个benchmark,延迟和召回比啥都靠谱。
我猜问题不在模板本身,而是模板让模型把“不知道”当成了一种默认退路。你那句“如果信息不足就说不知道”其实挺危险的,模型一碰到检索片段里没直接写“张三去年销售额XX万”这种字眼,就触发不回答的预设了。我之前也踩过类似的坑,后来把提示词改成“请严格根据上下文回复,若上下文未提及具体数值,请提取最接近的相关信息并说明”就好多了。另外你检查一下检索回来的片段里,是不是压根没把张三那部分文档切进去?有时候是
我之前也踩过这坑,3090跑7B半精度理论够用,但MCP的KV cache分配策略确实激进,跟transformers那套差距不小。你可以试试把MCP_GPU_MEM_POOL设成显存的80%,再强制开启paged_attention,碎片能缓解不少。另外并发2-3个就崩,多半是prefill阶段峰值炸了,别光调batch,得把max_num_seqs压到1看看。还有个小技巧,用torch.cud
说实话这锅真不全在prompt上,AI对反爬的理解基本停留在“加个header”这种表面功夫,遇到动态token或者JS渲染的站点,它没法像人一样去断点调试抓包分析。我试过把具体报错和返回的HTML片段直接贴给它,让它根据实际响应改代码,比单纯描述需求管用得多。另外建议你别让它一步到位,拆成“先拿到token再请求数据”这种小步骤,成功率能高不少。
2e-4确实偏高了,LoRA微调中文数据容易灾难性遗忘,降到5e-5试试,保留部分通用语料混合训练。
不是模型问题,你top20里相关文档太靠后了,rerank救不回来,先把chunk切小点试试。 开源reranker对长文本确实吃力,但300字不至于,建议先看看检索阶段是不是漏了。