兄弟们,最近在搞一个企业内部知识库的RAG项目,结果被检索模块狠狠教育了一顿。模型用的是开源的Llama 3,embedding用的bge-large,结果检索回来的内容相关性惨不忍睹,问答直接胡扯。😅
先说结论:RAG的瓶颈压根不在大模型,而在检索质量。你喂给模型的上下文是垃圾,那输出必然是垃圾。我踩的几个典型坑:
1. **分块策略太天真**:固定512字符切分,结果把关键上下文切断了。改成语义分块+重叠窗口,召回率直接提了20%。
2. **Embedding模型没选对**:通用模型对垂直领域(比如法律、医疗)效果极差。微调领域embedding模型是必选项,别偷懒。
3. **检索后处理缺失**:原始向量检索返回top-5,但里面可能有两条是噪声。加个reranker(比如bge-reranker),排序后再灌给LLM,效果才稳。
另外部署时注意:检索部分的延迟比LLM推理还高。单用ElasticSearch做近似检索,线上QPS超过50就崩了。换成HNSW索引+Faiss,才扛住压力。
最后抛个问题:你们在RAG项目里,是优先上多模态检索,还是先优化文本检索的精度?欢迎来撕。🔥 |