Day29 - 大模型RAG,检索增强生成
发布时间
阅读量:
阅读量
如何调用第三方大模型
阿里大模型
1. 获取百炼平台 api key
【阿里云】-【产品】-【人工智能与机器学习】-【大模型服务平台百炼】

2. 参考LangChain文档
https://python.langchain.com/docs/introduction/
3. 连接阿里大模型
(1)安装相关的库
pip install langchain-community -U
pip install dashscope
pip install python-dotenv
(2) 创建 .env 文件,设置环境变量 DASHSCOPE_API_KEY
DASHSCOPE_API_KEY="your-api-key"
加载 .env 环境变量

(3)新建 utils 文件夹,在该目录下创建 models.py 文件,封装模型
from dotenv import load_dotenv
load_dotenv()
# 加载阿里大模型
from langchain_community.chat_models import ChatTongyi
def get_tongyi_chat_model():
return ChatTongyi(model="qwen-turbo",
temperature=0.1,
top_p=0.3,
max_tokens=512)
if __name__ == "__main__":
# 测试
model = get_tongyi_chat_model()
response = model.invoke("你好")
print(response)
(4)引用模型
"""
1. 引入模型
"""
from utils.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="""
文章为:
17. 孙中山(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年出版的《国父全集》等。
22. 问题为:
24. 孙中山跟毛泽东是什么关系?
26. 答案为:
""")
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)
提出一个问题:
将问题转化为1024维向量表示
在数据库中检索最相似的上下文片段
将问题及上下文交给大模型生成最终回答
疑问:在检索到相关结果后是否还需要大模型生成答案?
检索结果中有些高度相关但有些低相关且长度较长需人工优化筛选
大模型可辅助快速精炼筛选并按照用户习惯规范输出结果。
- 如何筛选与问题相关的知识以供大模型参考? * 如何判断或确定与问题相关的知识?
阅读理解拓展
- 准备:
- 在准备阶段中涉及加载/读取私有知识
- 随后进行切分处理以获取私有知识
- 使用:
- 在查询阶段执行提问操作
- 检索相关上下文信息
- 增强功能通过整合问题与上下文信息生成更适合的提示词
- 生成阶段负责根据整合后的提示词输出最终结果
- 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
全部评论 (0)
还没有任何评论哟~
