三、基于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)
相关推荐
西柚小萌新28 分钟前
python--在服务器上面创建conda环境
服务器·python·conda
WW、forever29 分钟前
【服务器】服务器进程运行不受本地终端影响的方法总结
服务器·python
blues_C1 小时前
Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架
自动化测试·python·pytest·测试框架·bdd
测试杂货铺1 小时前
Appium怎样连接多台设备?
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
我是Superman丶1 小时前
【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等
运维·python·自动化
往日情怀酿做酒 V17639296381 小时前
Django基础之中间件
python·中间件·django
清弦墨客1 小时前
【蓝桥杯】46195.水仙花数
python·蓝桥杯
小oo呆1 小时前
【自然语言处理与大模型】Ollama拉取huggingface社区或modelscope社区的GGUF模型并部署
人工智能·python·自然语言处理
戴着眼镜看不清2 小时前
从腾讯云的恶意文件查杀学习下PHP的eval函数
android·python·gpt·学习·网络安全·木马·中转api
东方不败之鸭梨的测试笔记2 小时前
多进程、多线程、分布式测试支持-pytest-xdis插件
python