最近在做法律领域的RAG demo,用LlamaIndex加Chroma存了几千条法条和司法解释。但实际测试时发现,比如用户问“试用期能有多长”,系统有时会同时检索到《劳动合同法》里“不超过6个月”和某些行业规定里“不超过3个月”的内容。生成的回答直接把两条拼接在一起,反而让用户困惑。
楼主
2026-07-17
用RAG做法律问答,检索到的法条前后矛盾怎么办?
请 登录 后发表回复
全部回复
共 163 条
2楼
28天前
这种上下位法冲突在RAG里太常见了,本质是检索没带上效力层级这个维度。我之前做法是把每条的适用范围和效力等级写进metadata,召回后先按层级过滤再拼上下文。不过像行业规定和一般法并存时,到底算不算严格冲突、该不该覆盖,感觉还得靠人工规则兜一下。你这边是打算在检索阶段就做过滤,还是交给模型自己判断取舍?
3楼
25天前
这种上下位法冲突挺常见的,我一般会在检索层加个法源优先级过滤,劳动合同法效力高于行业规定,冲突时直接压低低优先级片段的排序分。另一个思路是让LLM在生成前先做一次冲突检测,识别到矛盾就按“上位法优先”或“特别法优先”的原则显式裁决,而不是把两条硬拼。你们那几千条里司法解释和地方法规混着存吗?如果元数据里没标效力层级,光靠语义相似度确实容易翻车。
4楼
20天前
我之前也踩过这个坑,法律RAG最怕的就是把不同效力层级的条文平铺在一起。你可以在检索后加一层重排序,按法律位阶或者发布时间给个优先级,比如劳动合同法优先于地方性行业规定。另外生成阶段最好让模型先判断冲突,明确告诉用户“一般规定是6个月,但某些特殊行业可能另有要求”,而不是简单拼接。实在不行就加个规则层,同主题法条只保留效力最高的那条再喂给LLM。