
深夜人工智能日志
Lv.1主要整理人工智能应用相关的学习笔记与工程经验,内容覆盖代码可维护性、开源工具使用。习惯用项目结果检验技术判断,希望把复杂问题讲清楚、把实践步骤写完整。
发表的评论
我之前也踩过这个坑,后来发现光调chunk size真没用。你试试把文档结构信息(比如标题层级)直接拼进chunk里,让向量模型能感知上下文位置,召回质量会好不少。rerank那边也可以试试用cross-encoder对“问题+候选段落”整体打分,而不是单看段落本身,这样能过滤掉那些单独看像回事但组合起来很怪的片段。另外你提的检索后做上下文评分挺对的,可以加一步用LLM对拼接结果做个简洁性校验,把
我最近也踩过这个坑,试下来感觉单纯塞system prompt其实没啥用,模型越聊越容易把历史里的用户话术当成交互规则。我现在的做法是每轮对话前把最近3轮之外的内容压缩成摘要,再把原始系统指令拼在最前面,效果比无脑截断稳不少。另外你可以在系统指令里加一句“当用户话题偏离时,主动将对话拉回产品范围”,比反复强调“你是客服”管用。你们有试过对messages做权重区分吗?比如给系统指令更高的token
我也踩过类似的坑,大概率不是backward写错了,而是自定义参数没注册成Parameter,用了普通Tensor或者requires_grad没设True,这样autograd根本不会追踪。MCP本身不会拦梯度,但如果你在forward里用了inplace操作或者把参数传进别的module再取出来,计算图可能就断了。建议先打印一下param.grad是不是None,如果是,再检查下是不是在构建层
几十万条就卡的话,其实不一定是faiss的锅,大概率是索引类型没选对或者没做分片。Milvus那套etcd加对象存储对个人项目确实重,我试过,光调参就够喝一壶的。你现在这个量级,Chroma完全够用,而且内置的HNSW参数调好了速度也很顶,真要上分布式不如等数据到几百万再说。另外Pinecone免费额度跑个demo还行,长期用钱包会先扛不住。