
持续学习的数据人
Lv.1一名专注于软件开发的程序员。日常记录性能优化、问题排查与调试和项目中的问题解决过程;喜欢从问题、方案到复盘形成完整闭环,也会分享技术趋势观察与个人实践结论。
发表的评论
16G的MacBook跑本地模型确实有点吃力,我之前试过Ollama配Continue,7B左右的模型勉强能用但补全延迟挺明显的。后来干脆用Aider接DeepSeek的API,便宜而且上下文处理比Continue靠谱多了,配置也就改个yml的事。你要是坚持本地的话可以试试Qwen2.5-Coder的量化版,但得做好心理准备,体验跟云端还是有差距。
我也踩过这坑,后来干脆把检索和生成封成一个工具,省得顺序乱掉。
我之前也这样,后来用git把prompt文件管起来了,每次改动写清楚为什么改,跑完eval再commit,回滚特别方便。评估的话建议先攒一个几十条的测试集,固定下来,每次改完都跑一遍看通过率,别只看几个case。另外你十几条规则加few-shot,模型容易顾此失彼,试试把规则分组或者精简下,有时候少即是多。
模型别每次请求都重载,搞个全局单例常驻显存就稳了,MCP那边很容易踩这坑。
7B模型做十来个字段的抽取确实容易顾此失彼,长文本后半段掉字段基本是注意力衰减导致的。我们项目里除了prompt,还会按字段分批抽取,比如先抽甲乙方和金额,再单独跑一轮抽日期和条款,比一次性全塞进去稳不少。另外JSON模式约束建议配合schema校验做重试,别指望模型一次就完美。系统提示词我一般放角色和全局规则,用户提示词放具体字段定义和示例,分开后调试起来清楚很多。
我之前也踩过这个坑,512确实太碎了,尤其是PDF里表格和跨页段落多的时候。后来我改成按语义切分,用LangChain的RecursiveCharacterTextSplitter配合段落分隔符,chunk设800左右、overlap留150,效果比硬切好不少。判断语义完整其实可以看切出来的块是不是以完整句子结尾,或者用个小模型给chunk打个连贯性分。不过合同和技术文档确实得区别对待,前者最好按
我之前也卡在这,后来发现瓶颈往往不在生成模型,而是检索那一步。chunk切得太碎或者太大都影响召回,可以试试按语义切分再加个rerank,效果提升挺明显。另外7B模型对prompt格式很敏感,把上下文和问题用明确的分隔符隔开,能减少它瞎编的情况。
FastMCP 默认走 stdio,Claude Desktop 拉子进程时工作目录和你在终端里跑完全不一样,相对路径、venv 里的 python 都可能找不到。config 里 command 直接写你 venv 的 python 绝对路径,args 里再带上 server.py 的绝对路径试试。日志的话把 stderr 重定向到文件,或者临时在 server 里加 logging 到文件,比
别急着怀疑框架,先拆细任务边界,模型选不对往往是选项太模糊。
几十万到百万这个量级,其实ES的knn完全扛得住,真正让人难受的不是检索本身,而是向量字段的存储和内存开销。我之前用ES做过一个百万级向量的项目,光是dense_vector字段的堆外内存占用就比想象中夸张,后来调了m参数和ef_construction才勉强稳住。向量数据库的差异主要在过滤这块,ES的knn是post-filter,你按用户ID过滤之后可能召回数量直接不够,而milvus这类支持
你这情况我大概能理解,但有个点可能被忽略了:GPTQ和AWQ量化的是合并后的模型权重,如果你先用LoRA微调再合并再量化,LoRA那部分信息其实已经被融进权重里了,量化过程确实会带来精度损失,但不至于把微调成果全丢掉,除非你量化参数选得太激进。12GB占用对于4bit的7B模型来说偏高了,正常应该8GB左右,你检查下是不是加载时没真正走量化kernel,或者显存被其他东西占了。另外4090跑7B
我也有同感,现在写代码先想AI会怎么补全,自己反而懒得理逻辑了。
非侵入式确实省心,不过运行时注入会不会有性能开销?想试试看。
500的chunk对技术文档确实偏碎了,安装步骤和超时排查经常被切到不同块里,检索时容易只捞到半截语义。你可以先试试把chunk_size提到800到1000,overlap保持150左右,再看embedding换成bge-m3或者text-embedding-3-large这种对中文技术语料更稳的。reranker基本是刚需,检索top20再重排到top5,召回质量会明显不一样。另外查一下PDF
4090跑70B基本别想了,量化到2bit也塞不下,上下文一开直接炸。7B用GGUF的Q4_K_M挺稳的,代码补全够用,文档总结质量也就那样,别期望太高。vLLM确实吃显存更狠,但吞吐快,适合并发场景,单卡自己玩还是llama.cpp省心。4bit我实测写代码没啥大毛病,就是长文总结偶尔会漏细节,能接受就上。
改业务逻辑别让AI自由发挥,先让它把边界条件和状态迁移列出来,你确认完再写代码。
两个few-shot有点少,关键字段建议直接在prompt里硬性约束,光靠例子模型容易飘。
这个现象其实挺常见的,不是你哪里配错了。vLLM默认会按gpu_memory_utilization把绝大部分显存拿来做KV cache预分配,你给0.8它也会先把这部分池子占住,再加上权重本身,24G确实容易爆。Transformers那边是懒加载KV cache,用到多少占多少,所以看起来省。你可以先试试把max_model_len压到4096甚至2048,KV cache是按这个长度乘以并发
几万到几十万这个量级,Chroma其实完全能扛住,我拿它跑过二十多万条chunk的单机检索,延迟也就几十毫秒。Milvus那套etcd加MinIO的部署对个人项目确实太重了,除非你后面要上分布式或者千万级数据,不然真没必要折腾。建议先用Chroma把流程跑通,它有个PersistentClient直接落盘,省心得很。等真到性能瓶颈了再迁Milvus,接口抽象做好的话切换成本也不高。
这个坑我上个月刚踩过,GPT-4o-mini在多工具场景下的选择确实不太稳。我的经验是,光靠system prompt写规则效果有限,模型该选错还是选错,尤其是工具功能有重叠的时候。后来我把每个tool的description改成了“什么时候用”而不是“这个工具是什么”,比如搜索那个就明确写“当问题涉及实时数据、新闻、财报等需要联网查询时使用”,计算器写“仅用于纯数学运算,不涉及外部数据获取”,这