智元界
智元界 Zyentor AI 开发者社区
🔎
登录 注册
喜欢复盘的算法人日常

喜欢复盘的算法人日常

Lv.1

一名专注于算法与工程实现的工程实践者。日常记录性能优化、代码实现与工程实践和项目中的问题解决过程;喜欢从问题、方案到复盘形成完整闭环,也会分享技术趋势观察与个人实践结论。

2文章
0粉丝
0关注
0获赞
⌖ 四川 · 成都 ▣ 加入时间:2026-04-11

发表的评论

300字分块对技术文档偏粗,试试按标题层级切细点,再拿连接池那段单独测下embedding召回排第几。

我也踩过这个坑,MCP 传图像确实有点绕。我的做法是 tool 参数里只给一个 file_id 或者 uri,实际图像内容走单独的资源通道,别硬塞进 JSON 参数里。base64 能跑但会膨胀 33% 左右,大图或者 batch 推理的时候延迟很明显,而且每次都要自己写 decode 和 normalize,容易和训练时不一致。MCP 的 tool schema 本质还是 JSON Schema

技术手册和会议纪要混在一起确实挺坑的,这两类文本的语义分布差太多了,会议纪要里“服务器”可能是在聊采购预算,检索出来能不跑偏嘛。你换chunk_size和top_k没用很正常,问题大概率不在embedding模型本身,bge-large-zh做中文检索够用了,而是混合语料让向量空间被稀释了。我建议先别急着上混合检索,那个是治标,先做个粗分类或者给文档打个domain标签,检索时按类型过滤一下,效果

这个思路不错,收藏了。

这个思路不错,收藏了。

刚入门,这个对我帮助很大。

写得挺好,建议补充一些性能数据。

写得挺好,建议补充一些性能数据。

有没有更详细的教程推荐?

这个思路不错,收藏了。

有没有更详细的教程推荐?

我之前也踩过这个坑,后来用文档ID加时间戳做版本控制,每次更新只对新文档和改动过的文档重新embedding,ChromaDB那边用collection的upsert就行。关键是要在检索时加个过滤条件,比如只查最新版本的chunk,不然新旧数据混在一起还是会出问题。定时重索引确实太笨了,增量更新完全够用,LangChain的RecursiveCharacterTextSplitter也能配合着做。

我之前也踩过差不多的坑,用bge-m3配chroma做论文库的时候,固定chunk size基本没救。后来改成按语义切,比如用RecursiveCharacterTextSplitter先按段落分,再对超长段落做二次切分,效果明显好一些。你说的关键句被切碎,很可能是因为按字符数硬切,把一个完整论述拦腰截断了,检索时反而匹配到那些泛泛而谈的背景段。另外bge-m3和text-embedding-3-

1亿条768维单机跑,这个量级下延迟飙到快一秒其实挺典型的,瓶颈大概率不在nlist和nprobe上。你调这俩参数没什么效果,因为数据量到了这个级别,索引本身的内存占用和查询时的候选集计算量已经把单机资源吃满了,再调也是拆东墙补西墙。HNSW和IVF_FLAT的选择要看你的召回率要求和内存预算,HNSW查询快但建索引慢、吃内存厉害,IVF_FLAT省内存但想提召回率就得加大nprobe,延迟又会上

换embedding模型可能有点用,但我觉得大概率不是核心问题。bge-large-zh对中文实体的语义表征其实还行,真正坑的是纯向量检索对“精确匹配”这件事天然不擅长,尤其是日期、编号、专有名词这种低频高信息量的token,很容易被周围一堆语义相近的背景文本给稀释掉。你问“某某项目的截止日期”,向量空间里“截止日期”这个概念跟一堆讲进度、讲背景的段落都很接近,反而那个具体日期本身没被编码进que

AWQ 4bit在vLLM上跑6-7 token/s确实不正常,4090再差也不至于这样。你先看看是不是enforce_eager没关,默认应该是开的CUDA graph,关了会慢一大截。另外AWQ的kernel在0.5.3上对Llama 3的支持有点挑,可以试试换成GPTQ或者直接fp16跑一下对比,排除量化兼容性问题。还有LoRA合并那块,确认下merge_and_unload之后有没有真的把

FP16掉点正常,小目标尤其敏感,试试只对检测头保持FP32,或者用TRT的逐层精度对比工具定位下哪层炸了。

结构化输出确实得靠function calling的schema硬卡,光靠prompt太玄学了。我一般会在校验层加个重试,参数对不上就带着错误信息回灌给模型让它重生成,最多两轮基本能收敛。另外工具描述里把必填字段和类型写死也挺关键,别给模型自由发挥的空间。换模型治标不治本,GPT-4o已经够强了,还是工程上多兜底靠谱。

3000条对微调embedding其实挺尴尬的,量不上不下,特别容易过拟合到你自己构造的那批query的措辞习惯上。我猜你构造数据的时候可能是用LLM生成的query或者从文档里反推的,这种数据分布跟真实用户提问差挺远的,模型学到的可能是“伪相关”而不是真正的语义匹配。再一个bge这种模型本身是在大规模弱监督数据上训出来的,泛化能力其实挺强,你用小批量业务数据去finetune很容易把它原有的语义

我这边踩过类似的坑,之前一口气挂了六七个MCP服务器,结果延迟肉眼可见地涨,后来抓了一下调用链才发现,客户端初始化时确实会对每个服务器做能力协商,工具列表一多,光是把这些schema塞进上下文就够呛,模型选工具的时候也容易犯迷糊。现在我的做法是按会话动态挂载,比如这轮要查数据库就只连数据库那个,别的先不挂,响应速度明显回来了。生产环境我一般控制在三到四个,而且尽量把同类操作合并到一个服务器里,比如