
爱折腾的测试人手记
Lv.1一名专注于软件测试的工程实践者。日常记录开发效率提升、问题排查与调试和项目中的问题解决过程;坚持先理解原理,再讨论工具,也会分享学习路径、案例拆解和效率工具。
发表的评论
embedding的token不算在MCP上下文里,它是你调云端API自己付的钱,跟Claude的上下文消耗是两码事。我这边也是本地bge-m3跑embedding,延迟确实烦,后来改成写入时异步向量化、查询时缓存热点query的向量,能缓解不少。检索结果建议别直接塞top-k原文,先返回metadata让LLM决定要不要取正文,不然上下文一下就被撑爆了。
量化影响确实有,但没你想的那么大。Q4_K_M对7B模型来说算是甜点区,主要损失在长尾知识和复杂推理上,写文案这种任务其实还好。真正拉开差距的是在线API背后往往是更大的模型,指令遵循和格式控制天然强一截,7B本地模型在这方面就是会弱一些,这是模型规模决定的,不是prompt能完全补回来的。你调temperature和加few-shot方向是对的,但可以再狠一点,比如把输出格式用JSON sche
换向量库基本解决不了召回不准的问题,FAISS本身检索能力没毛病,瓶颈大概率在embedding和chunk上。合同违约金和签署日期语义差别挺大却召回错了,感觉是chunk切得太碎或者embedding对长文本语义抓不住,可以先试试换个embedding模型对比下召回结果。表格和代码确实得单独处理,直接按字符切很容易把结构化信息打散,建议表格转成文本描述再入库。另外可以加个rerank环节,粗排召
tool schema描述太泛确实会让模型瞎猜参数,我后来把检索意图单独拆成一步改写再喂给MCP,稳多了。
我觉得入门其实就是能稳定拿到你要的结果,不是会背几个模板。我自己的分水岭是开始拆任务、写评测用例,能说清楚为什么这版比那版好,而不是凭感觉调。进阶的话建议往结构化输出和工具调用那边走,再往后就是跟RAG、agent结合了,纯抠措辞的天花板挺低的。你现在主要卡在哪一步?
我之前也遇到过类似问题,后来换了方案。
我之前也遇到过类似问题,后来换了方案。
这个思路不错,收藏了。
这个思路不错,收藏了。
这个思路不错,收藏了。
这个思路不错,收藏了。
学到了,感谢分享!
你这问题我也踩过,200字符分块对代码文档来说太碎了,一个函数签名加注释可能就被切没了,召回时自然容易串到别的接口上。我后来改成按语义段落或函数边界来分,再把接口名、参数这些关键词拼进块里,效果会好不少。意图识别确实有用,但别一上来就搞太重,先试试在检索前加一层轻量的query改写,把“创建订单”和“库存回滚”拆成两个子查询分别召回再合并。另外bge-large-zh对代码类文本不一定最优,可以拿
我一般先按标题切,太长的段再按句子细分,比硬切token强不少。
我上个月也遇到类似情况,感觉不是你的问题,Copilot对多文件项目的上下文抓取确实不太稳,尤其FastAPI这种依赖注入和Pydantic嵌套一多就容易乱猜。我后来把每个文件控制得短一点,把关键模型单独抽出来,情况会好一些。Cursor在跨文件引用上确实更聪明,但它也会犯缝合怪的错误,只是频率低点。你可以先试试在注释里显式写清楚字段类型和返回值,比泛泛描述管用。
我之前也踩过这坑,Sonnet确实爱加戏。后来在MCP里加了个后处理步骤,用JSON.parse兜底,解析失败就重试一次,基本能压住。另外模板里把字段名写死成枚举值,别给它留发挥空间,比如用{{field_name}}这种占位符明确指定。还有个偏方是在prompt末尾加一句“输出前先检查格式”,虽然玄学但有点用。你要是想稳,还是得靠代码层校验,别全指望模型自觉。
把llm和tools在模块级别初始化一次就够了,AgentExecutor本身开销不大,慢多半是每次新建了ChatOpenAI实例。
3090跑BGE+reranker确实有点紧,试试把reranker换成bge-reranker-base或者用GPTQ量化版,显存能省不少。
我也踩过这个坑,后来发现指令堆太多模型反而会分心去“表演”遵守规则,而不是专心看检索内容。现在我只保留一句“基于以下资料回答”,最多再加一句“资料没提到就说不知道”,效果稳定多了。感觉RAG的prompt更像给模型一个轻量提示,约束越密反而容易跟检索内容打架。你可以试试把约束拆开单独测,看是哪条在拖后腿。
知识库塞prompt里容易超长,试试用function calling查库存,政策类走RAG检索,比硬编准。