最近在做一个企业知识库问答,用的LangChain + Chroma + OpenAI Embedding。文档是各种PDF和Word混着来的,我直接按固定字符数500切块,重叠50。结果发现用户问“报销流程是什么”这种问题,召回的前几块经常是表格碎片或者页眉页脚,真正讲流程的段落排在很后面。试过调大top_k,但答案还是乱。我怀疑是不是分块策略太粗暴了,但看网上教程好像都这么干。有没有大佬遇到过类似情况,分块到底应该怎么设计?是按段落还是按语义?需不需要考虑文档结构(比如标题层级)?顺便问一下,如果混合用BM25和向量检索,会不会好一点?谢谢!