vanna-ai本地部署(qdrant向量库+mysql数据库+qwen-plus llm)

vanna-ai本地部署(qdrant向量库+mysql数据库+qwen-plus llm)

背景

Vanna AI 是一个多功能的数据分析和智能决策平台,旨在帮助企业通过自然语言与数据进行交互。它通过 自动生成 SQL 查询、智能报告、数据可视化等功能,可以大大提高工作效率,并支持 无编程知识的用户 直接与数据进行交互。Vanna AI 非常适合需要大量数据分析和报告生成的企业,特别是在 客户关系管理(CRM)、销售分析、市场研究等领域。
本博客主要展示如何本地部署vanna

着手部署

部署前准备

官方给出有好几种搭配(数据库,向量库,LLM),这里我们选择mysql数据库,向量库使用qdrant,LLM模型使用百炼平台的qwen-plus

qdrant向量库启动(参考https://blog.csdn.net/shizidushu/article/details/141651538)

在win系统上使用wsl拉取镜像并启动

docker pull qdrant/qdrant
docker run -d -p 6333:6333 -p 6334:6334 \
    -v $(pwd)/qdrant_storage:/qdrant/storage:z \
    qdrant/qdrant

启动后就是下面的情况了:
在这里插入图片描述

vanna 安装

接着就根据官网指引开始安装:https://vanna.ai/docs/

pip install 'vanna[qdrant,mysql]'

官方给出的代码:

from vanna.base import VannaBase
from vanna.qdrant import Qdrant_VectorStore
from qdrant_client import QdrantClient
class MyCustomLLM(VannaBase):
  def __init__(self, config=None):
    # Implement here
    pass

  def submit_prompt(self, prompt, **kwargs) -> str:
    # Implement here
    # See an example implementation here: https://github.com/vanna-ai/vanna/blob/main/src/vanna/mistral/mistral.py


class MyVanna(Qdrant_VectorStore, MyCustomLLM):
    
### vanna-ai 权限配置教程 对于vanna-ai平台而言,权限管理是保障数据安全和服务稳定的重要组成部分。通常情况下,在部署和使用过程中会涉及到不同层次的访问控制机制。 #### 用户角色划分 为了更好地管理和分配权限,系统内预设了几种常见的用户角色: - **管理员**:拥有最高级别的操作权限,能够创建新用户、调整其他用户的权限设置以及执行全局性的维护工作。 - **开发者**:主要负责应用程序逻辑编写及调试,可以在指定范围内修改代码并提交变更请求。 - **测试人员**:专注于软件质量保证环节中的功能验证部分,有权查看特定项目的源码及其运行状态以便开展有效的单元测试活动。 - **访客/只读用户**:仅能浏览已发布的API接口文档和其他公开资源,无法参与实际开发流程也不具备任何编辑能力[^1]。 #### API Key 管理 当利用第三方服务如OpenAI Client时,则需特别注意API key的安全保管措施。建议采用环境变量的方式存储敏感信息而非硬编码到源文件里;另外定期更换密钥也是一种良好的实践习惯。如果发现有异常登录行为应当立即停用当前key并向官方报告情况寻求进一步指导[^2]。 #### 数据库连接字符串加密处理 考虑到数据库作为核心资产之一的重要性,其对应的连接串务必经过严格的保护手段来防止泄露风险。一种可行的方法是对该部分内容实施AES对称加密算法后再存入配置文件中去。解密过程则交由应用启动阶段完成即可确保每次加载都能获取最新的认证参数而不会暴露在外网环境中造成安全隐患[^3]。 ```python from cryptography.fernet import Fernet def encrypt_db_connection_string(connection_string, key): cipher_suite = Fernet(key) encrypted_data = cipher_suite.encrypt(bytes(connection_string, 'utf-8')) return str(encrypted_data) def decrypt_db_connection_string(encrypted_data, key): cipher_suite = Fernet(key) decrypted_data = cipher_suite.decrypt(eval(encrypted_data)) return decrypted_data.decode('utf-8') ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值