当前位置: 首页 > java >正文

langchain框架-对比分析chain的三种实现方式

对比分析chain的三种实现方式

方式一
setup_and_retrieval = RunnableParallel({"context": retriever,"question": RunnablePassthrough()}
)
chain = setup_and_retrieval | prompt | model | outputParser

效果分析:

  • 并行处理RunnableParallel 并行执行两个任务,一个是通过 retriever 获取上下文,另一个是通过 RunnablePassthrough 传递问题。
  • 输入输出setup_and_retrieval 的输出是一个包含 contextquestion 的字典,这个字典被传递给 prompt 组件。
  • 适用场景:适用于简单的 RAG(Retrieval-Augmented Generation)链路,用户输入一个字符串形式的问题。
方式二
chain = ({"context": retriever, "question": RunnablePassthrough()}| prompt| model| StrOutputParser()
)
chain.invoke("小明在哪里工作?")

效果分析:

  • 简洁性:这种方式直接将 RunnableParallel 的定义嵌入到链路中,减少了中间变量的定义,使代码更加简洁。
  • 功能等价:与方式一功能等价,都是通过 RunnableParallel 并行获取上下文和问题,然后传递给后续组件。
  • 适用场景:适用于需要快速构建简单链路的场景。
方式三
chain = ({"context": itemgetter("question") | retriever,"question": itemgetter("question"),"name": itemgetter("name"),}| prompt| model| StrOutputParser()
)
chain.invoke({"question": "小明在哪里工作?", "name": "主人"})

效果分析:

  • 扩展性:这种方式通过 itemgetter 从输入字典中提取 questionname,并分别传递给 retriever 和其他组件。这种方式更加灵活,可以处理更复杂的输入结构。
  • 多输入支持:除了 question,还可以传递其他信息(如 name),这使得链路可以处理更复杂的需求。
  • 适用场景:适用于需要处理复杂输入结构或需要从多个字段中提取信息的场景。

总结

  • 方式一方式二 主要适用于简单的 RAG 链路,用户输入一个字符串形式的问题。方式二更加简洁。
  • 方式三 提供了更高的灵活性和扩展性,可以处理更复杂的输入结构,适用于需要从多个字段中提取信息的场景。

通过对比可以看出,三种方式各有优劣,选择哪种方式取决于具体的应用需求和输入数据的复杂性。

http://www.xdnf.cn/news/9874.html

相关文章:

  • 【二】10.L并发与竞争机制
  • HOW - 简历和求职面试宝典(三)
  • Python多版本共存指南:使用虚拟环境实现不同Python版本的灵活切换
  • 【CBAP50技术手册】#29 Mind Mapping(思维导图):BA(业务分析师)的“思维引擎”
  • Debian:自由操作系统的精神图腾与技术基石
  • Python 基于卷积神经网络手写数字识别
  • (二)视觉——工业镜头(以海康威视为例)
  • 罗马-华为
  • CC攻击的种类与特点解析
  • ElementUI表单验证指南
  • Spring Boot的启动流程,以及各个扩展点的执行顺序
  • AI视频生成加速器:Medeo如何用零门槛技术重塑内容创作
  • 【python爬虫】利用代理IP爬取filckr网站数据
  • UFSH2024 程序化生成 笔记
  • GJOI 5.27 题解
  • 增广拉格朗日时空联合规划ALTRO-iLQR (一)
  • 2.qml使用c++
  • 【C++基础知识】RAII的一个简单示例讲解
  • MySQL8.4组复制
  • SpeedFolding 论文翻译
  • “谁能进,谁不能进?”——用NAC精准控制网络访问
  • JS中class和构造函数的区别
  • Selenium 测试框架 - Kotlin
  • 制造企业搭建AI智能生产线怎么部署?
  • .NET WinForm图像识别二维码/条形码并读取其中内容
  • 01.认识Kubernetes
  • 广告流量监测和IP地址离线库
  • Nexus仓库数据高可用备份与恢复方案(下)
  • 苹果FINDMY和谷歌FIND HUB增强共享位置功能
  • offset 家族和 client 家族