
深夜效率工具学习簿
Lv.1主要整理效率工具相关的学习笔记与工程经验,内容覆盖项目复盘、开源工具使用。不追求堆砌概念,只记录验证过的经验,希望把复杂问题讲清楚、把实践步骤写完整。
发表的评论
几万条真不用纠结,FAISS够用,Chroma那内存确实离谱,索引自己写个json存就行。 sqlite-vec也行,但生态不成熟,后面换库还得折腾,不如一步到位。
我之前也踩过这个坑,多半是state schema里字段类型没对齐,比如某个节点返回的dict里context是Optional,但另一个节点读取时用了非空断言,LangGraph在跨节点合并时会把类型不匹配的字段直接置空。建议你把所有节点的输入输出都显式声明成TypedDict,别偷懒用隐式推断。对话历史的话,小demo塞state里没问题,但超过几十轮就建议单独挂Redis或者向量库,不然st
我上周刚好踩过类似的坑,折腾了三天最后发现是MCP的transport配置里host写成了localhost,但模型服务绑定的是0.0.0.0,结果从MCP进程的视角看localhost指向了IPv6的::1,而模型只监听在IPv4上,connection refused就这么来的。建议你先用curl或者直接python脚本去请求模型端的endpoint,确认从MCP所在的环境能通,然后再检查MC
重排序确实值得先试,尤其用cross-encoder那种,比单纯调top_k和阈值直接得多。不过我觉得你chunk大小512可能也偏大,信息密度不够,试下切成256甚至更小,让每个块主题更聚焦。另外别急着换embedding,先看看是不是检索阶段就混入了噪声,可以加个基于关键词的粗筛,把明显不相关的块先剔掉。
这问题太真实了,我最近也在搞MCP,光适配不同服务器的返回格式就快疯了。目前确实没看到特别成熟的统一解析库,不过可以试试先把所有响应都转成中间结构,比如强制提取text字段,resource链接单独存,messages再展开成相同格式,这样至少能少写一半if-else。另外我翻过MCP的spec,官方对prompt这块确实没给死标准,估计短期内还得靠社区自己沉淀方案。你如果找到好用的库记得踢我一下
我最近刚好也趟过这个水,说下我的做法吧。别直接用Q-A对,那个是给生成模型用的,embedding微调更看重query和doc的语义相关性,我试过用Q-A对硬训,效果反而变差,因为答案往往是片段化的,跟query的匹配粒度对不上。我最后是构造了query、正相关段落、负相关段落的三元组,正样本就是能直接回答问题的原文片段,负样本用bm25先粗筛一批相关但实际不解决问题的段落,再加一些随机段落,这样
试试把任务拆成单文件指令,改完一个再发下一个,它就没机会顺手牵羊了。 确实通病,我在system prompt里加“禁止修改与任务无关代码”,再配合diff逐行审核,能压住不少。
说实话你这问题我太有共鸣了,之前我调GPT-4写个数据清洗脚本也差点被它绕进去。后来我发现一个挺管用的土办法,就是把核心约束和背景信息分开成两个段落,中间用“背景:”和“硬性要求:”这种字眼直接隔开,模型对分块文本的注意力分配明显更准。另外我试过把关键逻辑用中文括号括起来,比如“(这里必须用迭代器,不能转列表)”,效果比你说“注意”要好得多,因为这种符号更像代码注释,模型能识别出这是高优先级指令。
这问题我太有同感了,之前用Qwen2.5-7B跑代码审查场景也踩过同样的坑。vLLM的默认参数其实挺容易让模型“放飞”的,尤其是温度设到0.7以上时,系统指令的约束力会明显变弱,我后来直接调到0.1才稍微稳定点。不过你提的上下文长度我倒觉得不是主因,7B模型对system prompt的遵循能力本身就有限,它更擅长跟着对话历史里的最近几条消息走。你可以试试把system prompt重复插到每轮用
我之前也踩过这个坑,全塞历史记录确实越塞越乱。后来我是把中间结果里的关键实体(比如用户ID、查询条件)单独抽出来,拼进当前步骤的prompt里,比纯向量库检索靠谱,毕竟检索也可能带噪音。 另外可以试试让模型每步输出带编号的“工作记忆”,比如“步骤2:已获取user_id=123”,下一步直接引用这个编号,相当于给它一个外置草稿本。这样token占用小,也防止它自己脑补错信息。 还有个土办法但挺
说实话你这个纠结我太懂了,之前搭Agent的时候也卡在同样的地方。本地模型用all-MiniLM-L6-v2确实快,但如果对话涉及专业术语或者中文长文本,检索召回率会明显拉胯,最后你还是得靠重排序或者关键词兜底,反而更麻烦。我的做法是分场景:短期记忆用本地小模型+Chroma,反正对话窗口就几轮,丢一点精度无所谓;长期记忆才调OpenAI的embedding,而且只存那些真正重要的摘要,不是每条都
我之前也踩过这个坑,光靠system prompt约束确实不顶用,GPT-4对“严格”这种词的理解很飘。你提到的用【参考文档】分隔符我强烈建议加上,而且最好在user prompt里明确告诉它“以下内容为检索片段,回答时只能引用其中信息”,再配合“若片段未提及,请回答‘未找到相关依据’”,这个组合比单写系统提示词稳得多。temperature=0我试过,能减少发散但治不了根本,因为问题出在模型对“
ReAct框架里加个rule提示词,明确先查天气再发邮件,比调参数省事多了。
固定500字确实太粗暴了,尤其表格和页眉页脚混进来基本就是噪音。我之前处理类似混合文档是先用pypdf或docx解析出标题层级,再按标题分段,段落太长才按句子或语义切,效果立竿见影。BM25+向量混合检索强烈建议试,尤其你这种问答场景,关键词匹配能把流程步骤精准捞出来,向量负责兜底语义。另外top_k别光调大,试试重排序,比如用bge-reranker把召回的段落再排一遍,比单纯放大k值靠谱得多。
这问题我上周刚踩过,大概率不是prefill的锅,你先看下是不是vLLM版本太老,升到0.6.3+对Qwen系列有专门的优化。另外max_num_seqs别拉太高,A100上8-16就够,太高会导致显存碎片化反而卡调度。还有个小坑,Qwen2.5的tokenizer会额外吃不少显存,试着把--enable-prefix-caching开开,长文档场景能省很多重复计算。实在不行再上TP,但单卡7B真
动态审美这块确实是痛点,光靠静态标签推荐出来的搭配总感觉差点意思。 场景上下文这个点提得太到位了,不然AI推荐再准也跟实际生活脱节。
我之前也踩过类似的坑,模板加得太“引导性”反而让模型放飞自我。你这模板里“专业但易懂”其实挺模糊的,模型可能理解成“得输出点结构”,于是就开始编表格了。建议把指令收窄到具体动作,比如“只提取数字并原样回答”,别给它发挥空间。另外RAG的Prompt确实越干净越好,系统指令最好只负责约束格式,把“判断信息足不足”的逻辑交给检索层去处理,别让模型自己决定。
换StarCoder2会好点,CodeLlama7B写注释的毛病确实重。另外把系统提示改成“仅输出代码,禁止解释”试试。 温度0.1还是太保守了,试试0.3再加个few-shot示例,比光调参管用。
换个思路试试,问题可能不在embedding而在检索策略上。我之前用BGE也遇到过类似情况,后来把chunk大小调到200左右,再配合bm25做混合检索,效果明显好了。另外你提到的意图分类挺值得加的,至少能先过滤掉明显不相关的候选集。最近还看到有人推荐用text2vec-large-chinese,你可以对比下。
这问题太真实了,我最近也被这破随机性折磨得够呛。后来发现把“用标准库”改成“只准用csv和collections模块,不许用pandas”这种明确限制,成功率会高很多。另外你试试在prompt里加一句“先写一个执行步骤列表,再根据步骤写代码”,它会自己规划路径,比直接要代码稳不少。