近日,国外研究者发布了一篇论文《Seven Failure Points When Engineering a Retrieval Augmented Generation System》,探讨了在实际工程落地RAG应用过程中容易出的七类问题。
论文地址:https://arxiv.org/pdf/2401.05856.pdf
一、丢失内容( Missing Content )
- 这是实际生产中的一个最大问题。模型无法在给出的文档中获得实际的答案
- 比较好的情况是回答"我不知道"。但事实上,它却会编造一个看似正确的错误答案。
二、错过了最相关的文档( Missed the Top Ranked Documents )
- 检索器就是一种小型的搜索系统,非常难以做到精准。
- 简单的向量检索很少能直接满足要求。有时候,正确的答案没有在检索器返回的前 K 个文档中出现,导致后续LLM无法正确生成回答。
三、不在上下文中(Not in Context - Consolidation strategy Limitations)
- 有时候,可能会检索到大量的的文档,受限于模型的context大小限制,需要进行整合修剪才能传给大模型,但这有可能导致真正包含的答案未能放进上下文中。这种情况一样会导致模型产生幻觉,除非Prompt明确指示模型不返回不在上下文中的结果。
四、无法提取(Not Extracted )
- 在这种情况下,答案在上下文中存在,但大语言模型未能正确提取出答案。通常,这是因为上下文中存在太多干扰性信息或相互矛盾的信息。
五、错误的格式(Wrong Format )
- 问题涉及提取特定格式(例如表格或列表)的信息,但大语言模型忽略了指令。
- 需要通过系统Prompt并编写代码来以特定格式生成信息。如果这是一个重要功能,就需要进行软件开发和测试。
六、特定性不准确(Incorrect Specificity)
- 回答不够具体或过于笼统,不能满足用户的需求。这种情况通常是因为RAG系统的设计者对于特定问题有特定的期望结果。
- 比如教师对学生,在这种情况下,应该提供特定的教育内容,而不仅仅是答案。
- 特定性不准确还会在用户不确定如何提问或问题过于笼统时出现。
七、不完整(Incomplete)
- 不完整的答案并不是错误的,但是会漏掉一些信息,尽管这些信息在上下文中并且可以提取出来。
- 例如,一个问题是:“文档 A、B 和 C 中包括哪些关键点?”更好的方法是分别提出这些问题。