赞
踩
作者:宋文欣,智领云科技联合创始人兼CTO
随着人工智能技术的发展,尤其是自然语言处理(NLP)和机器学习的进步,使得将自然语言转换为结构化查询成为可能。这种技术的应用场景广泛,从简化数据库查询操作到提高数据分析的效率,都有着重要的实际价值。文章通过介绍 LangChain 和 Ollama 框架,提供了一种在本地或云服务器上部署和运行 LLMs 的方法,使得开发者和最终用户都能够轻松地实现自然语言到SQL查询的转换。
本文旨在向读者展示如何在Docker容器环境中利用大型语言模型(LLMs)构建一个端到端的Text2SQL 流程。通过这一流程,用户可以以自然语言提出问题,系统则自动将这些问题转化为SQL 查询语句,进而在关系型数据库上执行,从而获取所需的数据,实现从自然语言问题到关系型数据库上的 SQL 查询的转化。
在本文中,我们将深入探讨两个关键技术框架:LangChain 和 Ollama,它们是构建端到端Text2SQL 流程的基础。这些框架使得在 Docker 容器中部署和运行大型语言模型(LLMs)成为可能,从而实现了从自然语言到SQL查询语句的高效转换。
LangChain框架
LangChain 提供了SQL 查询链和 SQL 代理的核心功能。SQL 查询链负责将用户的自然语言查询转换为 SQL 语句,可以通过定制和扩展来适应不同的应用场景。SQL 代理则提供了高度的灵活性和定制性,允许开发者根据具体的任务和数据结构进行优化,以实现更准确和高效的自然语言查询转换。这两个组件共同为关系型数据库提供了一个易用且便捷的自然语言查询界面。
Ollama框架
Ollama 框架则提供了与 OpenAI 兼容的接口,使得在本地环境中部署和运行 LLMs 变得简单。它允许应用程序在 OpenAI 后端和本地运行的 LLMs 之间进行无缝切换,这种灵活性使得开发者可以根据需求选择最合适的部署方式。无论是在云端还是本地环境中,Ollama 都能够帮助开发者轻松实现模型的部署和运行。
这两个框架的结合,为 Text2SQL 任务提供了坚实的技术基础。通过 LangChain 的 SQL 查询链和 SQL 代理,以及 Ollama 的本地 LLM 部署功能,开发者能够构建出能够理解和执行自然语言查询的应用程序。这些技术不仅提高了数据库查询的效率,也为非技术用户提供了更加友好的交互方式,使得他们能够更容易地从数据库中获取信息。
Text2SQL 应用展示了自然语言处理技术在数据库查询领域的强大潜力。它不仅简化了查询过程,还通过提供详细的推理跟踪,让用户能够更加深入地参与到查询的每一个步骤中。这种创新的应用无疑将推动数据库查询技术的发展,为用户提供更加智能和个性化的服务。
通过应用,用户可以直观地了解数据库的结构和内容,并通过“DATABASE Information”功能浏览每个表的示例数据。为用户提供了一个清晰的视图,帮助他们更好地构建查询。此外,用户界面提供了两种模式选择:“ChatGPT”和“Local_LLM”,让用户能够根据自己的需求和偏好进行查询。为了增强用户体验,Text2SQL 还提供了 “LLM 推理跟踪”功能。
Text2SQL推理的这个过程集成了自然语言处理和数据库管理系统,通过逐步将用户的自然语言输入转化为结构化的SQL查询,使得用户能够以自然且直观的方式与数据库交互。
Text2SQL推理过程详细介绍如下:
(1)用户输入
用户以自然语言形式提出一个问题或请求,例如:“旧金山的办公室在哪里?”。
(2)文本解析
输入文本首先会被解析以确定关键词、短语、意图和实体,自然语言处理(NLP)技术,如分词、词性标注、命名实体识别(NER)等,被用于提取和理解查询中的重要信息。
(3)意图识
别与实体链接
系统识别查询的意图,包括选择(SELECT)、计数(COUNT)、更新(UPDATE)等,确定与数据库中实体(如表格、列名)的映射关系。
(4)SQL模板生成
使用预定义的模板和规则来生成SQL查询,这些模板可根据用户输入的意图和识别出的实体进行填充。
(5)深度学习模型
Text2SQL使用序列到序列(Seq2Seq)模型、注意力机制或基于Transformer的架构,如BERT或GPT,来生成SQL查询。在结合ChatGPT模型的情况下,LangChain框架提供了与ChatGPT模型集成的关键点,LangChain使用ChatOpenAI类来建立与OpenAI以及开源大语言模型(LLMs)的连接。
(6)SQL生成
使用上述技术生成的SQL查询会根据用户的原始文本输入构建,包括JOIN操作(如果需要关联不同的表)、WHERE子句(用于过滤结果)、GROUP BY语句(用于聚合操作)等。
(7)验证与优化
生成的SQL查询,可以通过执行部分查询或使用查询优化器来进行优化。
(8)执行SQL查询
生成的SQL查询在数据库上执行,执行结果是数据库返回的数据,通常是表格形式。
(9)结果展示
返回的结果以用户能理解的格式展示,涉及到将表格转换为自然语言的摘要,或以图形界面显示。
Mac,非GPU配置)
1.将以下是在本机电脑(Mac,非GPU配置) 上启动演示的逐步指南:
1)选择合适路径,右键 Open in Terminal,输入如下命令克隆仓库:
git clone https://github.com/LinkTime-Corp/llm-in-containers.git
cd llm-in-containers/text2sql
2)若需要使用 OpenAI 的模型进行推理,将您的OpenAI API密钥设置到conf/config.json的“OPENAI_API_KEY”中:
如果用户的OpenAI 未进行订阅,这里则需要修改model为:“OPENAI_API_MODEL”: “gpt-3.5-turbo”,
3)打开 Docker Desktop
4)启动演示
bash run.sh
修改 run.sh :
text2sql_ollama_1 -> text2sql-ollama-1
修改 load_data.sh :
text2sql_mysql_1 -> text2sql-mysql-1
(备注:将_修改为-)
5)将样本数据加载到 MySQL 中
bash load_data.sh
6)访问 http://localhost:8501/ 上的用户界面
7)关闭演示
bash shutdown.sh
过程类似,详情可参见完整博客内容,博客链接:https://www.linktimecloud.com/posts/7686
与 LLMs 交互的简化之道:LangChain 与 ChatOpenAI 的协同
在探索自然语言处理的前沿,LangChain 框架为我们提供了一种优雅的方式来与大型语言模型(LLMs)进行交互。通过使用 ChatOpenAI 类,我们不仅能够与 OpenAI 的模型建立连接,还能轻松地集成开源模型,这为开发者带来了极大的灵活性。
以下代码片段,演示了此配置:
openai_llm = ChatOpenAI(model_name=OPENAI_API_MODEL)
local_llm = ChatOpenAI(model_name=LOCAL_MODEL_NAME, openai_api_base=API_BASE)
使用 LangChain 实现 Text2SQL
在自然语言处理中,LangChain 框架以其强大的 Text2SQL 能力脱颖而出。它通过两个核心组件:SQL Chain 和 SQL Agent 让自然语言到 SQL 查询的转换变得简单而高效。
以下代码片段,演示了如何实现 SQL Chain 和 SQL Agent 配置:
from langchain_community.agent_toolkits import create_sql_agent
def init_openai_agent(self, db):
openai_llm = ChatOpenAI(model_name=OPENAI_API_MODEL)
return create_sql_agent(openai_llm, db=db,
agent_type="openai-tools", verbose=True)
from langchain.chains import create_sql_query_chain
def init_local_chain(self, db):
local_llm = ChatOpenAI(model_name=LOCAL_MODEL_NAME, openai_api_base=API_BASE)
write_query = create_sql_query_chain(local_llm, db)
return write_query
LLMs 在 Text2SQL 任务上的准确性探索
准确性是衡量 LLMs 在 Text2SQL 任务上性能的关键指标,直接影响模型将自然语言查询转换成SQL语句的能力。虽然本文未深入探讨准确性指标,但我们鼓励读者参考公开的性能测试,以了解不同LLMs在这一任务上的表现。
Defog公司在这篇文章(https://defog.ai/blog/open-sourcing-sqlcoder2-7b/)中提供了一项详细的性能测试,对比了 SQLCoder2 与其他多种 LLMs的准确性,可以为我们选择最合适的模型提供参考。
本文Github 链接:
https://github.com/LinkTime-Corp/llm-in-containers/tree/main/text2sql
博客原文链接:
https://blog.gopenai.com/text2sql-pipeline-with-llms-in-docker-containers-34ae1097df46
作者:宋文欣,智领云科技联合创始人兼CTO
武汉大学计算机系本科及硕士,美国纽约州立大学石溪分校计算机专业博士。曾先后就职于Ask.com和EA(电子艺界)。在Ask.com期间,担任大数据部门技术负责人及工程经理,使用Hadoop集群处理实时搜索数据,形成全球规模领先的Search Ads Arbitrage用户;在EA期间,担任数字平台部门高级研发经理,从无到有组建EA数据平台团队,建设公司大数据平台,为EA全球工作室提供数据能力支持。
2016年回国联合创立智领云科技有限公司,组建智领云技术团队,开发了BDOS大数据平台操作系统。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。