Vanna 现在支持 Marqo 作为原生集成,以帮助使用 AI 生成 SQL
什么是 Marqo?
Marqo 是一个端到端、多模态的向量搜索引擎。用户可以存储和查询文本、图像和代码等非结构化数据。您可以在此处查看更多关于 Marqo 的信息。启动并运行 Marqo 实例后,您就可以借助 Vanna Python 库生成 SQL 了。
什么是 Vanna?
Vanna 是一个使用 检索增强生成 (RAG) 来生成 SQL 查询的 Python 库。
它从根本上提供了 2 个高级功能
-
vn.train()
- 用于将信息存储在向量数据库或 Marqo 等向量搜索中。 -
vn.ask()
- 这将从向量数据库中检索信息,并用于为 LLM 构建提示。然后 LLM 将根据提示生成 SQL 查询。
如何使用它帮助生成 SQL?
您可以向 Vanna Python 库提供有关数据库的信息,然后让它为您生成 SQL 查询。元数据将存储在 Marqo 中,然后通过您喜欢的 LLM 用于生成 SQL 查询。
启动 Marqo Docker 容器
安装 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?')
连接到数据库
您还可以连接到数据库来运行查询并获取表格结果、图表等。请参阅此示例笔记本了解如何操作。此笔记本还展示了如何连接到各种数据库和其他 LLM。
用户界面
您可以将此与 Streamlit 或任何其他基于 Python 的 UI 框架一起使用。我们有 2 个开源的 Streamlit 应用,您可以将其用作起点。