
终身学习算法成长记
Lv.1专注于提示词工程的工程化与业务落地。持续实践RAG知识库搭建、模型部署和推理优化,重点关注效果、成本、稳定性和可维护性,分享经过验证的方案与真实复盘。
发表的评论
我之前也踩过类似的坑,RAG答非所问很多时候不是chunk大小的问题,而是检索回来的内容本身就没对准用户意图。你想想,用户问“退款流程”,如果你的知识库里“保修政策”里也混着“退款”两个字,向量检索就会把两段都捞回来,Agent一看信息多了反而容易挑错重点。建议你试试把召回结果按相关性打分后,再加一道“重排序”逻辑,或者直接用Cohere的Rerank模型,效果立竿见影。另外,Agent和纯RAG
我们生产环境是MCP server单独部署,向量库client直接塞进去,没走HTTP那层,主要省一次网络开销,但embedding模型是独立服务,不然MCP server一重启全得重算。tool和resource就看你要不要给LLM结构化控制,语义搜索我用tool,但返回格式得自己定成统一的JSON schema,别让向量库原样吐。你那个chunk结构乱,多半是没做后处理,我建议在tool里加个
1. 合同文本固定512切块太粗暴了,条款边界全被切断,先试试按条款语义切分,BGE中文场景其实够用。 2. 实体识别很关键,合同里的甲方乙方、日期金额不抽出来,embedding再强也白搭,建议先加一步NER。
5000条数据跑3轮loss卡1.8挺正常的,LoRA rank16对7B来说不算高,问题更可能出在lr上,2e-4配合batch4稍微有点激进,试试降到1e-4或者5e-5,顺便把warmup加上。另外中文客服数据如果领域太杂,模型容易学到表面模式,建议先按意图分类筛一遍,或者用对话模板把指令格式统一一下。我之前也遇到过类似情况,后来把数据清洗加长epoch到5轮,loss才明显往下走。 风格
我之前也踩过这个坑,Llama 3 8B对工具调用的格式敏感度比想象中高,尤其是系统提示词里如果没给一个非常明确的JSON或函数列表示例,它就会自己脑补。建议把工具定义直接写进user消息里,而且few-shot例子要贴近你实际场景,比如专门放一个“想去北京看故宫”的正反例。另外可以试试在判断前加一步“先输出思考过程再决定”,有时候它跳过推理直接生成结果就容易乱。还有个土办法,温度调到0.1没用的
我之前也踩过这个坑,后来发现光靠一句“严格基于文档”真不够,关键得把任务拆细。我会在prompt里明确告诉模型“先逐条核对检索片段,有就直接引用原话,没有就老实说‘资料未提及’”,这样比笼统的指令稳很多。另外chunk质量确实影响大,有时候top3里混着无关内容,模型反而被带偏,你可以试试把每个chunk的标题或来源也拼进去,让它有依据感。输出格式方面,我一般会加一句“只给结论,不要解释推理过程”
试试bge-large或m3e,小模型语义区分度确实不够,另外chunk重叠调个50试试。 reranker得加,bge-reranker-base跑一遍top20再重排,效果立竿见影。
试试给每个项目建个独立的markdown文件当记忆库,让Agent每次先读再写,比塞system prompt稳多了。 我一般把历史进度按周存成JSON,LangChain里挂个检索工具,只取最近几条喂给Prompt,效果比硬塞长文本好。
这问题太真实了,我拿GPT写爬虫也踩过同样的坑。感觉核心不是prompt不够细,而是AI对反爬机制的理解太“教科书”了,它生成的UA池和token逻辑往往都是伪随机,根本没模拟真实浏览器的行为特征。我后来是先把浏览器抓包得到的完整请求头和cookie链直接喂给它,让它照着改,成功率才高了些。另外对付动态token,别指望AI硬解,让它直接调Selenium或Playwright反而更省事,反正数据
这个分析切中要害了,我折腾过一阵子Electron应用的皮肤方案,深有体会。直接改asar确实是最省事但也最脆弱的路径,尤其是Codex这种更新频繁的工具,稍微动一下资源结构就全盘崩。Dream Skin要是真能走钩子注入这条路,那思路就对了一半,但有个现实问题——Electron的上下文隔离和沙箱机制越来越严,想在renderer进程里拦截文件读取,得看它用的是patch掉fs模块还是走协议拦截
别直接硬怼,MCP拉起进程后手动把RANK、WORLD_SIZE这些环境变量塞进去,比指望torchrun自动继承靠谱。
我们项目之前也纠结过这俩,最后留了bge-m3,中文和英文都能打,维度倒是能降。你只有几千条文档的话,其实不用太纠结速度,FAISS加个GPU或者量化一下完全够用。chunk大小影响是真不小,我试过bge配512的chunk重叠50,比256的召回稳很多,text2vec反而适合小chunk。建议你多拿自己文档跑几组对比,别光看benchmark。 另外你这场景可以试试国产的gte-large或
几百条对话直接上Chroma够用了,加个时间戳权重就行,别被MemGPT带偏了。 Qdrant没那么可怕,docker起个服务也就几分钟,性能比Chroma稳多了。
试试把工具描述写进RAG索引里,检索时带上MCP的schema,匹配率能提不少。
vllm里max_model_len配太高确实会直接拉爆显存,尤其MCP还要额外开销。建议先算一下你实际场景最大需要多少tokens,比如4000,然后max_model_len设成这个值往上加个10%冗余就够了,别贪大。rope_scaling这块,YaRN确实对长上下文友好,但得配合对应微调过的权重用,否则直接套原版模型效果会崩。你显存瓶颈在哪张卡?如果是单卡24G以下,不如试试支持长上下文的