当前位置: 首页 > news >正文

基于LLM智能问答系统【阿里云:天池比赛】

天池比赛:基于LLM智能问答系统学习赛 
https://tianchi.aliyun.com/competition/entrance/532172/information

项目介绍:从数据库及pdf文档中检索出用户问题对应的答案

关键技术:基于GPT模型的Text2Sql,向量召回&排序、文本生成、NER实体识别

关键优化项:动态SQL链路优化sql样例中对数据库字段的覆盖度,语义检索链路如下:

        GPT指令优化:调整指令中的角色、样例、输出结果格式

        pdf文件拆分:长度调整、pdf文件内容标准化(去掉空格,特殊字符处理)

        query处理:去停用词(根据/知道/什么...)、去掉截止日期

技术流程:使用Qwen识别问题中的公司名实体,有公司名的走语义检索,无公司名的走结构化召回

  • 1)结构化召回:

    • Qwen根据问题动态生成sql(先微调使用最佳的case生成指令),

    • 执行sql获取结果数值,把结果数值与问题给到Qwen生成最终结果

  • 2)语义检索:

    • 先识别出pdf文件中对应的公司名称

    • 根据问题中的公司名称找到对应的招股说明书pdf文件

    • 把pdf文件切分成段N个文本段、为每个文本段生成向量集合A

    • 把问题生成向量B

    • 使用余弦相似度比较2类向量并排序得到top5,把top5合并成一个文本T

    • 把问题与文本T生成提示词送给Qwen生成结果

后续优化项包括不限于:

  • 1)提升召回率-主要是语义召回,可以考虑适当增加向量返回的结果数量,比如从top5提升到top8。

  • 2)提升召回率-优化向量相似度匹配:考虑使用专业的向量模型生成向量,比如bge等

  • 3)提升准确率:主要是语义召回:可以优化提示词+对问题及检索的文本进行归一化、适当考虑增加精排进一步提升准确率

  • 4)模型微调:动态生成sql这块可以使用微调后的模型

  • 5)模型切换:现在使用的是Qwen-7B-Chat,可以尝试使用参数更大模型或金融相关的专业模型

得分:综合:78.49

结构化召回:89.05

语义:62.65

排名:31/3502

说明:

本文源码下载:https://download.csdn.net/download/love254443233/90106437

参考的baseline代码=大模型说的队(源码FinQwen)Tongyi-EconML/FinQwen: FinQwen: 致力于构建一个开放、稳定、高质量的金融大模型项目,基于大模型搭建金融场景智能问答系统,利用开源开放来促进「AI+金融」。https://github.com/Tongyi-EconML/FinQwen

关键源码:

提取实体:

import csv import pandas as pd import numpy as np import re import copy from modelscope import AutoModelForCausalLM, AutoTokenizer, snapshot_download from modelscope import GenerationConfig model_dir = '/data/nfs/baozhi/models/Qwen-7B-Chat' # Note: The default behavior now has injection attack prevention off. tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True) new_question_file_dir = 'intermediate/A01_question_classify.csv' new_question_file = pd.read_csv(new_question_file_dir,delimiter = ",",header = 0) company_file_dir = 'files/AF0_pdf_to_company.csv' company_file = pd.read_csv(company_file_dir,delimiter = ",",header = 0) company_data_csv_list = list() company_index_list = list() company_name_list = list() for cyc in range(len(company_file)): company_name_list.append(company_file[cyc:cyc+1]['公司名称'][cyc]) company_data_csv_list.append(company_file[cyc:cyc+1]['csv文件名'][cyc]) temp_index_cp = tokenizer(company_file[cyc:cyc+1]['公司名称'][cyc]) temp_index_cp = temp_index_cp['input_ids'] company_index_list.append(temp_index_cp) g = open('intermediate/A02_question_classify_entity.csv', 'w', newline='', encoding = 'utf-8-sig') csvwriter = csv.writer(g) csvwriter.writerow(['问题id','问题','分类','对应实体','csv文件名']) for cyc in range(len(new_question_file)): tempw_id = new_question_file[cyc:cyc+1]['问题id'][cyc] tempw_q = new_question_file[cyc:cyc+1]['问题'][cyc] tempw_q_class = new_question_
http://www.jsqmd.com/news/606510/

相关文章:

  • Mac滚动控制与输入设备个性化:Scroll Reverser全攻略
  • 18-宠物领养系统 mysql+springboot+vue
  • 嵌入式TCP通信封装:简化开发与提升健壮性
  • WeKnora性能测试报告:不同硬件配置下的表现对比
  • 造相-Z-Image-Turbo 性能测试:不同GPU配置下的生成速度与成本对比
  • PRJ引起的tif影像导入global mapper/CASS位置异常以及PRJ参数的说明
  • RVC语音克隆实战:3步完成声音模型训练与推理
  • PyTorch-OpCounter与Netron:深度神经网络模型分析与优化的终极指南
  • 终极指南:3分钟掌握ncmdump,免费解锁网易云NCM加密音乐
  • MedGemma-X效果展示:对侧位胸片的脊柱侧弯程度评估与椎体旋转分级
  • 【面试】高级开发面试场景题
  • Harness层熔断降级:保障核心服务可用
  • Z-Image-ComfyUI参数调整技巧:从‘能看’到‘惊艳’的画质提升方法
  • OpenClaw+千问3.5-27B成本对比:自建模型VS商用API
  • DeerFlow内容创作神器:一键生成播客脚本、深度研究报告
  • 如何快速去除Unity游戏马赛克:BepInEx插件终极指南
  • 深入理解dynamic-datasource数据源分组:GroupDataSource完整使用指南 [特殊字符]
  • all-MiniLM-L6-v2优化指南:提升文本嵌入服务性能的5个技巧
  • 西门子博图编程:PLC状态机(二)ST语言实现并行状态机
  • TCP建立连接(三次握手)和连接释放(四次挥手)
  • libreact UI组件完全教程:从Portal到Modal的10个核心组件详解
  • DOL-CHS-MODS整合包使用指南:从入门到精通
  • 惊艳效果实测:基于Qwen2.5-VL的Chord模型,多场景视觉定位案例集
  • PP-DocLayoutV3效果对比:在DocLayNet数据集上较LayoutParser v0.3提升11.2% mAP
  • Qwen3.5-9B-AWQ-4bit在VSCode中的高效应用:Codex风格智能编程助手
  • 利用卷积神经网络思想优化伏羲模型对局部气象特征的捕捉能力
  • 微信小程序+Pixel Couplet Gen:用户行为埋点与A/B测试实践
  • Vyper异常处理终极指南:掌握assert、revert和自定义错误的实战技巧
  • Nucleus Co-Op:如何让单机游戏秒变本地多人分屏神器?
  • 12-在线医院管理系统