常见问题
我可以在没有API密钥的情况下使用Vanna吗?
是的,Vanna API 密钥仅在您使用 Vanna 托管的组件(即 LLM 或向量存储)时才需要。如果您已经可以访问 LLM 和向量存储,您可以在没有 API 密钥的情况下使用 Vanna Python 包。
我们免费提供gpt-3.5-turbo
,所以如果你正在寻找一种快速简便的方法来开始而不必支付费用,你可以注册一个免费的Vanna API密钥。
如何获取Vanna API密钥?
如何创建一个Vanna“模型”?
我可以在“离线”状态下运行这个吗?
是的。你可以将Vanna与Ollama一起使用,这允许你在离线状态下运行你的LLM,并且对于向量存储,你可以使用ChromaDB。如果你实际上是在没有互联网连接的机器上运行(即隔离网络),你可能需要对ChromaDB进行一些调整,以预下载嵌入函数的权重。同样,你可能需要预下载LLM的权重。
我可以将这个与我的SQL数据库一起使用吗?
是的。Vanna 可以与任何可以通过 Python 连接的 SQL 数据库一起使用(应该是所有的数据库)。Vanna 包含许多预构建的连接器,您可以用一行代码连接到您的数据库,但您也可以随时自定义连接。
Vanna 查询您的数据库所需的只是一个名为 vn.run_sql
的函数,该函数接收一个 SQL 查询并返回一个 pandas DataFrame。如果您能编写一个实现此功能的函数,您就可以将 Vanna 与您的数据库一起使用。以下是一个示例:
import pandas as pd
import psycopg2
def run_sql(sql):
conn = psycopg2.connect(
host="localhost",
database="my_database",
user="my_user",
password="my_password"
)
return pd.read_sql(sql, conn)
vn.run_sql = run_sql
vn.run_sql_is_set = True
如何自定义ChromaDB路径?
你可以在配置对象中传递一个'path'参数:
from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore):
def __init__(self, config=None):
ChromaDB_VectorStore.__init__(self, config=config)
vn = MyVanna(config={'path': '/path/to/chromadb'})
这些是我认为非常常见的六个常见问题解答,而原始常见问题解答并未回答
vn.ask
太慢了,它在笔记本上无法停止加载
可能有很多原因导致这种情况,但以下是最常见的:
1. Plotly 无法生成您的数据图表,请设置参数 visualize=False
2. LLM 可能没有响应,如果您使用的是自己的本地 LLM,请检查您的 API
3. SQL 引擎可能已经耗尽,请与您的数据库管理员联系
如何查看我的训练数据?如何编辑它?
使用 vn.get_training_data()
查看您的训练数据的数据框。每当您运行 vn.ask
或 vn.generate_sql
时,可以使用 auto_train = True
添加训练数据。您可以使用 vn.remove_training_data(id='训练数据中的行id')
删除训练数据。您可以遍历 vn.get_training_data
中的所有 id 来删除所有训练数据。
我可以要求vanna总结查询结果或根据我的喜好使用查询结果吗?
在Vanna的最新更新中,我们增加了额外的LLM功能。你可以在这里看到链接
如果我的SQL数据库不在文档列出的列表中,如何将其连接到Vanna
你可以连接到它们,但你需要实现列出的方法 这里
Vanna 无法停止训练或在我尝试运行训练计划时不训练?
可能有很多原因导致这种情况,以下是最常见的:
1) 您的训练数据大于模型的上下文窗口,请尝试截断计划或一次执行一个DDL语句
2) Vanna以特定格式接收训练计划。基本上,您的计划数据框必须包含SELECT * FROM INFORMATION_SCHEMA.COLUMNS
中的所有列
3) 训练计划中可能存在一些损坏或不寻常的语句
每当我执行vn.ask()
或vn.generate_sql()
时,Vanna没有返回任何内容,只是返回了一个错误?或者Vanna返回了一些带有奇怪字符串的乱码语句。
以下是可能的原因:
1) Vanna 尚未在 SQL 语句上进行训练
2) 训练数据中存在一些损坏,例如可能在SQL训练中添加了一些非SQL语句。可能存在一些带有意外字符的示例,尝试删除部分数据或使用vn.get_related_sql() 或 vn.get_related_ddl()
查看训练数据中引用的示例
3) 大型语言模型可能会出现幻觉,如果问题持续存在,请尝试使用不同的大型语言模型。