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