open-rag-eval
用 LLM 评估 RAG 系统质量,无需人工标注即可量化检索与生成效果
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 LLM 评估 RAG 系统质量,无需人工标注即可量化检索与生成效果
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Open RAG Eval 可视化界面UMBRELA(UMbrela is the Bing RELevance Assessor)是微软 Bing relevance assessor 的开源复现。核心思想很简单:不用人工,直接让 GPT-4o 来判断每条检索结果与 query 的相关性。 它使用 0-3 分制:
AutoNuggetizer 解决了生成质量评估的难题。它的思路来自 TREC QA 评测的「信息粒」(Nugget)方法,但做了自动化升级: Step 1:Nugget 创建。给定 query + 检索内容,LLM 自动提取「原子信息单元」——每个单元是一个 1-12 个词的不可分割的信息点(最多 30 个)。例如对于「黑洞是什么」这个问题,LLM 可能提取出:
项目采用模块化插件架构,代码组织清晰,扩展性极强:
open_rag_eval/
├── connectors/ # RAG 平台连接器
│ ├── vectara_connector.py # Vectara 官方连接器
│ ├── llama_index_connector.py # LlamaIndex 集成
│ └── langchain_connector.py # LangChain 集成
├── evaluators/ # 评估器
│ ├── trec_evaluator.py # TREC-RAG 基准评估器
│ ├── consistency_evaluator.py # 一致性评估
│ └── golden_answer_evaluator.py # 有标注数据时使用
├── metrics/ # 核心指标实现
│ ├── umbrela_metric.py # UMBRELA 检索相关性
│ ├── autonugget_metric.py # AutoNuggetizer 生成质量
│ ├── hallucination_metric.py # 幻觉检测
│ └── citation_metric.py # 引用质量
├── models/ # LLM 法官
│ ├── llm_judges.py # 多模型支持(OpenAI/Claude/Anthropic/Together)
│ └── embedding_models.py # 向量嵌入模型
├── api/ # REST API 服务
│ └── server.py # Flask API(端口5000)
├── viz/ # 可视化
│ └── visualize.py # 评估结果图表
└── cli.py # 命令行入口
pip install open-rag-eval
准备 query 列表(CSV 格式):
query
黑洞是什么?
太阳有多大?
木星有几颗卫星?
配置 YAML(以 Vectara 为例):
connector:
type: VectaraConnector
options:
corpus_key: your-corpus-key
运行评估:
export VECTARA_API_KEY=your-api-key
export OPENAI_API_KEY=your-openai-key
open-rag-eval evaluate --config eval_config_vectara.yaml
git clone https://github.com/vectara/open-rag-eval.git
cd open-rag-eval
docker build -t open-rag-eval .
docker run -p 5000:5000 -e OPENAI_API_KEY=... open-rag-eval
python run_server.py --host 0.0.0.0 --port 5000
/evaluate POST 发送 RAG 结果即可获取评估分数。一句话总结:Open RAG Eval 用 LLM 评估 RAG,巧妙绕过了「黄金答案」的人工标注瓶颈,让 RAG 系统的迭代评估变得快速、可重复、成本可控。