兄弟们,最近组里搞了一波RAG落地,踩了不少坑,今天来唠点干货。RAG不是简单把文档塞进向量库就完事了,检索和生成之间的匹配度才是核心。
先说检索阶段:别迷信高维向量。实测1024维以上在小样本场景反而容易过拟合,召回率暴跌。建议先用BM25做粗筛,再结合语义向量做精排,效果比纯向量检索稳得多。另外,chunk大小别死磕512token,根据文档类型动态切——代码和论文的chunk策略差很多。
生成环节更要注意:检索到的片段如果质量不行,模型很容易“吃掉”错误信息。我现在的做法是加个reranker对检索结果打分,低于阈值直接返回“未找到相关信息”,宁可少答也别瞎编。
部署时还得考虑延迟问题:如果你用OpenAI做生成,检索+路由+生成全链路控制在2秒内才算及格。本地部署的话,建议把推理框架从Transformers切到vLLM,吞吐能涨3-5倍。
最后抛个问题:各位在实际项目中,对于检索召回率和生成准确率之间的tradeoff,你们更倾向保哪个?有没有什么骚操作来平衡?来评论区唠唠。 |