三、基于langchain使用Qwen搭建金融RAG问答机器人--检索增强生成

经过前面2节数据准备后,现在来构建检索

加载向量数据库

python 复制代码
from langchain.vectorstores import Chroma
from langchain_huggingface import HuggingFaceEmbeddings
import os

# 定义 Embeddings
embeddings = HuggingFaceEmbeddings(model_name="m3e-base")

# 向量数据库持久化路径
persist_directory = 'data_base/chroma'

# 加载数据库
vectordb = Chroma(
    persist_directory=persist_directory, 
    embedding_function=embeddings
)

定义提示词模板

要求模型使用上下文来回答问题,这个上下文就是context,也就是从向量数据检索到相关的文本片段后,回答最后的问题question

python 复制代码
from langchain.prompts import PromptTemplate

# 我们所构造的 Prompt 模板
template = """使用以下上下文来回答最后的问题。如果你不知道答案,就说你不知道,不要试图编造答案。尽量使答案简明扼要。"。
{context}
问题: {question}
有用的回答:"""

# 调用 LangChain 的方法来实例化一个 Template 对象,该对象包含了 context 和 question 两个变量,在实际调用时,这两个变量会被检索到的文档片段和用户提问填充
QA_CHAIN_PROMPT = PromptTemplate(input_variables=["context","question"],template=template)

定义大模型LLM

需要先到阿里通义千问申请账户,具体操作指引在 这里

python 复制代码
import os
os.environ["DASHSCOPE_API_KEY"] = 'sk-******'
from langchain_community.llms import Tongyi
llm = Tongyi()

定义检索问答链

python 复制代码
from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(llm,retriever=vectordb.as_retriever(),return_source_documents=True,chain_type_kwargs={"prompt":QA_CHAIN_PROMPT})

对比大模型和检索生成的结果

大模型:

python 复制代码
question = "上海华铭智能终端设备股份有限公司的股东有哪些人?"
# 仅 LLM 回答效果
result = llm(question)
print("大模型回答 question 的结果:")
print(result)

检索:

python 复制代码
result = qa_chain({"query": question})
print("检索问答链回答 question 的结果:")
print(result["result"])

检索详情:

python 复制代码
print(result)
相关推荐
AIFarmer7 小时前
在EV3上运行Python语言——环境设置
python·ev3
yunsr7 小时前
python作业3
开发语言·python
历程里程碑7 小时前
普通数组-----除了自身以外数组的乘积
大数据·javascript·python·算法·elasticsearch·搜索引擎·flask
曦月逸霜7 小时前
Python快速入门——学习笔记(持续更新中~)
笔记·python·学习
喵手7 小时前
Python爬虫实战:采集菜谱网站的“分类/列表页”(例如“家常菜”或“烘焙”频道)数据,构建高可用的美食菜谱数据采集流水线(附CSV导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集菜谱网站数据·家常菜或烘焙频道·构建高可用食谱数据采集系统
喵手7 小时前
Python爬虫实战:硬核解析 Google Chrome 官方更新日志(正则+文本清洗篇)(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·csv导出·监控谷歌版本发布历史·获取稳定版更新日志
小邓睡不饱耶7 小时前
实战|W餐饮平台智能化菜品推荐方案(含Spark实操+算法选型+完整流程)
python·ai·ai编程·ai写作
种时光的人7 小时前
CANN 生态 ×AIGC 合规:cann-compliance 让大模型落地既安全又合规
安全·aigc
草莓熊Lotso7 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
多恩Stone7 小时前
【3D AICG 系列-8】PartUV 流程图详解
人工智能·算法·3d·aigc·流程图