专家支持案例研究:利用 LLM 充当“评委”来增强 RAG 应用程序
这是一篇由 Digital Green 撰写的客座博客文章。Digital Green 正在参与一项由 CGIAR 牵头、旨在为小农提供农业支持的合作项目。
全球估计有 5 亿小农:他们在全球粮食安全中发挥着关键作用。及时获取准确信息对于这些农民做出明智决策和提高产量至关重要。
“农业推广服务”为农民提供农业技术咨询,并为他们提供支持农业生产所需的投入和服务。
仅印度就有 30 万农业推广员,他们提供有关改进农业实践的必要信息,并帮助小农做出决策。
然而,尽管他们的数量令人印象深刻,但推广人员的数量不足以应对所有需求:他们与农民的互动比例通常为 1:1000。通过合作和技术接触农业推广员和农民仍然是关键。
“GAIA 项目”应运而生,这是一个由 CGIAR 首创的合作倡议。
它通过 将 Hugging Face 汇聚为导师,并将 Digital Green 汇聚为项目合作伙伴。
GAIA 的崇高目标是将 GARDIAN 门户 中精心维护的多年农业知识以研究论文的形式带到农民手中。全球有近 46000 篇农业研究论文和报告,涵盖了数十年来的不同作物。
Digital Green 立即看到了在批准的、精选的信息上开发由检索增强生成 (RAG) 提供支持的智能聊天机器人的潜力。因此,他们决定开发 Farmer.chat,这是一个利用大型语言模型 (LLM) 的能力,为农民和一线推广员提供个性化、可靠的农业建议的聊天机器人。
为各种语言、地理、作物和用例创建这样一个聊天机器人是一项巨大的挑战:传播的信息必须符合当地农场的具体情况,使用农民能理解的语言和语气,并且准确(基于可靠来源),以便农民可以根据其采取行动。为了评估系统的性能,CGIAR 团队和 HF 专家合作建立了一套强大的评估套件,即一个 LLM 充当“评委”的系统。
让我们看看他们是如何应对这一挑战的!
系统架构
整个系统使用了许多组件,以便提供基于多种工具和外部知识的聊天机器人答案。它有几个关键要素
- 知识库
- 预处理:第一步是在 Scio 维护的 API 的帮助下,将 PDF 文档摄取到 Farmer.chat 管道中。在知识库中,主题会自动分类到相关的地理区域并进行语义分组。
- 语义分块:将整理好的带有元数据的文件进行处理,将意思相似的句子分组到文本块中。该函数目前使用小文本嵌入进行余弦相似度计算。
- 转换为 VectorDB 格式:每个文本块使用嵌入模型转换为向量表示,然后将向量表示存储在 QdrantDB 中。
- RAG 管道:它确保所传递的信息基于内容而非外部来源。它包含两部分:
- 信息检索:在知识库中搜索与用户查询相关的匹配信息。这涉及调用知识库构建器中创建的向量数据库 API,以获取必要的文本块。
- 生成:利用检索到的文本块信息和用户查询,生成器调用 LLM 并生成类似人类的响应,以满足用户的需求。
- 面向用户的代理:规划代理底层使用了 GPT-4o。
- 它的任务是:
- 理解用户意图
- 根据用户意图和工具描述决定需要哪些更多信息
- 向用户询问该信息,直到请求明确
- 请求明确后,调用执行代理
- 从执行代理获取响应并生成响应
- 该代理运行基于 ReAct 的提示,以逐步思考并调用相应的工具和分析响应。然后它可以利用其工具进行回答:目前,该代理使用以下工具集:
- 继续对话
- RAG 问答端点
- 视频检索端点
- 天气端点
- 作物表格
- 它的任务是:
这个系统有许多运动部件,每个部件都对性能的某些方面产生根本性影响。因此,我们需要仔细进行性能评估。
在过去一年中,Farmer.chat 的使用量已增长到为超过 2 万名农民提供服务,处理超过 34 万个查询。我们如何评估系统在这种规模下的性能?
在每周的头脑风暴会议中,Hugging Face 提到了 LLM 作为“评委”,并提供了其笔记本 LLM as a Judge 的链接。这一资源经过详细讨论,随后形成了一种实践,有助于指导 Farmer.chat 的开发。
LLM 充当“评委”的力量
Farmer.Chat 采用复杂的检索增强生成(RAG)管道,为农民提供基于知识库的准确和相关信息。RAG 管道使用 LLM 从庞大的知识库中检索信息,然后生成简洁明了的响应。
但我们如何衡量这个管道的有效性呢?
这里的难点在于,没有一个确定性的指标可以用来评估答案的质量、简洁性、精确性……
这就是 **LLM 充当“评委”** 技术介入的地方。这个想法很简单:让 LLM 根据任何指标来评分输出。其巨大的优势在于,指标可以是任何东西:LLM 充当“评委”具有极强的通用性。
例如,您可以使用它来评估提示的清晰度,如下所示:
You will be given a user input about agriculture, and your task is to score it on various aspects.
Think step by step and rate the user input on all three following criteria and give a score for each:
1) The intent and ask is clear.
2) The topic is well-specified.
3) The target entity is well-specified, as well as its attributes, for instance "disease resistant" or "high yield".
You should give your scores on an integer scale of 1 to 3, 1 being the worst and 3 the best score.
After creating a score for each three, take the average and round it off to the nearest integer which becomes the final score.
Example:
User input: "tell the benefits of batian coffee variety"
Criterion 1: scores 3, as the intent is clear (about knowing about batian variety of coffee) and the ask is clear (want to summarize the benefits).
Criterion 2: scores 3, the topic is well specified (coffee varieties)
Criterion 3: scores 2, as the entity is clear (batian variety) but not the attributes.
如我们前面提到的 这篇文章 所述,使用 LLM 作为“评委”的关键是明确定义任务、标准和整数评分量表。
Farmer.Chat 的研究团队利用 LLM 的能力来评估几个关键指标:
- 提示清晰度:此指标评估用户表达问题的清晰程度。LLM 经过训练,可以评估用户意图的清晰度、主题特异性和实体属性识别,从而深入了解用户如何有效地沟通其需求。
- 问题类型:此指标根据其认知复杂性将用户问题分为不同类别。LLM 分析用户的查询并将其分配到六个类别之一,例如“记忆”、“理解”、“应用”、“分析”、“评估”和“创建”,帮助我们了解用户交互的认知需求。
- 已回答查询:此指标跟踪聊天机器人回答问题的百分比,提供有关知识库广度和平台处理各种查询能力的信息。
- RAG 准确性:此指标评估 RAG 管道检索信息的忠实度和相关性。LLM 充当“评委”,将检索到的信息与用户查询进行比较,并评估响应是否准确和相关。
它使我们能够超越简单地衡量聊天机器人能回答多少问题或响应速度。相反,我们可以更深入地研究响应的质量,并以更细致的方式理解用户体验。
对于 RAG 准确性,我们使用 LLM 充当“评委”在二元尺度上进行评估:0 或 1。但是,任务分解的方式形成了一个完善的过程,得出的分数我们已经用人工评估员对大约 360 个问题进行了测试:结果发现 LLM 的回答确实做得很好,并且与人工评估具有高度相关性!
这是提示,它受到 RAGAS 库的启发。
You are a natural language inference engine. You will be presented with a set of factual statements and context. You are supposed to analyze if each statement is factually correct given the context. You can come up with the scores of 'Yes' (1) and 'No' (0) as verdict.
Use the following rules:
If the statement can be derived from the context, give a score of 1.
If there is no statement and there is no context, give a score of 1.
If the statement can’t be derived from the context, give a score of 0.
If there is no context but there is a statement, give a score of 0.
#### Input :
Context : {context}
Statements : {statements}
上面的上下文变量是用于生成答案的输入块,而语句是另一个 LLM 调用生成的原子事实语句。
这是非常重要的一步,因为它支持大规模评估,这在处理大量文档和查询时非常重要。LLM 充当“评委”最终会产生指标,这些指标就像指南针一样,引导我们选择 AI 管道的各种可用选项。
结果:RAG 的 LLM 基准测试
我们创建了一个包含 700 多个用户查询的样本数据集,这些查询随机分布在不同的价值链(作物)和日期(月份)中。虽然此升级本身有 11 个不同的版本,并使用 RAG 准确性和已回答百分比进行评估,但同一方法也用于测量领先 LLM 的性能,且每次 LLM 调用中不更改任何提示。在此实验中,我们选择了 OpenAI 的 GPT-4-Turbo、Gemini-1.5 的 Pro 和 Flash 版本,以及 Llama-3-70B-Instruct。
大型语言模型 | 忠实 | 相关 | 已回答 * 相关 | 已回答 * 忠实 | 未回答 |
---|---|---|---|---|---|
GPT-4-turbo | 88% | 75% | 59% | 69% | 21.9% |
Llama-3-70B | 78% | 76% | 76% | 78% | 0.3% |
Gemini-1.5-Pro | 91% | 88% | 71% | 73% | 19.4% |
Gemini-1.5-Flash | 89% | 78% | 74 % | 85% | 4.5% |
我们看到,在四个模型中,Gemini-1.5-pro 获得了最高的事实正确答案(“忠实”列),紧随其后的是 Gemini-1.5-Flash 和 GPT-4-turbo。
我们发现,仅从忠实度来看,Gemini-1.5-Pro 胜过其他模型。但如果我们也考虑模型接受回答的问题百分比,Llama-3-70B 和 Gemini-1.5-Flash 表现更好。
最终,我们选择了 Gemini-1.5-Flash,因为它在未回答问题百分比低和忠实度极高之间取得了卓越的平衡。
结论
通过利用 LLM 充当“评委”,我们能更深入地了解用户行为以及 AI 驱动工具在农业背景下的有效性。这种数据驱动的方法对于以下方面至关重要:
- 改善用户体验:通过识别用户难以清晰表达需求或 RAG 管道表现不佳的领域,我们可以改进平台的设计和功能。
- 优化知识库:对未回答查询的分析有助于我们识别知识库中的空白并优先进行内容开发。
- 选择正确的 LLM:通过对不同 LLM 在关键指标上进行基准测试,我们可以就哪些模型最适合特定任务和上下文做出明智的决策。
LLM 能够充当“评委”来评估 AI 系统的性能,这是一项颠覆性的能力。它使我们能够以更客观、数据驱动的方式衡量这些系统的影响,最终促进开发出更健壮、更有效、更用户友好的农业 AI 工具。
在一年多的时间里,我们不断改进产品。在如此短的时间内,我们已经能够:
- 覆盖超过 2 万名农民
- 回答超过 34 万个问题
- 为 6 种以上语言、50 种价值链作物提供服务
- 保持几乎零偏见或有害回复
最近在 这篇科学文章 中发表了结果,重点是用户研究的定量研究。
如果您对贵公司的 Hugging Face 专家支持计划感兴趣,请随时点击此处联系我们——我们的销售团队将与您联系,讨论您的需求!