大型语言模型 (LLM) 已展现出理解自然语言提示并生成连贯响应的卓越能力。 这为将自然语言翻译成 SQL 等结构化查询语言开辟了新的可能性。 过去,编写 SQL 查询需要技术专业知识,而LLM允许任何人用简单的英语描述他们想要的内容,并自动生成相应的 SQL 代码。
当利用LLM将自然语言转换为 SQL 查询时,提示词至关重要。 使用 Anthropic 的两个模型(Claude instant 1.1、Claude 2),并使用不同的提示工程技术评估了spider数据集上的 SQL 查询准确性(执行准确性)。 从较高的层面来看,在进行自然语言到 SQL 的转换时,提示工程有几个重要的考虑因素:
-
使用清晰的说明–简单明了的自然语言提示更容易让LLM理解和翻译。
-
提供足够的上下文 --LLM 需要了解用户的请求查询语义以及有关数据库模式的详细信息,例如表和列名称。
-
包括示例 --提供一些自然语言和对应SQ的示例,可以帮助指导 LLM 以正确的语法生成查询。
-
利用 RAG(检索增强生成)–检索与用户查询相关的自然语言和 SQL 示例,可以提高准确性。
在这篇博客中,我将使用我的基准测试结果来帮助您了解上述每种提示策略如何影响自然语言到 SQL 转换的准确性。
操作说明
当使用 LLM 从自然语言生成 SQL 时,在提示中提供清晰的说明对于控制模型的输出至关重要。 在我对 Claude 模型的实验中,一种有效的策略是在提示中使用 XML 标签来注释不同的组件。 XML 标签就像指令一样,准确地告诉模型如何格式化 SQL。 例如,指示模型在 之间编写查询可以减少详细输出。 如果没有这条指令,Claude模型可能会非常健谈。