最近在用LangChain + Chroma做一个本地知识库问答,文档是PDF的技术手册,大概几百页。我按500字符切了chunk,overlap设了50,embedding用的text-embedding-ada-002。但检索的时候经常召回一些完全不相关的段落,比如问“如何配置超时时间”,结果返回的是“安装步骤”那一段。调了top_k也没啥改善,感觉像是向量空间里这些文本都挤在一起了。想问问大家,chunk大小和切分策略到底怎么定比较合理?还是说需要加rerank?有点懵,求指点。
楼主
23天前
RAG系统检索出来的内容总是答非所问,是我的chunk切得不对吗?
请 登录 后发表回复
全部回复
共 2 条
2楼
20天前
500字符切技术手册太碎了,试试按标题层级切,再加个rerank,召回立马不一样。
3楼
16天前
500字符对技术手册来说有点碎了,容易把“超时配置”和“安装步骤”这种上下文混在一起。你可以试试按标题层级切,或者用RecursiveCharacterTextSplitter配上更大的chunk,比如1000到1500,overlap给到150左右。光靠ada-002的向量确实容易在密集文本里翻车,加个rerank模型比如bge-reranker会明显改善。另外Chroma默认的余弦距离也可以检查下,有时候归一化没做好也会让向量挤成一团。