三、基于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)
相关推荐
飞Link6 小时前
什么是 AirSim?一文读懂无人机仿真平台
python·算法·无人机
曲径海盗6 小时前
【Python 学习第 38 天】for 循环
python·学习笔记·编程入门
在世修行7 小时前
智学文枢:变式题生成引擎
python·ai·pyside·题目生成
On The Road :9 小时前
Java 多线程详解:从入门到线程安全
java·python·安全
岁月宁静9 小时前
如何设计支持 Skills 的 Agent?一套可扩展的四层架构
python·agent
岁月宁静9 小时前
CrewAI 快速上手:10 分钟搭建你的第一个 Agent 团队
python·agent
曲径海盗9 小时前
【Python 学习第 40 天】for 循环
python·学习笔记·编程入门
专注仿真10 小时前
知识问答大模型-rag算法详解
人工智能·python·控制算法
石逸凡10 小时前
金融产品架构演进之三:极速、一致与高可扩展并存核心目标
金融·架构
染指111010 小时前
158.Agent-LangGraph-子图(共享状态和不共享状态模式)
开发语言·人工智能·python·ui·agent·agents