兄弟们,最近在搞一个企业级知识库问答,用了RAG方案,踩了不少坑,分享点干货。
先说结论:RAG不是万能的,但用好了确实能解决大模型幻觉问题。核心就三块:检索质量、文本分块、生成策略。
1️⃣ 检索质量是命门
我用的是混合检索(BM25+向量搜索),别迷信纯向量。实测下来,BM25召回精度在专业术语场景下能高20%+。Embedding模型选bge-large-zh-v1.5,比OpenAI的ada-002在中文场景强不少。
2️⃣ 分块策略要调参
别无脑按字数切。我试了按段落、按句子、甚至按语义边界,最后发现动态分块+重叠策略(block_size=512, overlap=128)效果最稳。太长上下文稀释,太短丢失语义。
3️⃣ 生成时加个reranker
检索Top-10后,用cross-encoder重新排序,Top-3给LLM。这一步能滤掉垃圾文档,减少幻觉。模型推荐BAAI/bge-reranker-large。
最后说部署:用FAISS做索引库,FastAPI搭服务,单机QPS能扛200+。别上流式框架,小团队控制不住。
提问:你们用RAG时,遇到最离谱的检索漏召回是啥场景?我这边试过把“苹果笔记本”当成水果来查… 😅 |