LangChain Ollama实战文献检索助手(二)少样本提示FewShotPromptTemplate示例选择器

news2024/12/28 3:59:17

本期是用样例来提示大模型生成我们想要的答案。即在输入中给定提示的样例,以及提示模板,然后匹配较相关的样例进行文献综述。

创建示例样本FewShotPromptTemplate

这里我用GTP-o1生成了几个回答,作为样本

samples = [
  {"theme": "联邦学习",
   "year": "2022",
   "content": "自2022年以来,联邦学习(Federated Learning)领域取得了显著的进展,推动了其在实际应用中的可行性和有效性。\n1. 隐私保护技术的加强 近期研究在增强联邦学习的隐私保护方面取得了突破。例如,差分隐私和安全多方计算等技术的改进,使模型聚合过程更加安全,降低了敏感数据泄露的风险。这些技术的优化提高了计算效率,减少了引入的噪声,从而在保护隐私的同时保持了模型的性能。\n2. 通信效率的提升 为了解决联邦学习中的通信瓶颈,研究者开发了新的模型压缩和量化方法,如梯度剪枝、稀疏更新和压缩编码。这些方法有效减少了客户端和服务器之间的数据传输量,提高了系统的效率和可扩展性。\n3. 非独立同分布(Non-IID)数据处理 处理客户端数据的异质性仍然是联邦学习的主要挑战之一。近期的研究提出了个性化联邦学习算法和元学习方法,旨在提高模型在非IID数据环境下的性能。这些方法允许模型根据各客户端的特定数据分布进行调整,提升了整体效果。\n4. 联邦学习与深度学习的融合 随着深度学习模型的复杂性增加,将联邦学习应用于更深层次的神经网络成为研究热点。出现了如联邦迁移学习和联邦强化学习的新方向,拓展了联邦学习的应用范围,促进了在图像识别、自然语言处理等领域的应用。\n5. 应用领域的扩展 联邦学习的应用从移动设备扩展到了物联网、医疗保健、金融和智能交通等领域。例如,在医疗领域,联邦学习被用于跨机构的数据协作,保护患者隐私的同时提升诊断模型的准确性。\n6. 公平性和偏差问题 研究者开始关注联邦学习中的公平性,致力于减少模型对某些群体的偏见。提出了新的算法,如公平聚合方法,确保模型在不同客户端之间的性能均衡,避免数据不平衡导致的偏差。\n7. 联邦学习与区块链的结合 为了增强系统的安全性和透明度,一些研究探索了将联邦学习与区块链技术相结合。区块链的去中心化和不可篡改特性有助于建立可信的模型更新机制,防止恶意节点的攻击。\n8. 标准化和框架开发 为了促进联邦学习的研究和应用,开源框架如Federated AI Technology Enabler(FATE)、TensorFlow Federated和PySyft得到了进一步的发展。这些工具为研究者和开发者提供了方便的平台,加速了算法的实现和测试。\n9. 法律和伦理考量 随着数据隐私法规的日益严格,联邦学习在遵守法律法规的前提下,提供了新的数据合作方式。研究者也开始探讨联邦学习在伦理方面的影响,确保技术的使用符合社会道德标准,并积极应对潜在的法律风险。\n结论 总的来说,2022年以来的研究在解决联邦学习的核心挑战方面取得了重要进展,包括隐私保护、通信效率、数据异质性和模型公平性等。这些进展为联邦学习在各个行业的广泛应用奠定了基础,预示着该领域未来将有更为深远的影响。",
   "salary": "25,000-50,000元/月",
  },
  {"theme": "大模型代理",
   "year": "2023",
   "content": "作为一名专业学者,我很高兴为您提供2023年以来大模型代理研究领域的富有洞见的综述。\n\n1. 大型语言模型的跃进\n2023年,随着GPT-4等新一代大型语言模型的发布,模型的参数规模和性能都有了显著提升。这些模型在自然语言理解和生成方面表现出了更高的准确性和流畅性,为大模型代理的构建奠定了坚实的基础。\n\n2. 自主代理的兴起\n基于大型语言模型的自主代理(Autonomous Agents)如AutoGPT、BabyAGI等,在2023年引起了广泛关注。这些代理能够在最小的人类干预下自主完成复杂任务,包括计划、执行和结果评估,展示了人工智能在自我驱动任务执行方面的潜力。\n\n3. 工具使用与环境交互\n研究者们探索了如何使大模型代理更有效地使用外部工具和API,例如浏览器、数据库、计算器等。这使得代理能够访问实时信息、执行复杂计算,以及与外部环境进行更深入的交互,从而扩展了其应用范围。\n\n4. 多模态融合\n2023年,多模态大模型的研究取得了突破性进展。代理不仅能够处理文本数据,还能理解和生成图像、音频等多种数据类型。这种多模态能力使得代理在视觉问答、图像生成、语音交互等领域有了新的应用。\n\n5. 推理与规划能力的提升\n通过引入链式思维(Chain-of-Thought)等技术,大模型代理的推理和规划能力得到了显著增强。模型能够逐步推导出解决方案,处理复杂的逻辑关系,提高了在复杂任务和问题解决中的表现。\n\n6. 安全性与伦理考量\n随着大模型代理功能的增强,其潜在的安全风险和伦理问题也日益凸显。研究者们致力于开发更好的对齐(Alignment)技术,确保代理的行为符合人类的价值观和社会规范。这包括防止模型生成有害内容、保护用户隐私,以及避免偏见和歧视。\n\n7. 开放合作与社区驱动\n许多大模型代理项目以开源的形式发布,促进了全球研究社区的合作。这种开放的生态系统加速了技术的迭代和创新,使得更多的研究者和开发者能够参与其中,共同推动领域的发展。\n\n8. 应用场景的拓展\n大模型代理在2023年被广泛应用于各个行业,包括医疗、金融、教育和娱乐等领域。例如,在医疗领域,代理可以协助诊断和提供个性化的治疗建议;在金融领域,代理可以进行风险评估和投资策略制定。\n\n结论\n2023年以来,大模型代理的研究取得了令人瞩目的进展。随着模型能力的提升和新技术的引入,代理在自主性、推理能力、多模态处理等方面都有了显著的突破。然而,随着技术的进步,安全和伦理挑战也需要得到重视。未来的研究应继续平衡技术创新和伦理考量,确保大模型代理的发展能够造福人类社会。",
   "salary": "40,000-70,000元/月",
   }
]

然后创建提示模版。这个提示模板可以更加精准丰富一些,这里只是作个示范

## 创建原始模板
prompt_template = """您是一位专业的学者。对于 {theme} 研究领域的{year}以来的进展 ,您能提供富有洞见的综述吗?
主题:{theme}
时间:{year}
内容:{content}
薪资:{salary}
"""
prompt_sample = PromptTemplate(input_variables=["theme", "year", "content", "salary"],
                               template=prompt_template)

# print(prompt_sample.format(**samples[0]))
# print(prompt_sample.format(**samples[1]))

Embeddings选择

embedding将文本映射到稠密的向量空间中。在本文中,可以将示例样本映射到稠密空间中,而我们的提问也被映射到这个空间,比较我们的提问和示例的相似度,找到相似度最高的k条来作为参照样例。
huggingface的embedding榜单
选择1b以下的embedding模型,综合考量下选择arkohut/jina-embeddings-v3(在实现中,也写了all-mpnet-base-v2版本的)

用SSH命令下载不容易断网。如果断了,就手动下载那几个大文件
在这里插入图片描述
代码实现:

## embedding模型
model_name = "E:\jina-embeddings-v3"
model_kwargs = {'device': 'cpu','trust_remote_code':True}
encode_kwargs = {'normalize_embeddings': False}
hf = HuggingFaceEmbeddings(
    model_name=model_name,
    model_kwargs=model_kwargs,
    encode_kwargs=encode_kwargs
)
# model_name = "E:/all-mpnet-base-v2"
# model_kwargs = {'device': 'cpu'}
# encode_kwargs = {'normalize_embeddings': False}
# hf = HuggingFaceEmbeddings(
#     model_name=model_name,
#     model_kwargs=model_kwargs,
#     encode_kwargs=encode_kwargs
# )

向量数据库选择

这是几个常见的开源向量数据库
这里我们选用常用的便于开发的Chroma作为向量数据库,来保存embedding模型转化的向量
然后构建样本选取器如下:

example_selector = SemanticSimilarityExampleSelector.from_examples(
    samples,
    hf,
    Chroma,
    k=1
)

总体代码实现

这个方法较之
结构化输入输出
对手工设计的提示词要求更少,对输出的规范性提升更高,也更能利用上已有的行业知识。但是它侧重于模仿,例如在月薪这块,它可能就只是照抄样例中的月薪。

# 测试本地大模型
from langchain.prompts import PromptTemplate
from langchain_ollama.llms import OllamaLLM
from langchain.output_parsers import StructuredOutputParser, ResponseSchema
import pandas as pd
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.prompts.example_selector import SemanticSimilarityExampleSelector
from langchain.prompts import FewShotPromptTemplate


samples = [
  {"theme": "联邦学习",
   "year": "2022",
   "content": "自2022年以来,联邦学习(Federated Learning)领域取得了显著的进展,推动了其在实际应用中的可行性和有效性。\n1. 隐私保护技术的加强 近期研究在增强联邦学习的隐私保护方面取得了突破。例如,差分隐私和安全多方计算等技术的改进,使模型聚合过程更加安全,降低了敏感数据泄露的风险。这些技术的优化提高了计算效率,减少了引入的噪声,从而在保护隐私的同时保持了模型的性能。\n2. 通信效率的提升 为了解决联邦学习中的通信瓶颈,研究者开发了新的模型压缩和量化方法,如梯度剪枝、稀疏更新和压缩编码。这些方法有效减少了客户端和服务器之间的数据传输量,提高了系统的效率和可扩展性。\n3. 非独立同分布(Non-IID)数据处理 处理客户端数据的异质性仍然是联邦学习的主要挑战之一。近期的研究提出了个性化联邦学习算法和元学习方法,旨在提高模型在非IID数据环境下的性能。这些方法允许模型根据各客户端的特定数据分布进行调整,提升了整体效果。\n4. 联邦学习与深度学习的融合 随着深度学习模型的复杂性增加,将联邦学习应用于更深层次的神经网络成为研究热点。出现了如联邦迁移学习和联邦强化学习的新方向,拓展了联邦学习的应用范围,促进了在图像识别、自然语言处理等领域的应用。\n5. 应用领域的扩展 联邦学习的应用从移动设备扩展到了物联网、医疗保健、金融和智能交通等领域。例如,在医疗领域,联邦学习被用于跨机构的数据协作,保护患者隐私的同时提升诊断模型的准确性。\n6. 公平性和偏差问题 研究者开始关注联邦学习中的公平性,致力于减少模型对某些群体的偏见。提出了新的算法,如公平聚合方法,确保模型在不同客户端之间的性能均衡,避免数据不平衡导致的偏差。\n7. 联邦学习与区块链的结合 为了增强系统的安全性和透明度,一些研究探索了将联邦学习与区块链技术相结合。区块链的去中心化和不可篡改特性有助于建立可信的模型更新机制,防止恶意节点的攻击。\n8. 标准化和框架开发 为了促进联邦学习的研究和应用,开源框架如Federated AI Technology Enabler(FATE)、TensorFlow Federated和PySyft得到了进一步的发展。这些工具为研究者和开发者提供了方便的平台,加速了算法的实现和测试。\n9. 法律和伦理考量 随着数据隐私法规的日益严格,联邦学习在遵守法律法规的前提下,提供了新的数据合作方式。研究者也开始探讨联邦学习在伦理方面的影响,确保技术的使用符合社会道德标准,并积极应对潜在的法律风险。\n结论 总的来说,2022年以来的研究在解决联邦学习的核心挑战方面取得了重要进展,包括隐私保护、通信效率、数据异质性和模型公平性等。这些进展为联邦学习在各个行业的广泛应用奠定了基础,预示着该领域未来将有更为深远的影响。",
   "salary": "25,000-50,000元/月",
  },
  {"theme": "大模型代理",
   "year": "2023",
   "content": "作为一名专业学者,我很高兴为您提供2023年以来大模型代理研究领域的富有洞见的综述。\n\n1. 大型语言模型的跃进\n2023年,随着GPT-4等新一代大型语言模型的发布,模型的参数规模和性能都有了显著提升。这些模型在自然语言理解和生成方面表现出了更高的准确性和流畅性,为大模型代理的构建奠定了坚实的基础。\n\n2. 自主代理的兴起\n基于大型语言模型的自主代理(Autonomous Agents)如AutoGPT、BabyAGI等,在2023年引起了广泛关注。这些代理能够在最小的人类干预下自主完成复杂任务,包括计划、执行和结果评估,展示了人工智能在自我驱动任务执行方面的潜力。\n\n3. 工具使用与环境交互\n研究者们探索了如何使大模型代理更有效地使用外部工具和API,例如浏览器、数据库、计算器等。这使得代理能够访问实时信息、执行复杂计算,以及与外部环境进行更深入的交互,从而扩展了其应用范围。\n\n4. 多模态融合\n2023年,多模态大模型的研究取得了突破性进展。代理不仅能够处理文本数据,还能理解和生成图像、音频等多种数据类型。这种多模态能力使得代理在视觉问答、图像生成、语音交互等领域有了新的应用。\n\n5. 推理与规划能力的提升\n通过引入链式思维(Chain-of-Thought)等技术,大模型代理的推理和规划能力得到了显著增强。模型能够逐步推导出解决方案,处理复杂的逻辑关系,提高了在复杂任务和问题解决中的表现。\n\n6. 安全性与伦理考量\n随着大模型代理功能的增强,其潜在的安全风险和伦理问题也日益凸显。研究者们致力于开发更好的对齐(Alignment)技术,确保代理的行为符合人类的价值观和社会规范。这包括防止模型生成有害内容、保护用户隐私,以及避免偏见和歧视。\n\n7. 开放合作与社区驱动\n许多大模型代理项目以开源的形式发布,促进了全球研究社区的合作。这种开放的生态系统加速了技术的迭代和创新,使得更多的研究者和开发者能够参与其中,共同推动领域的发展。\n\n8. 应用场景的拓展\n大模型代理在2023年被广泛应用于各个行业,包括医疗、金融、教育和娱乐等领域。例如,在医疗领域,代理可以协助诊断和提供个性化的治疗建议;在金融领域,代理可以进行风险评估和投资策略制定。\n\n结论\n2023年以来,大模型代理的研究取得了令人瞩目的进展。随着模型能力的提升和新技术的引入,代理在自主性、推理能力、多模态处理等方面都有了显著的突破。然而,随着技术的进步,安全和伦理挑战也需要得到重视。未来的研究应继续平衡技术创新和伦理考量,确保大模型代理的发展能够造福人类社会。",
   "salary": "40,000-70,000元/月",
   }
]


## 创建原始模板
prompt_template = """您是一位专业的学者。对于 {theme} 研究领域的{year}以来的进展 ,您能提供富有洞见的综述吗?
主题:{theme}
时间:{year}
内容:{content}
薪资:{salary}
"""
prompt_sample = PromptTemplate(input_variables=["theme", "year", "content", "salary"],
                               template=prompt_template)

# print(prompt_sample.format(**samples[0]))
# print(prompt_sample.format(**samples[1]))


## embedding模型
model_name = "E:\jina-embeddings-v3"
model_kwargs = {'device': 'cpu','trust_remote_code':True}
encode_kwargs = {'normalize_embeddings': False}
hf = HuggingFaceEmbeddings(
    model_name=model_name,
    model_kwargs=model_kwargs,
    encode_kwargs=encode_kwargs
)
# model_name = "E:/all-mpnet-base-v2"
# model_kwargs = {'device': 'cpu'}
# encode_kwargs = {'normalize_embeddings': False}
# hf = HuggingFaceEmbeddings(
#     model_name=model_name,
#     model_kwargs=model_kwargs,
#     encode_kwargs=encode_kwargs
# )


example_selector = SemanticSimilarityExampleSelector.from_examples(
    samples,
    hf,
    Chroma,
    k=1
)

prompt = FewShotPromptTemplate(
    example_selector=example_selector,
    example_prompt=prompt_sample,
    suffix="您是一位专业的学者。对于 {theme} 研究领域的{year}以来的进展 ,您能提供富有洞见的综述吗?\n主题: {theme}\n年份: {year}\n",
    input_variables=["theme", "year"]
)


## 模型
model = OllamaLLM(model='qwen2.5:3b')


# 文献检索列表
Theme = ["张量分解","大模型压缩","大模型推理加速"]
Year = ["2020","2021","2021"]

for theme, year in zip(Theme, Year):
    # 使用提示模板生成输入
    input_prompt = prompt.format(theme=theme, year=year)
    res = model.invoke([input_prompt])
    print(res)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2235174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R语言*号标识显著性差异判断组间差异是否具有统计意义

前言 该R代码用于对Iris数据集进行多组比较分析,探讨不同鸢尾花品种在不同测量变量(花萼和花瓣长度与宽度)上的显著性差异。通过将数据转换为长格式,并利用ANOVA和Tukey检验,代码生成了不同品种间的显著性标记&#x…

AUTOSAR CP NVRAM Manager规范导读

一、NVRAM Manager功能概述 NVRAM Manager是AUTOSAR(AUTomotive Open System ARchitecture)框架中的一个模块,负责管理非易失性随机访问存储器(NVRAM)。它提供了一组服务和API,用于在汽车环境中存储、维护和恢复NV数据。以下是NVRAM Manager的一些关键功能: 数据存储和…

PDF编辑工具Adobe Acrobat DC 2023安装教程(附安装包)

Adobe Acrobat DC 2023 是 Adobe 公司推出的一款功能强大的 PDF 文档处理软件。它不仅支持创建、编辑和签署 PDF 文件,还提供了丰富的工具来管理和优化这些文件。以下是 Acrobat DC 2023 的一些主要特点: 1.PDF 创建与编辑:用户可以直接从多…

Tornado简单使用

Tornado简单使用 1 介绍 Tornado 是一个基于Python的Web服务框架和 异步网络库,它最初由 FriendFeed 开发,后来被 Facebook 收购并开源,通过利用非阻塞网络 I/O, Tornado 可以承载成千上万的活动连接,完美的实现了 长连接、WebS…

基于SpringBoot的城镇保障性住房管理策略

3系统分析 3.1可行性分析 通过对本城镇保障性住房管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本城镇保障性住房管理系统采用SSM框架,JA…

【万字详解】如何在微信小程序的 Taro 框架中设置静态图片 assets/image 的 Base64 转换上限值

设置方法 mini 中提供了 imageUrlLoaderOption 和 postcss.url 。 其中: config.limit 和 imageUrlLoaderOption.limit 服务于 Taro 的 MiniWebpackModule.js , 值的写法要 ()KB * 1024。 config.maxSize 服务于 postcss-url 的…

[实战-11] FlinkSql 设置时区对TIMESTAMP和TIMESTAMP_LTZ的影响

table.local-time-zone table.local-time-zoneDataStream-to-Table Conversion(拓展知识)代码测试flinksql代码执行结果截图1. Asia/Shanghai 结果如下2. UTC结果如下 table.local-time-zone table.local-time-zone可用于设置flinksql的时区。 flink的内…

Bypassuac之白名单结合注册表方式

参考 Bypass UAC 原来这么简单 本章记录一下系统白名单文件结合注册表bypassuac,uac这个东西并不是Windows设置的防御机制而是相当于保护机制,只是用来控制用户行为的,弹个窗来提醒一下用户的行为,和直接的杀软是不一样的性质&am…

【力扣打卡系列】单调栈

坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day20 单调栈 题目描述 解题思路 单调栈 后进先出 记录的数据加在最上面丢掉数据也先从最上面开始 单调性 记录t[i]之前会先把所有小于等于t[i]的数据丢掉,不可能出现上面大下面小的…

如何通过CDN加速提升电商网站双十一购物节用户体验

随着双十一购物节的到来,电商平台迎来了一年中流量的高峰。各大电商平台如天猫、京东和抖音等纷纷推出了全新的促销活动和玩法。在这场购物狂欢中,用户体验成为了电商网站能否脱颖而出的关键。而CDN(内容分发网络)加速服务&#x…

Linux信号_信号的产生

信号概念 信号是进程之间事件异步通知的一种方式,属于软中断。 异步:在异步操作中,任务可以独立执行。一个任务的开始或完成不依赖于其他任务的状态。 同步:在同步操作中,任务之间的执行是相互依赖的。一个任务必须等待…

Docker学习—Docker核心概念总结

核心概念总结 容器:容器就是将应用运行所需的所有内容比如代码、运行时环境,进行打包和隔离。 容器和虚拟机的对比 虚拟机是在同一个硬件上虚拟化出多个操作系统(OS)实例。 容器是在操作系统上进行虚拟化,用于隔离…

51单片机教程(六)- LED流水灯

1 项目分析 基于点亮LED灯、LED灯闪烁,扩展到构成最简单、花样流水灯。 2 技术准备 1 流水灯硬件及原理图 流水灯是由多个LED灯组成的 2 C语言知识点 数组 数组声明:长度不可变 数据类型 数组名称[长度n] // 整数型默认为0,小数型默认…

供热的一些基础技术数据

1、应该了解的几个实用数据:(1)室内采暖达标温度182℃(2)建筑面积采暖热负荷 4060kcal/h㎡(4570W/㎡)(3)建筑面积采暖所需合理流量 2.53.5kg/h㎡(节能建筑12 kg/h㎡)(4)一次网严寒期外网总供、回水温度5570℃(5)热网的补水量应小于热网循环量的1%(6)1蒸吨的热量可供11.5 万平方…

【1个月速成Java】基于Android平台开发个人记账app学习日记——第7天,申请阿里云SMS短信服务SDK

系列专栏链接如下,方便跟进: https://blog.csdn.net/weixin_62588253/category_12821860.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12821860&sharereferPC&sharesourceweixin_62588253&sharefromfrom_link 同时篇幅…

A02、JVM性能监测调优

1、JVM内存模型 1.1、介绍 JVM 自动内存分配管理机制的好处很多,但实则是把双刃剑。这个机制在提升 Java 开发效率的同时,也容易使 Java 开发人员过度依赖于自动化,弱化对内存的管理能力,这样系统就很容易发生 JVM 的堆内存异常&…

钉钉调试微应用整理2

第一步 新建应用 钉钉开放平台](https://open-dev.dingtalk.com/) 去新增应用 第二步 配置应用信息 把本地代码运行起来&#xff0c;并设置本地地址 第三步 在本地代码添加调试命令 这里有2中添加方式 哪一种都可以 方式一&#xff1a; index.html页面中 <!DOCTYPE h…

《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列

《TCP/IP网络编程》学习笔记 | Chapter 3&#xff1a;地址族与数据序列 《TCP/IP网络编程》学习笔记 | Chapter 3&#xff1a;地址族与数据序列分配给套接字的IP地址和端口号网络地址网络地址分类和主机地址边界用于区分套接字的端口号数据传输过程示例 地址信息的表示表示IPv4…

飞牛fnOs内网穿透-使用Lucky实现ipv6动态解析+HTTPS访问NAS服务

&#x1f9ed;Lucky官方介绍 Lucky最初是作为一个小工具&#xff0c;由开发者为自己的个人使用而开发&#xff0c;用于替代socat&#xff0c;在小米路由AX6000官方系统上实现公网IPv6转内网IPv4的功能。Lucky的设计始终致力于让更多的Linux嵌入式设备运行&#xff0c;以实现或…

《安富莱嵌入式周报》第345期:开源蓝牙游戏手柄,USB3.0 HUB带电压电流测量,LCR电桥前端模拟,开源微型赛车,RF信号扫描仪,开源无线电收发器

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 本周更新一期视频教程 第5期&#xff1a;RTX5/FreeRTOS全家桶源码工程综合实战模板集成CANopen组件&#xff08;2024-1…