三、基于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)
相关推荐
海绵宝宝转agent5 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭5 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
小小龙学IT5 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
2601_962071576 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
VIP_CQCRE7 小时前
用 Ace Data Cloud 的 gpt-image-2,把 AI 图像生成接入真实业务场景
ai·aigc·api·图像生成·acedatacloud
小虎AI生活7 小时前
315 之后 AI 改规矩了,怎么让豆包和 DeepSeek 认得出你
aigc·ai编程
卷无止境7 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
Java后端的Ai之路7 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师7 小时前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏
计算机毕业编程指导师7 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的白鹿抖音评论大数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·抖音评论