围绕RAG 评估框架:RAGAS、ARES、TruLens 在忠实度/相关性/上下文召回指标展开深入探讨,从基本概念出发逐步深入到高级应用。内容涵盖因果推理与可解释AI、因果推断基础中的RAG 评估框架:RAGAS、ARES、TruLens 在忠实度/相关性/上下文召回指标原理、关键算法、性能特性及优化策略,结合实际案例分析常见问题与解决方案,为工程实践提供系统性指导,适合希望深入理解该领域的。
需要学习RAG 评估框架:RAGAS、ARES、TruLens 在忠实度/相关性/上下文召回指标,涉及RAG、RAGAS、ARES等核心概念。从基本概念出发逐步深入到高级应用。这一知识点在因果推断基础 > 潜在结果框架中承上启下,连接基础理论与工程实践。
目录
可视化演示
展示RAGAS/ARES/TruLens三大RAG评估框架在忠实度、相关性、上下文召回、答案相关性等指标上的雷达图对比及柱状图分析。
本节配有交互动效(进入视口后自动加载,约 3KB)。
RAG评估框架 RAGAS ARES TruLens三框架对比 忠实度 相关性 上下文召回 答案相关性 Score=w1*F+w2*R+w3*C 加权综合评估RAG系统质量
RAG评估的核心维度与必要性
检索增强生成(RAG)系统由检索和生成两个环节组成,其质量评估与传统文本生成有本质区别。传统评估指标如BLEU、ROUGE基于n-gram词重合度,只能衡量生成答案与参考答案的字面相似度,既无法衡量检索环节是否召回了相关上下文,也无法判断生成答案是否忠实于检索上下文(是否产生幻觉)。当RAG系统回答错误时,可能是检索未召回正确信息,也可能是生成模型编造了上下文中没有的内容,BLEU/ROUGE无法区分这两类完全不同的失败模式,因此需要专门的RAG评估维度。
RAG评估的核心是围绕检索与生成的质量分解出四个维度。忠实度(faithfulness)衡量答案是否可由检索到的上下文推导支持,即答案是否忠实于上下文、未编造幻觉信息;答案相关性(answer relevance)衡量答案是否切题回答了用户查询、是否包含无关冗余内容;上下文召回(context recall)衡量检索到的上下文是否覆盖了回答问题所需的全部信息;上下文精度(context precision)衡量检索片段中相关片段的占比及排序质量,反映检索的信噪比。
这四个维度分别针对RAG的不同环节和质量侧面,能精确定位问题来源。忠实度和答案相关性评估生成环节——前者关注是否幻觉、后者关注是否切题;上下文召回和精度评估检索环节——前者关注信息是否齐全、后者关注信噪比与排序。当某项指标偏低时,可据此判断是检索器需优化(召回或精度不足)还是生成器需优化(幻觉或不切题),这是BLEU/ROUGE等单一指标无法提供的诊断能力。
需要强调的是,RAG评估的输入通常包括查询、检索上下文和生成答案,部分指标(如上下文召回)还需要参考答案。不同的评估框架对这些维度的实现方式不同:RAGAS用LLM-as-judge自动打分,ARES用轻量分类器低成本评估,TruLens用反馈函数封装并强调可观测性。理解四大维度的含义是掌握这些框架的基础,也是后续选择和组合框架的依据。
RAGAS的LLM-as-judge评估机制
RAGAS(Retrieval-Augmented Generation Assessment)是一个基于LLM-as-judge的自动化RAG评估框架。其核心思想是用大语言模型作为评审员,通过精心设计的提示让LLM自动对检索和生成质量打分,从而在无需大量人工标注的情况下评估RAG系统。RAGAS与LangChain、LlamaIndex等主流框架集成,可直接对接RAG应用进行评估,降低了评估接入的工程门槛。
RAGAS的忠实度计算是其代表性机制。计算过程分三步:首先将生成答案拆分为若干原子陈述句(Statement),每个陈述句表达一个独立的事实主张;然后逐一判断每个陈述句是否可由检索到的上下文推导支持;最后计算可被推导支持的陈述句占全部陈述句的比例,即为忠实度分数。可推导比例越高,说明答案越忠实于上下文、幻觉越少。这一机制无需参考答案,只需对比答案与检索上下文,适合缺乏标注的场景。
RAGAS的上下文召回通过标准答案的陈述覆盖率计算。具体做法是将参考(标准)答案拆分为陈述句,逐句判断每个参考陈述是否被检索到的上下文覆盖,覆盖比例即为上下文召回。这衡量了检索环节是否召回了回答问题所需的全部信息——若召回低,说明检索器遗漏了关键信息,需优化检索。注意上下文召回需要参考答案,与无需参考答案的忠实度形成互补:忠实度看生成是否忠实,召回看检索是否齐全。
RAGAS的答案相关性常通过答案反推问题来衡量:从生成答案反推生成若干候选问题,计算这些反推问题与原始查询的相似度,相似度越高说明答案越切题、越少冗余偏离。上下文精度则对每个相关片段按其排名位置做倒数加权(如1/rank)求平均,使相关片段排在越靠前得分越高,体现排序质量而非仅看相关比例。RAGAS的评估精度较高,但对每个样本需多次LLM调用(拆分、判断、反推等),成本较高,更适合迭代开发阶段对少量样本做精细评估和版本对比。
ARES的预测驱动推断与成本优化
ARES(Automated RAG Evaluation System)是一个面向成本优化的自动化RAG评估框架。其核心目标是降低评估成本——RAGAS对每个样本都调用大模型评审,大规模评估时LLM调用成本高昂;ARES通过用少量人工标注训练轻量分类器(轻量LLM评审员)替代大模型对每个样本打分,可减少80%以上的评估成本,适合生产环境的大规模持续监控。
ARES的训练管线利用合成数据。它先用LLM从领域文档生成合成查询和答案作为训练数据,再结合少量人工标注微调轻量LLM评审员,使其能低成本对大量样本打分。ARES针对上下文相关性和答案忠实度分别训练轻量分类器,从而能分别给检索和生成两个组件打分,定位问题出在检索环节还是生成环节,支持针对性优化。合成数据解决了标注稀缺问题,少量人工标注则保证分类器质量。
ARES的核心创新是预测驱动推断(Predictive-Powered Inference, PPI)。轻量分类器虽成本低但预测有偏差,PPI利用少量人工标注样本估计分类器的预测偏差并加以校正,使低成本评估结果在统计上逼近全量人工标注的精度,同时给出评估结果的置信区间。置信区间量化了评估的不确定性,帮助判断指标变化是否在统计噪声范围内,避免过度解读小幅波动做错误决策。这是ARES在低成本下保证可靠性的关键。
ARES的低成本特性使其定位与RAGAS不同。RAGAS精度高成本高,适合开发期对少量样本精评和版本对比;ARES成本低且给出置信区间,适合生产期对大量样本做持续监控,及时发现质量退化。在企业RAG系统上线后,用ARES做日常监控能在控制成本的同时持续跟踪忠实度、上下文相关性等指标,当指标显著下降或置信区间异常时触发告警和排查。这种成本与精度的权衡是选择评估框架的重要考量。
TruLens的反馈函数与可观测性
TruLens是一个强调可观测性的RAG评估框架。它将评估封装为可组合、可扩展的反馈函数(feedback functions),反馈函数由反馈提供者(feedback provider,即底层模型如LLM或嵌入模型)和反馈实现(精心构造的提示与自定义逻辑)两部分组成。二者可自由组合、可扩展——用户可选择任意反馈提供者搭配任意反馈实现,灵活定义自定义评估指标,这是TruLens区别于固定指标集的框架的灵活性来源。
TruLens定义了RAG三元组(RAG Triad)作为核心评估指标:上下文相关性(context relevance)衡量检索上下文与查询的相关程度,忠实度(faithfulness)衡量答案是否基于上下文无幻觉,答案相关性(answer relevance)衡量答案是否切题。这三个指标分别对应检索质量、生成忠实性和生成切题性,覆盖了RAG的关键质量侧面。不同反馈函数的原始评分范围不同(如0-1或1-5),TruLens会归一化到统一区间,便于多指标聚合加权比较和设定质量阈值。
TruLens的突出能力是可观测性。它通过instrumentation记录RAG应用每一步(检索、生成等)的输入、输出和中间状态,形成完整的调用链追踪记录,并实时将反馈函数的评估结果记录到数据库(如SQLite/DuckDB)。通过Dashboard可视化,开发者能回溯从查询到检索到生成的完整流程,查看每一步的输入输出和各反馈函数评分,快速定位质量问题是出在检索环节还是生成环节。这种端到端的可观测性是TruLens的核心价值。
TruLens还提供元评估(meta-evaluation)能力,即评估反馈函数本身与人类标注的一致性(如用Kendall Tau排序一致性检验),确保所选反馈函数可信。由于强调追踪和定位,TruLens适合在出现质量问题时做问题排查与诊断——当RAG回答不佳时,通过调用链追踪可快速判断是检索召回不足、上下文不相关,还是生成幻觉或不切题。因此TruLens的可观测性强,适合问题定位,与RAGAS的精评和ARES的低成本监控形成互补。
忠实度指标的评估原理与陷阱
忠实度是RAG评估中最受关注的指标,其原理是将答案拆分为陈述句后计算可由上下文推导的比例。然而忠实度指标存在多个陷阱需警惕。首先是LLM评审员自身的判断错误:判断陈述句是否可由上下文推导本身依赖LLM推理能力,LLM可能因能力不足或偏差误判——将本不可推导的句子判为可推导(漏报幻觉),或将可推导的判为不可推导(误报)。不同LLM作为评审员时评分差异可达10%以上,因此RAGAS的忠实度评分并非绝对客观,应作为相对指标用于版本对比。
其次是检索上下文含错误时的忠实度陷阱。忠实度只衡量答案是否基于检索上下文,不判断上下文本身是否正确。若检索器召回了包含事实错误的上下文(如过时信息、错误数据),生成模型忠实地基于该错误上下文生成答案,则答案虽然忠实度很高(完全可由上下文推导)但实际是错误的。这意味着忠实度高不等于回答正确——忠实度无法检测上下文本身的事实错误,这是其最根本的局限,需结合其他指标或人工判断事实正确性。
第三是评分对陈述拆分粒度的敏感性。忠实度等于可推导陈述句数除以总陈述句数,拆分粒度直接改变分子分母的计数。拆分越细,越易暴露不可推导的部分(幻觉被拆出来单独判定),忠实度可能下降;拆分越粗,多个主张合并为一句,易被整体覆盖判定为可推导,忠实度可能虚高。因此同一答案用不同拆分粒度会得到不同忠实度评分,这是忠实度指标的固有敏感性,评估时需统一拆分策略以保证可比性。
鉴于这些陷阱,使用忠实度指标时需注意:一是认识到LLM-as-judge的偏差,用多模型集成或相对对比缓解,并定期人工校准;二是不能仅凭忠实度判断答案正确性,需结合上下文质量评估和事实核查;三是统一陈述拆分粒度以保证评分可比;四是将忠实度作为相对指标追踪版本变化趋势,而非绝对客观标准。理解这些陷阱才能正确解读忠实度评分,避免被高忠实度误导。
上下文召回与精度指标的权衡
上下文召回和精度是评估检索环节的两个核心指标,二者之间存在天然权衡。上下文召回衡量检索是否覆盖了回答所需的全部信息(参考答案陈述被上下文覆盖的比例),上下文精度衡量检索片段中相关片段的占比及排序质量。提高召回通常需召回更多片段,但这会引入更多无关片段降低精度;提高精度需精简检索结果只保留相关片段,但可能遗漏所需信息降低召回。这种此消彼长的权衡是检索系统设计的核心矛盾。
增大检索TopK是影响二者权衡的典型操作。增大TopK会召回更多片段,上下文召回通常提升(更有可能覆盖所需信息),但同时引入更多无关片段导致上下文精度下降(信噪比降低),且无关片段增多还可能干扰生成模型、浪费上下文窗口。反之减小TopK提升精度但降低召回。因此在RAG系统迭代中,单纯增大TopK并不能全面提升质量,需在召回与精度间寻找平衡点,这也是为何需要同时监控这两个指标而非只看其一。
PR曲线(精确率-召回率曲线)和F1分数是综合评估二者权衡的工具。PR曲线刻画不同阈值(或TopK)下召回与精度的权衡关系,帮助选择平衡二者的检索参数;F1分数是召回与精度的调和平均数,能综合反映二者,避免单独看召回或精度时被其中一项偏高掩盖另一项偏低。在RAG迭代中,可通过PR曲线找到召回与精度的最佳平衡点,或用F1作为综合优化目标,而非孤立优化单一指标。
实际工程中常引入reranker来平衡召回与精度。做法是先用检索器以较大TopK召回较多候选保证高召回,再用reranker(精排模型)对候选做精细重排将相关片段排到前面,最后取重排后的TopK提升精度。这样在保留高召回的同时提升了精度和排序质量,是缓解召回精度权衡的有效方案。此外,上下文召回为1但精度低意味着检索召回了所需信息但混入大量无关片段,信噪比低可能干扰生成——此时引入reranker精排能显著改善。综合运用PR曲线、F1和reranker能在召回与精度间取得良好平衡。
多框架组合的工程实践与持续监控
RAGAS、ARES、TruLens各有侧重,实际工程中常组合使用以覆盖不同需求。RAGAS评估精度高但成本高(每样本多次LLM调用),适合迭代开发阶段对少量样本做精细评估和版本对比;ARES成本低且给出置信区间,适合生产环境对大量样本做持续监控,及时发现质量退化;TruLens可观测性强,能追踪完整调用链,适合在出现质量问题时定位是检索还是生成环节的问题。三者互补而非替代,组合使用能形成完整的评估与监控体系。
典型的组合实践是分阶段分工。开发迭代阶段用RAGAS对评估集做精细评估,量化对比不同版本(如调整TopK、更换检索模型、修改提示)的忠实度、召回、精度等指标,指导优化方向;上线后用ARES做生产环境的低成本持续监控,跟踪指标趋势和置信区间,当指标显著下降或置信区间异常时触发告警;出现问题时用TruLens的调用链追踪定位具体环节——是检索召回不足、上下文不相关,还是生成幻觉或不切题,再针对性优化。这种分层组合兼顾了精度、成本和可诊断性。
持续监控需建立质量基线和告警机制。用ARES定期评估生产流量样本,记录忠实度、上下文相关性等指标的历史基线和波动范围,设定质量阈值,当指标跌破阈值或置信区间显著偏离时告警。同时需关注分布漂移——用户查询分布或文档库变化可能导致历史基线失效,需动态更新基线。此外,自动化指标对语义细微差别和业务场景捕捉有限,需定期人工校准,抽检样本人工评估并与自动指标对比,保证评估与真实质量一致,防止自动指标与用户感知脱节。
多框架组合还需注意评估口径一致性和成本控制。不同框架对同一指标(如忠实度)的实现细节不同(拆分粒度、判断方式),跨框架对比时需注意口径差异,尽量在同一框架内做版本对比以保证可比性。成本方面,RAGAS的高成本限制了其样本规模,可用ARES对大规模样本低成本评估、RAGAS对小样本精评的分层策略控制总成本。综合而言,多框架组合的工程实践核心是按场景分工、建立监控闭环、定期人工校准,使RAG系统在精度、成本和可诊断性间取得平衡。
AI 应用场景
企业客服RAG质量监控
阶段:模型部署
解决的问题:对企业客服RAG系统进行质量评估与持续监控,定位并修复生成环节的忠实度问题
具体案例:某银行客服RAG系统上线后用RAGAS评估发现忠实度仅58%(答案存在大量编造内容),通过TruLens追踪调用链定位问题出在生成环节(模型未充分利用上下文而编造政策细节),针对性优化提示与生成策略后忠实度提升至89%,并用ARES建立生产持续监控跟踪指标趋势
RAG系统迭代优化反馈闭环
阶段:模型训练
解决的问题:在RAG系统迭代中量化对比不同配置的检索质量,平衡上下文召回与精度
具体案例:法律咨询RAG迭代时用RAGAS量化对比不同TopK配置,发现TopK从5增大到15后上下文召回从72%提升至91%但精度从80%降至54%,引入reranker对候选重排后在召回88%的同时精度回升至76%,实现召回与精度的平衡优化
Python 演示
import reimport mathfrom dataclasses import dataclassfrom typing import List, Dict @dataclassclass RetrievedContext: """检索到的上下文片段,relevant标记是否与答案相关""" doc_id: str content: str relevant: bool @dataclassclass RagRecord: """一条RAG评估样本:查询、检索上下文、生成答案、参考答案""" query: str contexts: List[RetrievedContext] answer: str reference: str def extract_keywords(text, n=2): """提取关键词:英文按空格分词,中文按n字滑动窗口""" if not text: return [] tokens = text.split() if len(tokens) > 1: return [t for t in tokens if len(t) > 1] return [text[i:i + n] for i in range(len(text) - n + 1)] def split_statements(text): """将文本按句号分号拆分为陈述句""" raw = re.split(r'[。;;\n]', text) return [s.strip() for s in raw if s.strip()] def statement_supported(statement, contexts): """判断陈述句是否可由上下文推导:关键词覆盖率>=0.5""" kws = extract_keywords(statement) if not kws: return False for ctx in contexts: hit = sum(1 for w in kws if w in ctx) if hit / len(kws) >= 0.5: return True return False def ragas_faithfulness(answer, contexts): """RAGAS风格忠实度:答案陈述句可由上下文推导的比例""" statements = split_statements(answer) if not statements: return 0.0 supported = sum(1 for s in statements if statement_supported(s, contexts)) return supported / len(statements) def context_recall(reference, contexts): """上下文召回:参考答案陈述句被上下文覆盖的比例""" statements = split_statements(reference) if not statements: return 0.0 covered = sum(1 for s in statements if statement_supported(s, contexts)) return covered / len(statements) def context_precision(contexts): """上下文精度:检索片段中与答案相关的比例""" if not contexts: return 0.0 return sum(1 for c in contexts if c.relevant) / len(contexts) def answer_relevance(query, answer): """答案相关性:查询与答案关键词重合度""" qk = set(extract_keywords(query)) ak = set(extract_keywords(answer)) if not qk: return 0.0 return len(qk & ak) / len(qk) class AresClassifier: """ARES风格轻量分类器:少量标注训练后对片段打分""" def __init__(self): self.weights = {} def fit(self, labeled_pairs): """用少量标注样本训练关键词权重""" for text, label in labeled_pairs: for w in extract_keywords(text): self.weights[w] = self.weights.get(w, 0.0) + (1.0 if label else -1.0) def score(self, text): """对单个片段打分,sigmoid归一化为相关性概率""" kws = extract_keywords(text) vals = [self.weights[w] for w in kws if w in self.weights] if not vals: return 0.5 return 1.0 / (1.0 + math.exp(-sum(vals) / len(vals))) class TruLensFeedback: """TruLens风格反馈函数:可组合评估并记录追踪""" def __init__(self): self.records = [] def faithfulness(self, record): """忠实度反馈函数,记录评分到追踪""" score = ragas_faithfulness(record.answer, [c.content for c in record.contexts]) result = {"metric": "faithfulness", "score": round(score, 3)} self.records.append(result) return result def context_relevance(self, record): """上下文相关性反馈函数,记录评分到追踪""" score = context_precision(record.contexts) result = {"metric": "context_relevance", "score": round(score, 3)} self.records.append(result) return result def trace(self): """输出可观测性追踪记录""" return self.records def rag_pipeline(query, corpus, top_k=4): """模拟RAG查询-检索-生成流程""" qk = set(extract_keywords(query)) scored = [] for doc in corpus: dk = set(extract_keywords(doc.content)) scored.append((len(qk & dk), doc)) scored.sort(key=lambda x: x[0], reverse=True) retrieved = [doc for _, doc in scored[:top_k]] answer = ";".join(c.content for c in retrieved if c.relevant) or "未检索到相关信息" reference = "RAG评估用于衡量检索与生成质量;忠实度衡量答案是否基于上下文" return RagRecord(query, retrieved, answer, reference) corpus = [ RetrievedContext("d1", "RAG评估衡量检索与生成质量", True), RetrievedContext("d2", "忠实度衡量答案是否基于上下文", True), RetrievedContext("d3", "今天天气很好适合户外活动", False), RetrievedContext("d4", "上下文召回衡量参考答案覆盖率", True), RetrievedContext("d5", "足球比赛今晚八点开始", False),] record = rag_pipeline("RAG评估如何衡量生成质量", corpus, top_k=4)ctx_text = [c.content for c in record.contexts] faith = ragas_faithfulness(record.answer, ctx_text)recall = context_recall(record.reference, ctx_text)precision = context_precision(record.contexts)rel = answer_relevance(record.query, record.answer) ares = AresClassifier()ares.fit([(c.content, c.relevant) for c in corpus])ares_scores = {c.doc_id: round(ares.score(c.content), 3) for c in record.contexts} tru = TruLensFeedback()tru.faithfulness(record)tru.context_relevance(record) print(f"Faithfulness: {faith:.3f}")print(f"Context Recall: {recall:.3f}")print(f"Context Precision: {precision:.3f}")print(f"Answer Relevance: {rel:.3f}")print(f"ARES scores: {ares_scores}")print(f"TruLens trace: {tru.trace()}")
import re导入re正则模块用于将文本拆分为陈述句import math导入math用于ARES分类器的sigmoid概率归一化class RetrievedContext:定义检索上下文片段数据类,relevant标记该片段是否与答案相关def extract_keywords(text, n=2):定义关键词提取函数,英文按空格分词、中文按n字滑动窗口return [text[i:i + n] for i in range(len(text) - n + 1)]中文文本按n字滑动窗口提取关键词,用于后续匹配判定def split_statements(text):定义陈述句拆分函数,按句号分号将文本切分为原子陈述句def ragas_faithfulness(answer, contexts):定义RAGAS风格忠实度计算,衡量答案陈述句可由上下文推导的比例supported = sum(1 for s in statements if statement_supported(s, contexts))统计答案陈述句中可由上下文推导支持的数量,除以总数得忠实度def context_recall(reference, contexts):定义上下文召回计算,衡量参考答案陈述句被上下文覆盖的比例def context_precision(contexts):定义上下文精度计算,衡量检索片段中相关片段的占比class AresClassifier:定义ARES风格轻量分类器,用少量标注训练后对片段低成本打分self.weights[w] = self.weights.get(w, 0.0) + (1.0 if label else -1.0)根据标注标签更新关键词权重,相关为正不相关为负return 1.0 / (1.0 + math.exp(-sum(vals) / len(vals)))用sigmoid将关键词权重聚合归一化为0到1的相关性概率分数class TruLensFeedback:定义TruLens风格反馈函数,将评估封装为可组合函数并记录追踪def rag_pipeline(query, corpus, top_k=4):定义模拟RAG查询-检索-生成流程,按关键词匹配检索并拼接生成答案
常见问答
RAGAS的忠实度指标是如何计算的?它需要参考答案吗?
ARES相比RAGAS如何降低评估成本?预测驱动推断(PPI)起什么作用?
TruLens的反馈函数和可观测性体现在哪里?它适合解决什么问题?
为什么忠实度高不等于回答正确?忠实度指标有哪些陷阱?
上下文召回与精度为何存在权衡?工程上如何平衡二者?
常见误区
误区认为RAGAS的LLM-as-judge评分是绝对客观的
正解LLM评审员自身存在判断偏差,不同模型作为评审员时评分差异可达10%以上,且对提示敏感。RAGAS评分应作为相对指标用于版本对比和趋势追踪,而非绝对客观标准,必要时用多模型集成或定期人工校准缓解偏差
为何常见:将LLM的自动化输出误认为客观真实,忽略LLM评审员自身的推理偏差和模型间差异
误区认为忠实度高就等于回答正确
正解忠实度只衡量答案是否基于检索上下文,不判断上下文本身是否正确。若检索到含事实错误的上下文,忠实地基于它生成的答案也会出错而忠实度仍高。忠实度无法检测上下文事实错误,需结合上下文质量评估和事实核查判断答案正确性
为何常见:将忠实于上下文与事实正确性混为一谈,忽略了检索上下文本身可能错误的情况
误区认为上下文召回和精度可以同时最大化
正解召回与精度存在天然权衡:提高召回需召回更多片段但引入无关片段降低精度,提高精度需精简结果但可能遗漏信息降低召回。增大TopK提升召回降低精度是典型体现,二者不能同时无限最大化,需用PR曲线、F1分数和reranker寻找平衡点
为何常见:期望所有指标同时最优,忽略检索系统中召回与精度此消彼长的固有矛盾
误区认为评估框架可完全替代人工评测
正解自动化评估指标对语义细微差别、业务特定语义和主观质量捕捉有限,LLM评审存在偏差,且上下文事实错误等问题自动指标难以发现。仍需定期人工校准——抽检样本人工评估并与自动指标对比,保证评估与真实质量和用户感知一致,自动化评估是辅助而非完全替代人工
为何常见:高估自动化指标的覆盖能力,忽略语义理解和业务场景中人工判断不可替代的部分
参考来源
- paperRAGAS: Automated Evaluation of Retrieval Augmented GenerationRAGAS论文,提出基于LLM-as-judge的RAG自动化评估框架,定义忠实度、答案相关性、上下文召回与精度等维度及无参考评估机制
- paperARES: An Automated Evaluation Framework for Retrieval-Augmented Generation SystemsARES论文,提出用少量标注训练轻量LLM评审员并结合预测驱动推断(PPI)校正偏差给出置信区间,减少80%以上评估成本
- docTruLens: Evaluation using Feedback FunctionsTruLens官方文档,介绍可组合反馈函数、RAG三元组指标与调用链可观测性追踪机制
- paperEvaluation of Retrieval-Augmented Generation: A SurveyRAG评估综述,系统梳理检索与生成组件的可量化指标(相关性、准确率、忠实度)及各类评估基准的局限
- docLangChain Evaluation Guide for RAGLangChain官方评估指南,介绍RAG应用的评估接入与RAGAS等评估框架的集成使用方法