我用四种方法为 text-to-SQL 提示挑选数据表

每个 text-to-SQL 提示都要带上表结构(schema)。全都发过去,每次调用都得为所有表付钱;只发几张,又可能正好漏掉问题需要的那张。所以怎么挑表很关键。 我在同一批问题上对比了四种做法,全程不调用模型: - 完整表结构(Full schema) :不做挑选。 - BM25 :对每张表的定义做关键词检索。 - 向量检索(Embeddings) :用 all-MiniLM-L6-v2 计算相似度,也就是 LangChain、LlamaIndex、Vanna 从向量库里挑表时的常见做法。 - schemagate :我维护的开源库,用的是同一个 MiniLM 模型。 每种方法拿到的表数量