兄弟们,最近把RAG从demo推到生产,踩了几个大坑,今天倒点干货。
先说个反常识的事:很多教程教你把文档全扔进向量库就完事,但实际效果惨不忍睹。我拿内部客服数据试过,不处理的RAG,准确率比纯模型下降20%。关键在于三个要点:
1️⃣ 文档分段是门玄学:别用固定token数切。我试过按段落、按句子、按语义块切,效果最好的是结合markdown标题+段落+200token的滑动窗口。代码里用`langchain`的`RecursiveCharacterTextSplitter`调参吧。
2️⃣ 检索召回要降噪:向量相似度top-5里可能混进50%无效信息。我加了reranker(推荐`bge-reranker-v2-m3`),召回率从60%飙到85%。部署时注意CPU推理就行,GPU不是刚需。
3️⃣ 生成阶段搞点黑科技:给prompt加个“仅用检索内容回答,否则说不知道”的指令,能砍掉30%的幻觉。另外,把检索结果按相关性排序后,用`ChatGLM3-6B`的system prompt控制输出格式,亲测有效。
最后说部署:`vLLM`+`FastAPI`套个壳,QPS轻松上50。别用`Flask`,高并发直接崩。
抛个问题:各位在生产环境里,是怎么处理PDF表格和图片的OCR检索的?我在这个环节卡了两周了。 |