Skip to content

使用OpenAI通过Vanna.AI生成SQLite的SQL(推荐),Vanna托管的向量数据库(推荐)

本笔记本介绍了使用vanna Python包通过AI(RAG + LLMs)生成SQL的过程,包括连接到数据库和训练。如果您还没有准备好在自己的数据库上进行训练,您仍然可以使用示例SQLite数据库进行尝试。

使用Colab运行 在GitHub中打开

你想使用哪个LLM?

你想在哪里存储“训练”数据?

设置

%pip install vanna
import vanna
from vanna.remote import VannaDefault
api_key = # 你的API密钥来自 https://vanna.ai/account/profile 

vanna_model_name = # 你的模型名称来自 https://vanna.ai/account/profile 
vn = VannaDefault(model=vanna_model_name, api_key=api_key)

你想查询哪个数据库?

vn.connect_to_sqlite('my-database.sqlite')

训练

你只需要训练一次。除非你想添加更多的训练数据,否则不要再次训练。

df_ddl = vn.run_sql("SELECT type, sql FROM sqlite_master WHERE sql is not null")

for ddl in df_ddl['sql'].to_list():
  vn.train(ddl=ddl)
# 以下是添加训练数据的方法。确保你修改示例以匹配你的数据库。

# DDL语句非常强大,因为它们指定了表名、列名、类型以及潜在的关系
vn.train(ddl="""
    CREATE TABLE IF NOT EXISTS my-table (
        id INT PRIMARY KEY,
        name VARCHAR(100),
        age INT
    )
""")

# 有时你可能想添加关于业务术语或定义的文档。
vn.train(documentation="我们的业务将OTIF分数定义为按时足量交付的订单百分比")

# 你也可以将SQL查询添加到训练数据中。如果你已经有一些查询,这很有用。你可以直接从编辑器中复制粘贴这些查询,以开始生成新的SQL。
vn.train(sql="SELECT * FROM my-table WHERE name = 'John Doe'")
# 你可以随时检查包能够引用的训练数据
training_data = vn.get_training_data()
training_data
# 如果有过时/错误的信息,你可以删除训练数据。
vn.remove_training_data(id='1-ddl')

```## 向AI提问
每当你提出一个新问题时,它会找到10个最相关的训练数据片段,并将其作为LLM提示的一部分来生成SQL。
```python
vn.ask(question=...)

启动用户界面

vanna-flask

from vanna.flask import VannaFlaskApp
app = VannaFlaskApp(vn)
app.run()