- N +

RAG实践篇(二):这些年,我们在测试中踩过的坑

RAG实践篇(二):这些年,我们在测试中踩过的坑原标题:RAG实践篇(二):这些年,我们在测试中踩过的坑

导读:

印尼归化球员希尔格斯在接受印尼媒体采访时表示自己是因为母亲才加入印尼国家队的谈印尼国家队希尔格斯表示两年前有意加入时有很多原因当时我在特温特的情况非常忙碌所以我在去与不去之间犹...

印尼归化球员希尔格斯在接受印尼媒体采访时表示,自己是因为母亲才加入印尼国家队的。谈印尼国家队希尔格斯表示:“两年前有意加入时有很多原因,当时我在特温特的情况非常忙碌,所以我在去与不去之间犹豫不决。

RAG目前在企业级应用中是 解,但实践中的坑点不少,今天分享我们在 环节踩过的坑。

在大模型的企业级应用中,RAG应该是目前的 解。不过,由于它和传统的软件开发项目存在很大的不同,实际落地时经常会存在意想不到的坑点和难点。有次和同样在探索RAG应用的朋友交流,大家都不约而同地发出“一周出demo,半年不好用”的吐槽。

这个实践系列就是我们在探索和吐槽中的产物。今天这篇,我们想专门聊聊在项目 中踩过的坑,希望对同样在RAG摸爬滚打的伙伴有帮助。(上一篇:)

为什么从“ ”开始说?

在给企业做RAG落地应用的时候,我们发现很多企业需求从“知识问答”类的功能开始,比如公司规章制度/管理要求/文化建议等输入,或者基于某个专业领域的知识库进行私有化。由于泛用性广,也便于理解,我们就以“知识问答”为例来说明。

无论是RAG项目还是其他LLM的项目开发,最理想的 集就是来自用户的真实数据。但实际中我们发现,很多企业其实并不具备这个条件,需要开发团队或者甲方自行“生产” 集。无论由谁来准备,覆盖度原则是一个关键点。它指的是在 集中应包含广泛的细分主题,以确保模型能够应对不同领域的查询,这样才有助于比较有效地评估RAG整体表现。以知识问答为例,通常会要求 集尽量覆盖这个知识领域中所有子领域的代表性问题。其中,有两个点值得注意:

要意识到“知识”和“用户问题”之间的

RAG实践篇(二):这些年,我们在测试中踩过的坑

在起初没经验的时候,我们往往就会直接按照知识库所代表这个专业知识领域的子分类进行细分。以产品经理的能力知识为例,我们曾依据“商业洞察”、“沟通与领导能力”、“需求分析能力”等进行 集,结果上线后发现,用户真实挑战,不太可能像知识库那样分门别类,井井有条。甚至有些回答会需要横跨两个或多个子领域才能回答。

于是我们才意识到,很多领域的知识是一种经过经验提炼和梳理后的结构化产物,它能 地将知识进行聚类和管理,但已经不是用户挑战的“原始状态”。

因此,覆盖度的 个注意要点:请根据目标用户的真实情境来进行 集的分类,而不是知识库本身分类。否则,可能与真实情况相去甚远。

不要忽略“形式”的覆盖度。

有些产品设计者或内容专家在准备 集时,觉得内容上覆盖多领域就万事大吉了。但我们实践下来发现,其实“形式”上尽可能覆盖用户的真实使用的多种情况,也很重要。因为模型应对不同形式的输入,其性能表现会产生差异。

基于“知识问答”功能,同样是提一个关于产品经理“商业分析”相关的问题,用户完全可能有不同的问法,意味着背后的不同的用户意图。下图是我们当时做知识问答功能时,对问题形式的分类,供伙伴们参考。

所以,第二个要点:在准备 集中,除了对内容主题的覆盖度,“形式”覆盖度也是同样需要关注。

表达习惯的覆盖度

在知识问答类的功能中,用户的表达习惯也可以纳入考量。同样的“意图”,有不同语言习惯的用户会产生不同的表达,比如有些人习惯倒装,有些人习惯简略,所以在准备 集中,也需要准备一些不同的表达习惯的提问( 是真实用户输入)来确保LLM能够理解。

衡量标准的三板斧:准确性、充分性和相关性。接下来我们分别从三个维度来看看有没有坑。

“模糊”的准确性

如果精确地评估准确性是一个难点。由于大模型的自然语言特性,造成输出并不是每次都是确定的、可定量评估的内容。为了降低这种不可评估的问题,我们目前探索的 方案是,将正确性的标准分成三类,增加评估的一致性:

充分性

目前没发现有坑。因为大语言模型真的太、能、说、了。不怕它不充分,就怕它过分。

相关性

我们原来以为的相关性bad case是问题跑偏。你问产品经理的商业分析A技巧怎么做,它回答你商业分析的B技巧。但实际碰到更多的情况是:大模型的流式输出中,10个要点里交杂着1、2个“谎言”(与问题无关的回答)。因此,请提前与你们的内容专家确定好相关性的标准。是需要每个要点都严格与问题相关,才算是good case;还是可以按比例进行,比如超过30%、50%与问题无关,才算是bad case。

在RAG 中,有两个评估维度经常会被忽略:一致性和上下文。但这两个指标很重要。

一致性:大模型在多次使用同样的问题回答时,是否能给出相对一致的 。“同一个问题能否保持一致性”其实对企业应用来说还是蛮关键的,毕竟大家都不希望同一个问题,企业员工A和B去问,得到的是截然不同的 。

为什么重要:大型语言模型通过大量的文本数据训练,理论上应该能够为相似的问题提供相似的 。然而,由于模型内部机制的复杂性(如随机初始化、训练过程中的随机性等),实际应用中可能仍会出现一定程度的不一致性。因此,一方面,持续优化模型以提高其输出的一致性是 必要的;另外,在 中进行多轮 来验证其一致性也很重要。

上下文:当多轮次回答时,是否会对回答的准确性和相关性等产生影响。这种情况在用户的实际情况中很常见,但在 中容易会忽略。

为什么重要:LLM在处理输入时,通常有一个固定的上下文窗口大小,这个窗口决定了模型能够“记住”的最近对话内容的长度。而上下文窗口大小确实与Token限制密切相关,超出Token限制可能会被遗忘或忽略。

以上,都是我们在RAG项目中的实践和真实感受。这个系列我们还持续更新,比如在文档(知识)解析、QA对召回、向量化等的注意要点和“坑”等等,我们会持续记录下项目实践和思考,当然,如果您有任何想法和经验想要分享, 欢迎在评论区留言。

本文由 @AI 实践干货 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自 Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理 仅提供信息存储空间服务

返回列表
上一篇:
下一篇: