搭建基于Agent的金融问答系统

需求痛点

用户输入的问题,可能涉及到招股说明书的内容(PDF文件,非结构化的RAG数据),也可能是基金股票的持仓信息(结构化的SQL数据)等,前者是需要去多个PDF文件里查询,后者需要进行SQL语句查询,即前者是文本类数据,后者是数据表。

如何让金融问答系统能够自动判断,应该选择哪个进行查询回答呢?查SQL还是RAG检索呢?

需求分析

模型是不能调用外部工具(函数),但它能判断是否需要调用函数,如需调用函数,获取相关结果,则需使用代理模式 Agent。

上一篇 RAG项目实战:金融问答系统 完成了RAG的基本流程,本篇将介绍 Agent 的运行框架,以及如何将 RAG 数据和 SQL 查询数据进行整合,实现金融问题的自主回答。

这里需要探讨的一个核心问题,即:用户输入一个问题后,如何实现用户问题的自动查询(是SQL查询还是RAG检索)?

解决方案

方案一:SFT微调

给大模型提前做SFT微调(few-short少样本训练也可达到同样效果),让大模型知道什么样的问题属于SQL查询问题,什么样的问题属于RAG检索问题。例如:

# 准备 few-shot 样例,用于模型训练或推理时提供示范输入输出对。
examples = [
    # 示例 1:询问基金年度报告中前10大重仓股的正收益股票数量
    {
        "input": "我想知道东方阿尔法优势产业混合C基金,在2021年年度报告中,前10大重仓股中,有多少只股票在报告期内取得正收益。",
        "output": "rag_question***我想知道东方阿尔法优势产业混合C基金,在2021年年度报告中,前10大重仓股中,有多少只股票在报告期内取得正收益。",
        # 注释:此问题涉及基金年报数据查询,归类为 rag_question 类型。
    },
    # 示例 2:询问公司产品的生产材料
    {
        "input": "森赫电梯股份有限公司产品生产材料是什么?",
        "output": "rag_question***森赫电梯股份有限公司产品生产材料是什么?",
        # 注释:此问题需要从文档或知识库中检索相关信息,归类为 rag_question 类型。
    },
    # 示例 3:询问特定日期某一行业股票的成交金额合计
    {
        "input": "20210930日,一级行业为机械的股票的成交金额合计是多少?取整。",
        "output": "agent_question***20210930日,一级行业为机械的股票的成交金额合计是多少?取整。",
        # 注释:此问题涉及计算或数据汇总,需通过代理任务处理,归类为 agent_question 类型。
    },
    # 可继续添加更多样例...
]

意图识别结束后,在代码中通过if else 对识别结果进行不同类别的后续处理

# 根据问题的意图类型(intent)执行不同的处理逻辑
if intent == "rag_question":
    # 如果问题是 RAG 类型的问题(需要从文档或知识库中检索答案)
    result = self.rag.get_result(question=question)  # 调用 RAG 模块获取答案
    return result  # 返回检索到的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值