【第4篇】NL2SQL架构设计
本文介绍了NL2SQL比赛的参赛项目架构设计,包含数据准备和批量执行两大模块。数据准备阶段通过多个Python脚本实现Excel到SQL的转换、问题模板关联、向量化处理等流程,最终生成向量数据库。批量执行阶段采用多线程处理,通过查询匹配库表、构建提示词、调用大模型生成SQL等步骤,将结果写入JSON文件。整体架构包含10余个功能模块,实现了从自然语言到SQL语句的自动化转换流程。
·
NL2SQL架构设计
比赛相关介绍参见 《2025年羊城工匠杯nl2sql比赛介绍》。
开发环境配置参见《nl2sql2025开发环境配置》
本文介绍参赛项目的架构设计内容。
打开start.sh文件,功能包括数据准备和批量执行

数据准备阶段流程图
主要源代码介绍:
src/vector/excel2sql.py : excel文件 data/表结构.xlsx 转为包含 sqlite建表ddl 的json文件,写入 ./sql_output 文件夹
src/vector/question2table.py :建立库表与问题模板库关联,生成tmp_question2sql.json文件

src/vector/template2sql.py :建立库表与问题模板库关联,生成tmp_question2sql.json文件

src/vector/sql_markdown.py :对./sql_output 文件夹打问题模板标记

src/vector/sqls_embedding.py :调用嵌入模型,生成tmp_embedding_waiting.txt 待向量化的文件
src/vector/vector2chroma.py :读取tmp_embedding_waiting.txt 写入chroma向量数据库
批量NL2SQL执行流程图
主要源代码介绍:
src/multi_extraction.py : 主程序入口,支持多线程启动,逐行读取 data/questions.jsonl,生成result/part[序号]_results.jsonl
src/query/get_sql_answer.py : 根据Qustion得到匹配度最高库表
src/query/query_sql.py : 根据table_name找到sql_output下面对应的建表语句
src/query/query_table.py : 根据question找到到tmp_quesiton2.sql.json 找到对应的table
src/query/build_extra_hint.py : 根据Question生成特殊提示词
src/query/extract_tables.py : 提取SQL里面的库表
src/query/hit_keywords.py : 根据问题与向量搜索问题集的关键字匹配数组
src/query/query_reranker.py : question和documents的调用reranker模型排序
src/query/query_vector.py : 根据text查找向量库中相似度TOP5记录 (需要用到embedding模型)
src/query/data_reranker.py : 根据tmp_embedding.txt的 query和documents 找到匹配度最高的段落(需要用到reranker模型)
【本文结束】
更多推荐


所有评论(0)