# 让模型评估模型:构建双代理RAG评估系统的步骤解析

实现Corrective RAG代理工作流​:可视化详解与实战代码解读 自我修正型Corrective RAG是提升RAG系统的常用技巧。它通过引入检索文档的自评估步骤,确保生成回答的相关性。顶部动图演示了完整流程!现在就来动手实现吧!代码已开源 阅读详情

在当前大语言模型(LLM)应用开发的背景下,一个关键问题是如何评估模型输出的准确性。我们需要确定哪些评估指标能够有效衡量提示(prompt)的效果,以及在多大程度上需要对提示进行优化。

为解决这一问题,我们将介绍一个基于双代理的RAG(检索增强生成)评估系统。该系统使用生成代理和反馈代理,基于预定义的测试集对输出进行评估。或者更简单的说,我们使用一个模型来评估另外一个模型的输出。

在本文中将详细介绍如何构建这样一个RAG评估系统,并展示基于四种提示工程技术的不同结果,包括ReAct、思维链(Chain of Thought)、自一致性(Self-Consistency)和角色提示(Role Prompting)。

以下是该项目的整体架构图:

数据收集与摄入

此部分在 ingestion.py 中实现

数据收集过程使用了三篇文章作为源数据。在加载和分割数据后,我们对文本进行嵌入,并将嵌入向量存储在FAISS中。FAISS(Facebook AI Similarity Search)是由Meta开发的开源库,用于高效进行密集向量的相似性搜索和聚类。

以下是实现代码:

 urls \= \[    
     "https://medium.com/@fareedkhandev/prompt-engineering-complete-guide-2968776f0431",    
     "https://medium.com/@researchgraph/prompt-engineering-21112dbfc789",    
     "https://blog.fabrichq.ai/what-is-prompt-engineering-a-detailed-guide-with-examples-4d3cbbd53792"    
 \]    
 loader \= WebBaseLoader(urls)    
 \# 文本分割器    
 text\_splitter \= RecursiveCharacterTextSplitter(    
     chunk\_size\=1000, chunk\_overlap\=20    
 )    
 documents \= loader.load\_and\_split(text\_splitter)    
   
 \# LLM    
 embedder\_llm \= OpenAIModel().embed\_model()    
   
 \# 对文档块进行嵌入    
 vectorstore \= FAISS.from\_documents(documents, embedder\_llm)    
 vectorstore.save\_local("faiss\_embed")    
 print("===== 数据摄入完成 ===== ")

创建测试集

此部分在 create_test_set.py 中实现

测试集的构建使用了Giskard工具。Giskard是一个开源工具,专为测试和改进机器学习模型而设计。它使用户能够创建、运行和自动化测试,以评估模型的性能、公平性和稳健性。

实现代码如下:

 from langchain\_community.document\_loaders import WebBaseLoader    
 from langchain.text\_splitter import RecursiveCharacterTextSplitter    
 \# 用于构建测试集    
 from giskard.rag import KnowledgeBase, generate\_testset    
 \# 数据框    
 import pandas as pd    
 from LLM.models import OpenAIModel    
   
 if \_\_name\_\_ \== '\_\_main\_\_':    
     urls \= \[    
         "https://medium.com/@fareedkhandev/prompt-engineering-complete-guide-2968776f0431",    
         "https://medium.com/@researchgraph/prompt-engineering-21112dbfc789",    
         "https://blog.fabrichq.ai/what-is-prompt-engineering-a-detailed-guide-with-examples-4d3cbbd53792"    
     \]    
     loader \= WebBaseLoader(urls)    
     \# 文本分割器    
     text\_splitter \= RecursiveCharacterTextSplitter(    
         chunk\_size\=1000, chunk\_overlap\=20    
     )    
     documents \= loader.load\_and\_split(text\_splitter)    
   
     df \= pd.DataFrame(\[doc.page\_content for doc in documents\], columns\=\["text"\])    
     print(df.head(10))    
   
     \## 将数据框添加到giskard KnowledgeBase    
     knowledge\_base \= KnowledgeBase(df)    
   
     \# 生成测试集    
     test\_set \= generate\_testset(    
         knowledge\_base,    
         num\_questions\=10,    
         agent\_description\="A chatbot answering question about prompt engineering"    
     )    
     test\_set.save("test-set.jsonl")

由于文本太多,生成的样例就不显示了

答案检索

此部分在 generation.py 中实现

本文的第一个流程是生成流程。我们从FAISS检索数据。实现代码如下:

 generate\_llm \= OpenAIModel().generate\_model()    
 embedder\_llm \= OpenAIModel().embed\_model()    
 vectorstore \= FAISS.load\_local("faiss\_embed", embedder\_llm, allow\_dangerous\_deserialization\=True)    
   
 retrieval\_qa\_chat\_prompt \= (retrieval)    
   
 prompt \= ChatPromptTemplate.from\_messages(    
     \[    
         ("system", retrieval\_qa\_chat\_prompt),    
         ("human", "{input}"),    
     \]    
 )  
 combine\_docs\_chain \= create\_stuff\_documents\_chain(generate\_llm, prompt)    
 retrival\_chain \= create\_retrieval\_chain(    
     retriever\=vectorstore.as\_retriever(),    
     combine\_docs\_chain\=combine\_docs\_chain    
 )

评估

此部分在 evaluation.py 中实现

评估过程中向LLM提供三个输入:问题、AI答案(第一个LLM的输出)和实际答案(从测试集中检索)。实现代码如下:

 def RAG\_eval(question, AI\_answer, Actual\_answer, prompt):    
     evaluation\_prompt\_template \= PromptTemplate(    
         input\_variables\=\[    
             "question", "AI\_answer", "Actual\_answer"    
         \],    
         template\=prompt    
     )    
     generate\_llm \= OpenAIModel().generate\_model()    
   
     optimization\_chain \= evaluation\_prompt\_template | generate\_llm | StrOutputParser()    
   
     result\_optimization \= optimization\_chain.invoke(    
         {"question": question, "AI\_answer": AI\_answer, "Actual\_answer": Actual\_answer})    
     return result\_optimization

链接整合

此部分在 main.py 中实现

主文件遍历测试数据,使用问题作为第一个LLM的输入。然后将第一个LLM的输出用作第二个LLM的输入。实现代码如下:

 for item in data:    
     question \= {"input": item\['question'\]}    
     \# 生成回答    
     result \= retrival\_chain.invoke(input\=question)    
     AI\_answer \= result\['answer'\]    
     \# 获取实际答案    
     Actual\_answer \= item\['reference\_answer'\]    
   
     \# 将所有内容提供给第二个LLM    
     Evaluation \= RAG\_eval(    
         question\=question,    
         AI\_answer\=AI\_answer,    
         Actual\_answer\=Actual\_answer,    
         prompt\=evaluation\_self\_consistency\_prompting    
     )    
   
     print(f"AI\_answer:{AI\_answer}")    
     print(Evaluation)

实验结果

评估组件采用了四种不同的提示工程技术:

  1. 思维链(Chain of Thought)

  2. ReAct

  3. 角色提示(Role Prompting)

  4. 自一致性(Self-Consistency)

以下是基于这四种不同提示技术的评估代理对测试集第一个问题的输出示例:

问题: What is the purpose of incorporating knowledge in prompt engineering?

实际答案: Incorporating knowledge or information in prompt engineering enhances the model’s prediction accuracy. By providing relevant knowledge or information related to the task at hand, the model can leverage this additional context to make more accurate predictions. This technique enables the model to tap into external resources or pre-existing knowledge to improve its understanding and generate more informed responses

AI答案: Incorporating knowledge in prompt engineering enhances the quality of responses by guiding AI models to provide not just answers, but also relevant context and insights. This leads to more informative and meaningful interactions, improving user experience and understanding.

使用思维链输出的评估结果: The student’s answer correctly identifies that incorporating knowledge enhances the quality of responses and improves user experience. However, it lacks emphasis on the model’s prediction accuracy and the importance of leveraging external resources or pre-existing knowledge, which are key components of the actual answer. This omission affects the completeness and correctness of the response.

使用ReAct输出的评估结果:** The student’s answer correctly identifies that incorporating knowledge enhances the quality of responses and improves user experience. However, it lacks emphasis on the specific aspect of prediction accuracy and the importance of leveraging external resources or pre-existing knowledge, which are key components of the actual answer. This omission affects the completeness of the response, leading to a lower evaluation percentage.

使用角色提示输出的评估结果:** The student’s response accurately captures the essence of incorporating knowledge in prompt engineering by emphasizing the enhancement of response quality and user experience. However, it lacks specific mention of prediction accuracy and the model’s ability to leverage external resources, which are key aspects of the actual response.

使用自一致性输出的评估结果:** The student’s answer captures the essence of enhancing the quality of responses through knowledge incorporation, but it lacks specific mention of prediction accuracy and the model’s ability to leverage external resources. The initial evaluation was slightly optimistic, but upon reevaluation, it became clear that the answer did not fully align with the actual answer’s emphasis on prediction accuracy and context utilization

实验结果分析

下图展示了四种提示工程技术的准确性比较。每种技术由图中的一条独立线条表示,X轴上的10个数据点对应测试数据的索引值,Y轴表示准确性值。

在评估过程中,准确性达到85%及以上的响应视为真正准确(True),低于85%则视为不准确(False)。下面的条形图展示了基于每种提示工程技术的评估结果中True和False的计数。

实验结果显示,ReAct和思维链(Chain of Thought)的性能几乎相似,而自一致性(Self-Consistency)则表现出完全相反的行为。角色提示(Role Prompting)在所有方法中表现最不稳定。

一些发现

  1. 评估代理的所有响应虽然在内容上相近,都提到了类似的缺失元素,但反馈之间的差异主要体现在具体措辞和强调点上,这些细微差别可能会对最终的评分过程产生影响。

  2. 角色提示和自一致性技术倾向于强调结果的积极方面,而ReAct和思维链则更多地使用特定措辞来突出回答中的缺失部分。

总结

本文展示了如何构建一个基于双代理的RAG(检索增强生成)评估系统,该系统使用两个大语言模型(LLM):一个用于生成响应,另一个用于提供反馈。通过采用四种不同的提示工程技术——思维链、ReAct、角色提示和自一致性,我们能够全面评估AI生成响应的准确性和质量。

实验结果表明:

  1. ReAct和思维链技术在性能上表现相似,这可能是因为它们都强调了结构化思考过程。

  2. 自一致性技术经常产生与其他方法相反的结果,这突显了在评估过程中考虑多个角度的重要性。

  3. 角色提示技术被证明是最不可靠的,这可能是由于其在不同上下文中的不一致性。

本文代码:

https://github.com/harrisonsrp/RAG_Evaluation

作者:Homayoun S.

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

LlamaIndex——RAG概述 目前,以下组件是 Transformation 对象:文本分割器、节点解析器、元数据提取器、Embeddingsmodel(查看我们支持的嵌入列表)。除了这些模块,我们可以自定义转换操作,例如import re], 阅读详情

相关推荐

RAGAs评估实战手册:构建可信RAG系统的四大核心指标

RAG(检索增强生成)作为当前企业级AI应用的关键架构,其效果保障不能依赖黑盒式端到端准确率或人工抽检,而需深入拆解为检索、生成与整合三阶段的可量化验证。RAGAs(Retrieval-Augmented Generation Assessment)正是为此设计的工程化评估框架,通过Context Precision、Faithfulness、Answer Relevancy和Context Recall四大指标,分别衡量检索精准度、答案保真性、问题响应力与关键信息召回能力。它不替代模型优化,而是定位故障根

weixin_33676492的博客 473

RAGAS核心函数介绍、保存实验结果到本地

摘要 本文介绍了 evaluate() 函数和 EvaluationResult 类在 RAG 系统评估中的应用。evaluate() 是 ragas 库的核心函数,用于量化评估 RAG 系统在问答、检索等方面的性能,支持多种参数配置,包括数据集、评估指标和模型设置。其执行流程包括初始化校验、数据处理、模型适配、任务调度和结果处理,最终返回结构化评估结果。EvaluationResult 类用于存储和处理评估结果,提供便捷方法进行数据分析和结果展示,支持转换为 Pandas DataFrame 进行进一步分

dadalongfan的博客 827

基于LangGraph构建智能检索代理:从RAG到Agentic RAG的实战指南

最近在准备 AI 大模型相关的面试,发现 Agent、RAG、LangChain、LangGraph 这些概念是高频考点,但网上资料要么太零散,要么只讲理论没有实战。很多同学在搭建一个能自主决策、带检索增强的智能体(Agentic RAG)时,常常卡在流程编排和状态管理上,导致系统要么“有问必查”效率低下,要么“该查不查”回答不准。 本文将从零开始,手把手带你构建一个基于 LangGraph 的智能检索代理(Custom RAG Agent)。这个项目不仅覆盖了从文档预处理、向量检索到智能体决策的完整链路,

weixin_30684743的博客 350

让模型评估模型:构建双代理RAG评估系统的步骤解析

本文展示了如何构建一个基于双代理的RAG(检索增强生成)评估系统,该系统使用两个大语言模型(LLM):一个用于生成响应,另一个用于提供反馈。通过采用四种不同的提示工程技术——思维链、ReAct、角色提示和自一致性,我们能够全面评估AI生成响应的准确性和质量。ReAct和思维链技术在性能上表现相似,这可能是因为它们都强调了结构化思考过程。自一致性技术经常产生与其他方法相反的结果,这突显了在评估过程中考虑多个角度的重要性。角色提示技术被证明是最不可靠的,这可能是由于其在不同上下文中的不一致性。

deephub 3973

AI大模型开发者实战指南:从RAG构建到面试解析

在人工智能领域,Transformer架构已成为自然语言处理的核心基础,其自注意力机制有效解决了长序列依赖问题,奠定了大模型的技术基石。基于此原理,检索增强生成技术应运而生,它通过结合向量数据库的语义检索与大模型的生成能力,显著提升了AI应用在知识问答等场景中的准确性与可靠性。这项技术的核心价值在于实现了外部知识的高效利用,降低了模型幻觉风险,是当前企业构建私有知识库智能助手的主流工程方案。本文聚焦于RAG系统的完整实现路径,并深入解析了微调、部署优化等关键环节,旨在帮助开发者快速掌握大模型集成与落地的核心

jardownload的博客 688

【AI大模型应用开发】【项目实战】22.RAG智慧问答项目-(十)RAG系统评估

RAG系统的评估方法与工具,重点关注RAGAS框架的应用和评估数据集的构建。主要内容包括: RAGAS评估框架 通过自动化指标评估RAG系统的检索和生成效果 核心指标:上下文相关性、上下文召回率、忠实度、答案相关性 评估过程依赖大语言模型和嵌入模型 评估实现 展示了使用Python代码加载数据集、配置评估环境、执行评估的完整流程 结果包含各指标得分(0-1范围)并输出为CSV文件 评估数据集构建 强调需要高质量评估数据集 提出使用代理生成测试样本、检查质量、执行评估的系统化流程 提供了各类提示词模板

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 449

RAG系统效果难评?2025年必备的RAG评估框架与工具详解

检索增强生成(Retrieval-Augmented Generation, RAG)已成为当前大型语言模型(LLM)应用开发的主流范式。通过结合外部知识库的检索能力与 LLM 的强大生成能力,RAG 有效缓解了 LLM 的“幻觉”问题,提高了回答的事实性和时效性,在智能客服、企业知识库问答、内容生成等场景中大放异彩。

ytt0523_com的博客 1560

Jaspersoft Studio安装与配置全攻略:从下载到首个报表生成

本文提供Jaspersoft Studio从下载、安装到创建首个报表的完整实战指南。详细介绍了如何获取安装包、配置工作空间,并通过可视化设计器创建报表模板、添加参数与字段,最终实现数据预览与PDF导出。帮助Java开发者快速掌握这一强大的开源报表工具,提升报表开发效率。

weixin_28826521的博客 704

RAG流程优化(微调)的4个基本策略

最后的提示构造涉及到将检索到的数据集成到模型的查询中。提示符中的微小变化会显著影响结果,使其成为一个反复试验的过程。在提示中提供示例可以引导模型获得更准确和相关的输出,提示词的修改不涉及代码的改变,所以这里我们就不进行演示了优化检索增强生成(RAG是一个迭代过程,它在很大程度上取决于应用程序的特定数据和上下文。我们探讨了四种关键优化方向:细化分块方法、选择和微调嵌入模型、选择有效的向量搜索方法以及制作精确的提示。这些组件中的每一个都在提高RAG系统的性能方面起着至关重要的作用。

deephub 4212

拆解大疆M300电池BMS:基于TI TIDA-010030方案的硬件架构深度分析

本文深度解析了大疆M300无人机电池管理系统(BMS)基于TI TIDA-010030参考设计的硬件架构。通过对比TI方案与大疆实现的差异,详细介绍了BQ7694003监控前端和BQ34Z100电量计的优化设计,以及通信架构的可靠性改进。文章还揭示了大疆在成本、空间和标准化方面的工程妥协与创新平衡,为锂电池保护方案提供了实践参考。

weixin_27066963的博客 238

Codesys电子凸轮实战:从机械替代到虚轴设计的5个关键步骤

本文详细介绍了Codesys电子凸轮技术在运动控制领域的实战应用,从机械替代到虚轴设计的5个关键步骤。通过电子凸轮技术,操作员可以快速调整切割模式,显著提升产线效率。文章还探讨了虚轴架构、CAM表设计、动态耦合技巧及调试避坑指南,为工业自动化领域提供了实用的解决方案。

tech5的博客 767

如何在LlamaIndex中使用DeepEval评估RAG/LLM的表现**

*在AI技术的迅速发展中,如何评估和改进模型的表现是一个关键问题。DeepEval是一个用于评估RAG(Retrieval-Augmented Generation)和LLM(Large Language Models)输出的强大工具。在这篇文章中,我们将介绍如何在LlamaIndex中集成和使用DeepEval进行模型评估。

qq_29929123的博客 579

波束形成算法:LCMV实现(MATLAB)

阵列信号处理,波束成形,

weixin_43601588的博客 1万+

生产环境中的RAG系统构建:从基础到高级的大模型应用技术

本文是一份关于构建生产就绪RAG系统的全面指南,从基础架构(索引、检索、生成)到高级技术(查询转换、路由策略、高级索引)进行了详细讲解。文章通过代码示例介绍了多种提升检索准确性的方法,如多查询生成、RAG-Fusion、HyDE等,并探讨了专用重新排序和AI自我纠正等高级技术。最后,文章详细介绍了RAG系统的评估方法,包括忠实度、正确性等核心指标,以及使用各种框架进行系统评估的实践。

Android_XG的博客 933

【ESP32】ESP32连接JY61P并通过WIFI发送给电脑

ESP32S连接JY61P并通过WIFI把姿态数据发送给电脑1.采用Arduino IDE编译器;需要安装ESP32的开发板管理器;2.电脑接受数据是基于python的;

Doudou_Nai的博客 1132

[TI板]MSPM0G3507——keil环境配置+烧录配置+vscode配置+空工程迁移+点灯+芯片解锁教程

本文介绍了MSPM0G3507开发环境的配置与烧录方法。主要内容包括:1)下载安装芯片支持包和SDK开发工具;2)通过串口或DAPLink两种方式实现程序烧录,详细说明了UniFlash软件的使用步骤和常见问题解决方法;3)简要提及工程迁移和LED点灯等基础操作。文章提供了完整的开发环境搭建指南,涵盖从软件安装到实际烧录的全过程,并附有相关工具下载链接和操作截图,帮助开发者快速上手MSPM0G3507开发。

qq_23220445的博客 1万+

【万字长文】RAG系统构建全攻略:从基础到高级,小白也能掌握的大模型实战指南!大模型学习

本文全面介绍了构建生产就绪RAG系统的全流程,从基础索引、检索、生成三组件,到高级查询转换、智能路由、多表示索引等优化技术,再到系统评估与自我纠错。通过代码示例和可视化内容,详细讲解每个组件的实现方法,适合小白和程序员从零开始学习大模型RAG系统构建,掌握从基础到高级的实用技能。

libaiup的博客 868

树莓派4在Bookworm Raspbian系统下无法进入桌面模式(启动后出现彩色画面,然后一直黑屏,但是可以正常启动和ssh)

本文记录了这段比较坎坷的探索之路,由于你的问题不一定是我最终解决方案的,可能是前面探索路上试过的,所以建议按顺序看排除前置问题。 双十一又买了个树莓派 4B,插上之前树莓派 4B 的 TF 卡直接就能使用(毕竟是一样规格的)。但是由于用来连接硬盘的 USB 线是坏的,我以为是系统问题就进行了重装(所以坏掉的线还是直接扔了好)。 重新安装系统就装了最新的 2023-10-10 版本的 64 位的 Raspberry Pi OS,但是出现了一个问题: 启动后出现彩色画面,然后一直黑屏。

ZhongUncle的博客 3735

使用RAGAS评估RAG系统:完整实战教程

本文介绍了使用RAGAS框架评估检索增强生成(RAG)系统的完整流程。RAGAS是一个自动化评估框架,可量化评估RAG系统在忠实度、相关性等维度的性能。文章详细说明了: 环境配置:包括Python环境创建、核心依赖安装(推荐使用RAGAS 0.4.3与LangChain 1.2.x系列)和版本验证方法 中转站API的使用优势:相比直接调用OpenAI API或本地部署,中转站API(如云雾AI)具有配置简单、稳定性高和成本适中的特点 核心实现步骤:包括API客户端配置、评估指标设置(如Faithfulnes

WMXJY的博客 4754

【LLC快速上手系列】如何在LLC谐振里优雅地调死区时间?

用示波器死盯Vds波形,找到ZVS临界点;别听“经验值”,亲自调才准;死区时间并非越短越好,也不是越长越稳,而是要“刚刚好”;用热成像看MOSFET温升变化,ZVS调好了,温度马上掉2~5℃;轻载难ZVS?适当提升频率 or 降低Lr可破!

weixin_43199439的博客 493

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

基于LangGraph构建智能RAG代理系统:从大模型基础到生产级实践

大语言模型(LLM)作为深度学习的重要分支,通过海量数据预训练获得强大的语言理解和生成能力。其技术原理基于Transformer架构,通过自注意力机制捕捉长距离依赖关系。在工程实践中,LangChain框架提供了组件化的大模型应用开发方案,而RAG(检索增强生成)技术则通过检索外部知识库来增强模型的准确性和时效性。结合智能体(Agent)的自主决策能力,可以构建复杂的多步骤工作流系统。LangGraph作为图计算框架,特别适合处理有状态、多分支的复杂业务场景,能够有效解决传统线性开发模式中的流程混乱和组件耦

weixin_33709609的博客 437

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

具有自主规划与决策能力的 RAG 工作全面解析

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索与生成模型相结合的技术,广泛应用于需要外部知识支持的 AI 任务。近年来,随着自主 AI 代理(Agent)的引入,部分 RAG 系统进化出自主规划和决策能力,能够动态优化检索策略、迭代推理并处理复杂任务。本文将深入探讨这些 RAG 工作的技术原理、实现方式、工具支持以及在客户支持、医疗保健、金融、工业等领域的具体应用,旨在为开发者提供全面参考。

weixin_40941102的博客 1378

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Bit v1.6.140 版本解析:watch 增量导入、capsule 复用调试与根级 .bitignore 实战指南

本文以 Bit 仓库的 v1.6.140 版本发布说明([releases-docs/releases/v1.6.140.md](https://link.gitcode.com/i/9f4c799282b48d931584c60975ed91e0))为主线,围绕该版本新增的 `bit watch --import`、`bit build --rewrite/--reinstall`、根级 `.b

gitblog_00481的博客 721

掌握高效LLM评测:构建智能模型评估的完整实战指南

在AI技术飞速发展的今天,大型语言模型(LLM)已成为各行各业的核心工具。然而,如何科学评估这些模型的性能,确保它们在实际应用中的可靠性和准确性,成为了开发者面临的关键挑战。DeepEval作为一个颠覆性的开源LLM评测框架,正是为了解决这一痛点而生。通过本文,您将全面了解如何利用DeepEval构建智能的模型评估系统,实现从基础评测到生产监控的全流程覆盖。 [![DeepEval评测架构图](

gitblog_00820的博客 446

类人类逻辑思维的高级智能体RAG:完整构建技术指南

一种革命性的智能体RAG系统架构,突破传统RAG仅能检索和总结的局限,实现了类人思维的深度推理能力。系统采用五阶段构建方法:首先建立融合向量存储和关系数据库的多层知识核心,支持结构化和非结构化数据的智能处理;其次组建专业化智能体团队,包括文档检索专家、数据分析师、趋势分析师和实时数据侦察员,实现任务的精准分工;第三构建认知推理引擎,通过守门员、规划师、执行器、审计员和策略师形成完整的思维循环;第四建立多维评估体系,确保系统的可靠性和准确性;最后实施对抗性测试,提升系统的鲁棒性。

AI人工智能的学习之路 1203
上一篇: 利用 coze + agent 落地企业级 AI 知识库方案
下一篇: 什么是端到端(end to end)大模型,它和传统的大模型有什么区别?其优势与劣势是什么?
冻感糕人~
博客等级 码龄3年 8926粉丝 2384原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值