发布于

Marqo 如何通过 Vanna Python 库帮助使用 AI 生成 SQL

Marqo 是一个端到端、多模态的向量搜索引擎。用户可以存储和查询文本、图像和代码等非结构化数据

Vanna 现在支持 Marqo 作为原生集成,以帮助使用 AI 生成 SQL

什么是 Marqo?

Marqo

Marqo 是一个端到端、多模态的向量搜索引擎。用户可以存储和查询文本、图像和代码等非结构化数据。您可以在此处查看更多关于 Marqo 的信息。启动并运行 Marqo 实例后,您就可以借助 Vanna Python 库生成 SQL 了。

什么是 Vanna?

Vanna 是一个使用 检索增强生成 (RAG) 来生成 SQL 查询的 Python 库。Vanna 动画

它从根本上提供了 2 个高级功能

  1. vn.train() - 用于将信息存储在向量数据库或 Marqo 等向量搜索中。
  2. vn.ask() - 这将从向量数据库中检索信息,并用于为 LLM 构建提示。然后 LLM 将根据提示生成 SQL 查询。

如何使用它帮助生成 SQL?

您可以向 Vanna Python 库提供有关数据库的信息,然后让它为您生成 SQL 查询。元数据将存储在 Marqo 中,然后通过您喜欢的 LLM 用于生成 SQL 查询。

启动 Marqo Docker 容器

vanna-marqo-start

安装 Vanna Python 库和 Marqo Python 库

pip install vanna
pip install marqo

配置 Vanna 使用 Marqo 作为向量存储,并与您喜欢的 LLM 一起使用

在此示例中,我们使用 OpenAI 的 GPT-4 模型。

from vanna.marqo.marqo import Marqo_VectorStore
from vanna.openai.openai_chat import OpenAI_Chat

class MyVanna(Marqo_VectorStore, OpenAI_Chat):
    def __init__(self, config=None):
        Marqo_VectorStore.__init__(self, config=config) # You can pass additional Marqo configuration options like the url and model name here
        OpenAI_Chat.__init__(self, config=config)

vn = MyVanna(config={'api_key': os.environ['OPENAI_API_KEY'], 'model': 'gpt-4'})

添加训练数据

训练数据的例子可以是 DDL 语句、SQL 查询或任何其他关于您的数据库、业务或行业的文本文档。

这里我们将向向量存储添加一个简单的 DDL 语句。

vn.train(ddl='CREATE TABLE users (id INT, name VARCHAR(255), email VARCHAR(255), PRIMARY KEY (id))')

实际上,您需要添加更多的训练数据。您可以根据需要添加任意数量的数据。添加得越多,结果就会越好。请参阅此示例笔记本了解如何操作。

提问

现在我们可以提问并获取 SQL、表格结果、自动生成的 Plotly 代码以及潜在的后续问题。

vn.ask('How many users are there?')

Vanna Jupyter Notebook

连接到数据库

您还可以连接到数据库来运行查询并获取表格结果、图表等。请参阅此示例笔记本了解如何操作。此笔记本还展示了如何连接到各种数据库和其他 LLM。

用户界面

您可以将此与 Streamlit 或任何其他基于 Python 的 UI 框架一起使用。我们有 2 个开源的 Streamlit 应用,您可以将其用作起点。

Vanna Streamlit

作为笔记本运行

作为笔记本运行

Vanna 标志 Vanna.AI

只需提问即可快速从数据库获取洞察