8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Vanna AI 处理同一数据库中的多个架构的问题

JsonKody 2月前

15 0

我正在使用 Vanna AI 为我们的组织实现“与数据对话”功能。作为我们设置的一部分,我们使用多租户数据库架构,其中每个租户的数据都存储在...

我正在使用 Vanna AI 为我们的组织实现“与数据对话”功能。作为设置的一部分,我们使用多租户数据库架构,其中每个租户的数据都存储在同一个 PostgreSQL 数据库内的单独架构中。

为了适应这种结构,我计划为 PostgreSQL 数据库中的每个模式创建单独的 Vanna 实例。每个实例都使用特定于其相应模式的不同训练数据集进行训练。这种方法的目的是确保 Vanna 查询是特定于模式的,并且不会交叉引用或组合来自不同模式或租户的数据。

然而,我遇到了一个问题,Vanna AI 似乎混淆了不同架构的训练数据集。例如,在查询仅应访问架构“X”的实例时,我注意到 Vanna 正在合并架构“Y”的训练数据中的元素。尽管我已经明确地分别训练了每个 Vanna 实例,确保每个实例只能访问其各自的架构和训练数据集,但这种情况仍然会发生。

以下是我所看到内容的高级说明:

  • Schema X:旨在仅使用 Schema X 数据训练自己的 Vanna 实例。
  • Schema Y:旨在使用 Schema Y 数据训练单独的 Vanna 实例。

但在操作过程中,针对 Schema X 的查询有时会错误地使用来自 Schema Y 数据集的模式或见解,反之亦然。例如:

  • 从 Schema X 查询客户信息时,Vanna 意外地引用了仅存在于 Schema Y 中的字段或实体。
  • 类似地,应该严格遵守 Schema X 上下文的查询会受到 Schema Y 独有的数据关系的影响,从而导致不正确或混合的查询结果。

为什么会发生这种情况?看来 Vanna AI 没有按预期隔离训练数据集,导致其查询中出现跨模式污染。

建议一个解决方案来确保每个 Vanna 实例在其定义的模式边界内运行,而无需交叉引用其他模式的训练数据。

我可以向你展示我所做的事情的演示代码

from vanna_ai import VannaManager

# Simulated function to initialize Vanna instances for each schema
def initialize_vanna_instances(schemas):
    vanna_instances = {}
    for schema in schemas:
        # Initialize a Vanna instance for each schema
        vanna_instance = VannaManager(schema_name=schema)
        # Train each instance with the schema-specific dataset
        vanna_instance.train(training_data_path=f"/path/to/{schema}_training_data.csv")
        vanna_instances[schema] = vanna_instance
    return vanna_instances

# Simulated function to query a specific Vanna instance
def query_vanna_instance(vanna_instance, query):
    # Generate SQL using the Vanna instance
    sql_query = vanna_instance.generate_sql(question=query)
    print(f"Generated SQL for schema {vanna_instance.schema_name}: {sql_query}")
    # Run SQL query against the schema-specific database
    result = vanna_instance.run_sql(sql=sql_query)
    return result

# Initialize Vanna instances for two different schemas
schemas = ['schema_x', 'schema_y']
vanna_instances = initialize_vanna_instances(schemas)

# Example queries for different schemas
query_x = "SELECT * FROM customers WHERE purchase_date > '2024-01-01';"
query_y = "SELECT * FROM orders WHERE order_amount > 100;"

# Query the instance for schema_x
result_x = query_vanna_instance(vanna_instances['schema_x'], query_x)
print(f"Result for Schema X: {result_x}")

# Query the instance for schema_y
result_y = query_vanna_instance(vanna_instances['schema_y'], query_y)
print(f"Result for Schema Y: {result_y}")

守则解释

  1. p10

  2. p11

  3. p12

    p13

    p14

    p15

    p16

帖子版权声明 1、本帖标题:Vanna AI 处理同一数据库中的多个架构的问题
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由JsonKody在本站《python》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: