
周末设计手记
Lv.1主要整理设计与体验相关的学习笔记与工程经验,内容覆盖设计系统建设、案例拆解。相信长期积累胜过短期追热点,希望把复杂问题讲清楚、把实践步骤写完整。
发表的评论
说实话我刚学爬虫时也卡这了,后来发现反爬的核心不是User-Agent,而是请求头里Accept-Language、Connection这些细节,以及cookie的完整性。你可以让AI生成selenium或playwright的代码,模拟真实浏览器加载,豆瓣对这种反而宽容些。代理池对新手确实复杂,先把session和headers伪装搞明白,再考虑上代理也不迟。另外建议爬慢点,别几秒内狂发请求,我
这感觉太真实了,我用了半年Copilot也有类似的体验。不过我觉得这不完全是坏事,更像是大脑把“写代码”的优先级让给了“读代码和调试”,毕竟AI补全再快,逻辑还是得自己把关。你说的排序算法被纠正成内置函数,我反而觉得是个提醒——我们容易把“手写能力”和“编程能力”划等号,但实际工作中,能判断该用哪个工具、能看懂AI为什么这么写,可能更关键。至于保持手感,我自己的办法是每周抽一小时去刷两道LeetC
我之前也踩过这个坑,7B模型LoRA微调后重复句子,大概率不是数据问题。你试试把学习率降到2e-5以下,epoch减到1-2个,LoRA的alpha调成rank的两倍(比如32),重复现象会明显缓解。 另外,可以检查一下推理时的repetition_penalty,设到1.2-1.3比降温度更直接有效。我之前用类似配置,改完这几个参数后重复基本消失,而且领域能力没掉多少。 如果还不行,看看是不
我们团队两个都深度用过,最后生产环境留了Qdrant。Milvus功能确实全,但坑大多藏在分布式部署里,etcd和pulsar那套链路一旦节点多了,问题排查起来真能让人头秃,而且内存索引对资源的要求比想象中高不少,小团队扛不住。Qdrant上手就顺滑很多,rust写的单机性能很能打,不过它的过滤条件写起来有点绕,特别是嵌套payload的查询,文档又少,遇到复杂场景只能靠猜。还有个细节,Milvu
T4上跑bge-large确实有点吃力,我后来是用bge-base-zh配合ONNX量化,推理时间能压到原来的一半,召回率损失很小。text2vec在长文本上确实容易丢语义,建议试试chunk重叠+标题增强,比换模型见效快。多路召回我试过,如果两路结果合并后再rerank,延迟会翻倍,建议只对top20做重排,别全量喂给rerank模型。另外可以看下gte或者m3e的轻量版,T4上表现比bge均衡
试试把共享State按Agent拆成独立命名空间,用Reducer显式合并,别让它们直接写同一个字段。 状态别整成一个全局大对象,每个Agent维护自己的子状态,靠消息传递同步,比共享State稳得多。
插个话,之前我处理类似问题是用bge-large-zh-plus配合混合检索(向量+BM25),效果比单纯换模型明显一些。另外512切块可能还是太大,中文语义跨度大,试试128-256,再顺手做个意图分类,把“离职、请假、报销”这类高频意图单独建索引,召回会准不少。你那个标题加权其实帮助有限,不如把段落首句和关键词做成一个轻量级摘要塞进向量里,我这么改完误召回少了一半。要是公司数据量不大,也可以微
这问题太真实了,我试过让GPT写爬虫,prompt里写了“处理超时和连接错误”,结果它只给requests.get套了个try,解析那步照样裸奔。后来我发现光靠prompt描述“要异常处理”没用,模型对“异常”的理解太泛了,你得把具体场景拆给它看,比如直接写“文件不存在时报错并创建默认文件,API返回500时重试三次,每次间隔2秒”,这样它才会生成对应的逻辑。 还有个偏门技巧,就是让AI先写一个
我之前也踩过类似的坑,110M的BERT转TRT后反而慢。后来发现问题出在动态shape上,TensorRT对动态尺寸的优化远不如静态,而且注意力矩阵的reshape和softmax很容易触发低效的kernel。你可以试试把动态维度拆成多个静态batch或固定长度,或者换用FasterTransformer那套融合算子,别指望纯ONNX导出能自动优化。另外确认下是不是用了fp32,fp16有时候能
说实话我之前也踩过这个坑,单卡A100跑6B并发确实容易爆。vLLM其实没那么复杂,关键是它通过PagedAttention把KV cache管理得特别好,你这场景直接上它比手动调Int4划算,生成速度还能提不少。另外可以试试把max-length限制到512,很多问答用不到那么长上下文,显存能省出一大截。要是还想更轻,干脆用Flask开个异步接口,配合队列把并发请求串行化,牺牲点响应时间但稳定性
百万级还是别折腾Chroma了,直接上Qdrant吧,轻量够用还稳。云服务省心但长期算下来不便宜。
我之前试过按对话分段存,效果比整段压缩好很多,但metadata得设计成层级标签,比如session_id加topic_id,这样切话题时能单独召回。你提到A话题跳B再回A,可以给每个片段存个时间戳和关联话题的embedding,查询时用相似度加权合并,Pinecone的filter只做粗筛,精细还得靠向量距离。另外别忽略对话摘要的压缩存储,单独存一份长期摘要能兜底,不然召回太散会乱。
这loss卡2.3挺典型的,先查查是不是只有代码没带注释和空行,模型学不到函数结构。 试下把context拉到1024或2048,512确实太短了,补全任务很吃上文信息。
确实,材质和版型这种细节才是穿搭灵魂,光靠CLIP框架真不够,得针对时尚域专门调优才行。
之前做类似问答也踩过这个坑,后来发现单纯按字数切分确实会把语义连贯的段落拦腰截断。你可以试试按文档的标题层级和表格边界做结构化切分,比如把“年假”相关的条款单独抽成一个chunk,再配合关键词过滤前置过滤掉考勤调休。另外topk20对垂直领域有点大,我一般调到10以内,重排序压力会小很多。query改写这块儿,如果意图本身不明确,改写反而会带偏检索方向,不如直接做同义词扩展试试。
这块我也踩过类似的坑,后来试了试把段落级别的引用改成“文件名+函数名”的元数据标签,配合Prompt里显式告诉LLM只能基于这些标签来组织答案,幻觉少了不少。另外你切块按函数和类没问题,但检索排序可以考虑加一个“周边行号”的权重,比如把定义块前后几行的调用示例也一起召回,这样上下文更完整。你用的是哪种向量库?有些支持自定义rerank策略,能缓解多文件混淆。
这个问题我也遇到过,工具描述写太详细反而容易让Agent抓错重点,建议把每个工具的描述精简到核心功能一句话,参数说明用JSON Schema格式会更稳。另外检查下工具返回是不是严格按Agent预期的结构,比如有些框架要求必须带“success”或“error”字段。如果还抽风,可以试试把temperature设低一点,0.1左右能让GPT-4少些“创意”乱选工具。
我也是3060 12G,试过llama3.1 8B的4-bit GGUF,Ollama加载后生成速度能到每秒3-4个token,没你说的那么慢,是不是用的CPU推理或者内存不够?中文效果我觉得还行,基本语义通顺,就是偶尔会丢点细节。可以试试llama.cpp加个--n-gpu-layers 32参数,把部分层放到显存里,速度能快不少。vLLM对单卡优化一般,还是Ollama更省心。
说实话MCP目前更多是管工具调用和上下文传递那层,对文件格式本身并不会有直接帮助。不过你可以把Tika或Unstructured封装成MCP工具,这样RAG流程里就能通过MCP统一调用这些解析器,省掉手动转格式的麻烦。我自己试过把Unstructured挂上去,效果还行,但扫描件这种还是得靠OCR插件,MCP解决不了识别率的问题。你可以先看看你们团队最头疼的几种格式,挑一个解析器先集成试试。
加个反问问它“你确认理解我要求了吗”,看它能不能自己纠偏,比看输出结构靠谱。