Day29 - 大模型RAG,检索增强生成

news2025/1/7 18:07:25

如何调用第三方大模型

阿里大模型

1. 获取百炼平台 api key 

【阿里云】-【产品】-【人工智能与机器学习】-【大模型服务平台百炼】

2. 参考LangChain文档

https://python.langchain.com/docs/introduction/

3. 连接阿里大模型

"""
    1. 引入模型
"""
from models import get_tongyi_chat_model

model = get_tongyi_chat_model()

model.invoke(input="你好")
"""
    2. 阅读理解
        给你一个段落,按照段落的描述来回答问题!
"""
from langchain_core.messages import SystemMessage
from langchain_core.messages import HumanMessage

sys_msg = SystemMessage(content="""
你是一个阅读理解机器人!
请认真阅读用户提供的文章,并根据文章的内容来回答用户的问题!、
请注意:如果问题没有在文章中出现,请直接使用你自己的知识来回答!
""")

user_msg = HumanMessage(content="""
文章为:

孙中山(1866年11月12日-1925年3月12日),名文,字载之,号日新,又号逸仙,又名帝象,化名中山樵,伟大的民族英雄、伟大的爱国主义者、中国民主革命的伟大先驱 [1],中华民国和中国国民党的缔造者,三民主义的倡导者,创立了《五权宪法》。他首举彻底反帝反封建的旗帜,“起共和而终两千年封建帝制”。 [2]
孙中山1866年11月12日生于广东省广州府香山县(今中山市)翠亨村。孙中山原在香港学医,并成为西医医师。孙中山目睹中华民族有被西方列强瓜分的危险,决定抛弃“医人生涯”,进行“医国事业”。孙中山早期受郑观应的改良思想影响,后看清了清政府的腐败,决心推翻清王朝,建立民主共和国。 [3-4] [44]
1894年11月24日,孙中山在檀香山创立兴中会 [4]。1905年(光绪三十一年)成立中国同盟会。1911年10月10日(宣统三年)新军中的革命党人暗中联络,决定当天晚上起义。辛亥革命后被推举为中华民国临时大总统(任期1912年1月1日——1912年4月1日)。1925年3月12日,孙中山因癌症在北京逝世。1929年6月1日,根据其生前遗愿,葬于南京紫金山中山陵。1940年,国民政府通令全国,尊称其为“中华民国国父”。
孙中山著有《建国方略》、《建国大纲》、《三民主义》等。其著述在逝世后多次被结集出版,有中华书局1986年出版的十一卷本《孙中山全集》,台北1969、1973、1985年出版的《国父全集》等。

问题为:

孙中山跟毛泽东是什么关系?

答案为:
""")

messages = [sys_msg, user_msg]

model.invoke(input=messages)
# 让用户传过一篇文章和一个问题,我们根据用户的文章来回答用户的问题

from langchain_core.prompts import SystemMessagePromptTemplate
from langchain_core.prompts import HumanMessagePromptTemplate
from langchain_core.prompts import ChatPromptTemplate

sys_prompt = SystemMessagePromptTemplate.from_template(template="""
你是一个阅读理解机器人!
请认真阅读用户提供的文章,并根据文章的内容来回答用户的问题!
请注意:
    1, 如果问题没有在文章中出现,请直接使用你自己的知识来回答!
    2, 不需要做任何的解释,直接回答问题的结果即可!
""")

user_prompt = HumanMessagePromptTemplate.from_template(template="""
文章为:
{passage}
问题为:
{question}
答案为:
""")

prompt = ChatPromptTemplate.from_messages(messages=[sys_prompt, user_prompt])

from langchain_core.output_parsers import StrOutputParser

output_parser = StrOutputParser()

chain = prompt | model | output_parser

passage = """
孙中山,名文,字载之,号日新,又号逸仙,又名帝象,化名中山樵,伟大的民族英雄、伟大的爱国主义者、中国民主革命的伟大先驱 [1],中华民国和中国国民党的缔造者,三民主义的倡导者,创立了《五权宪法》。他首举彻底反帝反封建的旗帜,“起共和而终两千年封建帝制”。 [2]
孙中山生于广东省广州府香山县(今中山市)翠亨村。孙中山原在香港学医,并成为西医医师。孙中山目睹中华民族有被西方列强瓜分的危险,决定抛弃“医人生涯”,进行“医国事业”。孙中山早期受郑观应的改良思想影响,后看清了清政府的腐败,决心推翻清王朝,建立民主共和国。 [3-4] [44]
1894年11月24日,孙中山在檀香山创立兴中会 [4]。1905年(光绪三十一年)成立中国同盟会。1911年10月10日(宣统三年)新军中的革命党人暗中联络,决定当天晚上起义。辛亥革命后被推举为中华民国临时大总统(任期1912年1月1日——1912年4月1日)。1925年3月12日,孙中山因癌症在北京逝世。1929年6月1日,根据其生前遗愿,葬于南京紫金山中山陵。1940年,国民政府通令全国,尊称其为“中华民国国父”。
孙中山著有《建国方略》、《建国大纲》、《三民主义》等。其著述在逝世后多次被结集出版,有中华书局1986年出版的十一卷本《孙中山全集》,台北1969、1973、1985年出版的《国父全集》等。
"""

question = """
Please list 孙中山's other names!
"""

chain.invoke(input=dict(passage=passage, question=question))

拓展

  • 1. 公司内部的私有知识资料
    • 产品说明
    • 规章制度
    • 对外文案
    • ……
  • 2. 让大模型根据私有知识资料来回答问题

存在几个问题:

  • 私有知识可能很多,是否全都要参考呢?
  • 能否只选择跟问题有关的知识让大模型参考呢?
    • 如何判断或筛选跟问题相关的知识呢?
      • 根据文本相似度来进行检索
        • 关键词匹配?
          • 要求太高了,需要提前准备好文章的关键词
          • 国际化的社会,大模型对语言是无感知的理解的,不应该区分语言,所以咱们不应该用关键词匹配
        • 语义化匹配
          • 脱离语言本身,看内涵
          • 跨语言、跨表达习惯,直奔这句话的本质
          • 如何实现呢?
            • 把私有资料,按逻辑、互相独立的单元来分段
            • 使用一个模型(本质:BERT,向量化模型),把每段知识的核心信息抽取出来,变成一个向量(比如,1024维)
            • 找一个数据库(向量化,GPU),把这些知识片段及其向量都存起来
            • 提一个问题:
              • 先把问题通过向量化模型,变成一个向量
              • 然后使用这个向量到向量库中,查找最相似的上下文
            • 把问题和上下文一起交给模型,让模型回答问题
              • 疑问:你已经在库里找到答案了,为何还要让大模型生成答案?
                • 检索出来的结果,有些高度相关,有些低相关,而且比较长,需要自己加工。
                • 大模型帮我们快速筛选和判断,而且按照你的习惯要求来输出结果。

阅读理解拓展

  • 准备:
    • Load 加载 / 读取私有知识
    • Split 切分 私有知识
    • Embed 向量化
    • Store 入库
  • 使用:
    • Query 提问
    • Retrieve 检索(相关的上下文)
    • Augment 增强(在prompt中整合问题和上下文)
    • Generate 生成(生成最终的结果)
  • RAG:检索增强生成
  • RAG相关的环境搭建
    • pip install chromadb -U
    • pip install langchain -U
    • pip install langchain-chroma -U
    • pip install langchain-core -U
    • pip install langchain-community -U
    • pip install langchain-text-splitters -U
    • pip install langchain-openai -U
    • pip install langgraph -U
    • pip install langserve -U

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

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

相关文章

谷粒商城项目125-spring整合high-level-client

新年快乐! 致2025年还在努力学习的你! 你已经很努力了,今晚就让自己好好休息一晚吧! 在后端中选用哪种elasticsearch客户端? elasticsearch可以通过9200或者9300端口进行操作 1)9300:TCP spring-data-elasticsearch:transport-…

c语言的文件操作与文件缓冲区

目录 C语言文件操作函数汇总 简单介绍文件 为什么使用文件 什么是文件 文件名 二进制文件和文本文件 流和标准流 流 标准流 文件指针 文件的打开和关闭 文件的顺序读写 顺序读写函数介绍 文件的随机读写 fseek ftell rewind 文件读取结束的判定 文件缓冲区 缓…

http源码分析

一、HttpURLConnection http连接池源码分析 二、HttpClient 连接池,每个路由最大连接数 三、OkHttp okhttp的连接池与socket连接

【工具整理】WIN换MAC机器使用工具整理

最近公司电脑升级,研发同学统一更换了 Mac Book Pro 笔记版电脑,整理一下安装了那些软件以及出处,分享记录下~ 知识库工具 1、语雀 网址:语雀,为每一个人提供优秀的文档和知识库工具 语雀 个人花园&…

【GUI-pyqt5】QWidget类

1. 描述 所有可视空间的基类是一个最简单的空白控件控件是用户界面的最小元素 接收各种事件(鼠标、键盘)绘制在桌面上,显示给用户看 每个控件都是矩形的,它们按z轴顺序排序控件由其父控件和前面的控件剪切没有父控件的控件&#…

SpringBoot Maven 项目 pom 中的 plugin 插件用法整理

把 SpringBoot Maven 项目打包成 jar 文件时,我们通常用到 spring-boot-maven-plugin 插件。 前面也介绍过,在 spring-boot-starter-parent POM 和 spring-boot-starter POM 中都有插件的管理,现在我们就撸一把构建元素中插件的用法。 一、…

springboot实战纪实-课程介绍

教程介绍 Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。 Spring Boot通过自动配置功能,降低了复杂性,同时支持…

源代码编译安装X11及相关库、vim,配置vim(2)

一、编译安装vim 编译时的cofigure选项如下.只有上一步的X11的包安装全了(具体哪些是必须的,哪些是多余的没验证),configure才能认为X的库文件和头文件是可以用的 ./configure --prefixpwd/mybuild \--x-includes/path/to/X11/m…

直接插入排序、折半插入排序、2路插入排序、希尔排序

本篇是排序专栏博客的第一篇,主要探讨以 “插入” 为核心思想的排序算法该如何实现 文章目录 一、前言二、直接插入排序1. 算法思想与操作分析2. 代码实现version 1version 2 3. 复杂度分析 三、折半插入排序1. 算法思想与操作分析2. 代码实现3. 复杂度分析 四、2路…

Ansible之批量管理服务器

文章目录 背景第一步、安装第二步、配置免密登录2.1 生成密钥2.2 分发公钥2.3 测试无密连接 背景 Ansible是Python强大的服务器批量管理 第一步、安装 首先要拉取epel数据源,执行以下命令 yum -y install epel-release安装完毕如下所示。 使用 yum 命令安装 an…

让 Agent 具备语音交互能力:技术突破与应用前景(16/30)

让 Agent 具备语音交互能力:技术突破与应用前景 一、引言 在当今数字化时代,人机交互方式正经历着深刻的变革。从早期的命令行界面到图形用户界面,再到如今日益普及的语音交互,人们对于与机器沟通的便捷性和自然性有了更高的追求…

学生作业完成情况管理程序

网上看到的一个课程设计,正好练练手。 首先设计数据库 数据库有三张表,分别是班级表,学生表,作业成绩表。 学生表中外键关联班级表,作业成绩表中外键关联学生表。具体如下图所示 班级表 学生表学生表外键关联 …

基于vue的商城小程序的毕业设计与实现(源码及报告)

环境搭建 ☞☞☞ ​​​Vue入手篇(一),防踩雷(全网最详细教程)_vue force-CSDN博客 目录 一、功能介绍 二、登录注册功能 三、首页 四、项目截图 五、源码获取 一、功能介绍 用户信息展示:页面顶部设有用户头像和昵称展示区,方便用户识别…

DeepSeek V3“报错家门”:我是ChatGPT

搜 :海讯无双Ai 要说这两天大模型圈的顶流话题,那绝对是非DeepSeek V3莫属了。 不过在网友们纷纷测试之际,有个bug也成了热议的焦点—— 只是少了一个问号,DeepSeek V3竟然称自己是ChatGPT。 甚至让它讲个笑话,生成…

利用webworker解决性能瓶颈案例

目录 js单线程的问题webworker的基本使用webworker的常见应用可视化优化导出Excel js单线程的问题 众所周知,js不擅长计算,计算是同步的,大规模的计算会让js主线程阻塞,导致界面完成卡死。比如有一个600多亿次的计算,…

深入理解卷积神经网络(CNN):图像识别的强大工具

1、引言 卷积神经网络(CNN)是一种深度学习模型,特别适合分析视觉数据。它们在处理图像和视频任务时表现尤为出色。由于CNN在物体识别方面的高效性,这种网络架构广泛应用于计算机视觉领域,例如图像分类、物体检测、面部…

R语言安装教程与常见问题

生物信息基础入门笔记 R语言安装教程与常见问题 今天和大家聊一个非常基础但是很重要的技术问题——如何在不同操作系统上安装R语言?作为生物信息学数据分析的神兵利器,R语言的安装可谓是入门第一步,学术打工人的必备技能。今天分享在Windows…

VOC数据集格式转YOLO格式

将VOC格式的数据集转换为YOLO格式通常涉及以下几个步骤。YOLO格式的标注文件是每个图像对应一个.txt文件&#xff0c;文件中每一行表示一个目标&#xff0c;格式为&#xff1a; <class_id> <x_center> <y_center> <width> <height>其中&#xf…

win10搭建zephyr开发环境

搭建环境基于 zephyr官方文档 基于官方文档一步一步走很快就可以搞定 一、安装chocolatey 打开官网 https://community.chocolatey.org/courses/installation/installing?methodinstall-from-powershell-v3 1、用管理员身份打开PowerShell &#xff08;1&#xff09;执行 …

物体切割效果

1、物体切割效果是什么 在游戏开发中&#xff0c;物体切割效果就是物体看似被切割、分割或隐藏一部分的视觉效果。 这种效果常用与游戏和动画中&#xff0c;比如角色攻击时的切割效果&#xff0c;场景中的墙壁切割效果等等。 2、物体切割效果的基本原理 在片元着色器中判断片…