公司动态

89.RAG-Ragas评估实例

📅 2026/8/17 2:38:46
89.RAG-Ragas评估实例
内容参考于图灵AI大模型全栈安装模块pip install ragas0.3效果图代码生成的表格文件列的说明question问题 对应 user_input用户输入即用户提出的问题作为评估的输入。answer回答 对应 response响应即 RAG 系统生成的答案是需要评估的文本。contexts上下文 对应 retrieved_contexts检索到的上下文即从知识库中检索出来、用于辅助生成答案的文本片段列表。ground_truth标准答案/参考答案 对应 reference参考即人工标注的正确回答。该列在数据集中是可选的但如果要计算 context_recall上下文召回率 指标则必须提供 ground_truth。context_precision 0.45 → 检索精度不足调整 top-k 或添加重排。context_recall 0.90 → 召回不错说明关键信息基本都检索到了。faithfulness 0.95 → 模型很忠实于上下文没有瞎编。answer_relevancy 0.70 → 回答有点啰嗦或部分跑题可优化提示词。运行代码会有兼容问题使用下方版本的库就可以了pip install langchain-openai0.1.23 pip install langchain-community0.2.12代码from llama_index.core import SimpleDirectoryReader, VectorStoreIndex from base_llm import llm, embed_model 读取文档 documents SimpleDirectoryReader( input_files[./data_file/deepseek介绍.txt] # 可选限制文件类型 ).load_data() print(f加载了 {len(documents)} 个文档) 构建向量索引会自动 chunk embedding index VectorStoreIndex.from_documents( documents, embed_modelembed_model ) 创建 Query Engine搜索引擎 query_engine index.as_query_engine( similarity_top_k5, # 检索前 5 个最相关片段 streamingTrue, # 如果想流式输出可设为 True llmllm ) 问题 question deepseek什么时候遭到攻击? 向大模型进行提问 response query_engine.query(question) print(\n回答) print(response) 下方开始评估 from datasets import Dataset 问题 questions [ DeepSeek 公司何时成立由谁孕育创立法定代表人是谁, DeepSeek 2024年12月26日发布了什么模型生成速度有何提升, DeepSeek-R1 模型何时发布后训练阶段用了什么关键技术, DeepSeek爆火后英伟达和纳斯达克股价受何影响, DeepSeek在2025年1月底遭遇了什么安全事件攻击来源哪里, 截至2025年2月9日DeepSeek App累计下载量和周活跃用户是多少, DeepSeek“开源周”何时进行主要开源了什么, DeepSeek与哪些汽车企业有深度合作举出至少3家。, DeepSeek 2025年3月1日披露了什么推理系统信息理论日利润多少, 有哪些国家/地区限制DeepSeek主要原因是什么 ] 提前准备好的真实答案这个答案可以让大模型生成有一种裁判类型的大模型 ground_truths [ DeepSeek成立于2023年7月17日由幻方量化孕育创立法定代表人为裴湉。, 发布了DeepSeek-V3模型。生成速度从V2.5的20 TPS提升至60 TPS3倍提升。, 2025年1月20日发布。在后训练阶段大规模使用强化学习RL技术。, 英伟达股价暴跌16.97%市值蒸发近6000亿美元纳斯达克大幅下跌。主要因市场担心AI芯片需求下降。, 遭受大规模恶意网络攻击。攻击IP主要来自美国涉及僵尸网络。, 累计下载量超1.1亿次周活跃用户最高近9700万。, 2025年2月下旬2月21日启动为期五天。开源DeepGEMM、Flash MLA、DualPipe、DeepEP、3FS等。, 吉利汽车、比亚迪、岚图汽车、宝骏汽车、上汽荣威、江汽集团、极狐汽车、长安汽车、理想汽车等。, 发布《DeepSeek-V3/R1推理系统概览》公布优化细节和成本信息。理论日利润346万元人民币约47.5万美元。, 澳大利亚、美国、意大利、韩国、台湾等。主要原因是数据隐私、国家安全、芯片来源担忧。 ] 模型回答 answers [] 文档内容 contexts [] 把检索到的内容和回答的问题进行存储 for query in questions: # query_engine.query(query)让大模型回答文档 answers.append(str(query_engine.query(query))) # 使用索引检索文档 contexts.append([node.text for node in index.as_retriever().retrieve(query)]) print(question, questions) print(answer, answers) print(contexts, contexts) print(ground_truth, ground_truths) 转换成字典 data_samples { # 问题 question: questions, # 回答 answer: answers, # 上下文从 知识库检索出来的内容 contexts: contexts, # 标准答案 ground_truth: ground_truths } 字典转换为Dataset数据集对象便于高效处理数据并适配模型训练、评估等任务。 dataset Dataset.from_dict(data_samples) from ragas import evaluate from ragas.integrations.llama_index import LlamaIndexEmbeddingsWrapper, LlamaIndexLLMWrapper from ragas.metrics import ( faithfulness, answer_relevancy, context_recall, context_precision, ) 创建大语言模型把LLamaIndex的大语言模型对象转换成Ragas可以用的对象 ragas_llm LlamaIndexLLMWrapper(llm) 创建向量模型把LLamaIndex的向量模型对象转换成Ragas可以用的对象 ragas_embeddings LlamaIndexEmbeddingsWrapper(embed_model) 进行评估 result evaluate( # 要被评估的内容 dataset, # 设置评估的那些东西 metrics[ # 评估上下文相关性 context_precision, # 评估召回性 context_recall, # 评估忠实性 faithfulness, # 评估答案的相关性 answer_relevancy, ], # 设置大语言模型 llmragas_llm, # 设置向量模型 embeddingsragas_embeddings ) 把结果转成csv表格 df result.to_pandas() print(df) df.to_csv(ragas_reval.csv, indexTrue)