一、定义
Vanna是一个开源的Python RAG(检索增强生成)框架,主要作用是帮助用户基于大型语言模型(LLMs),为其数据库生成精确的SQL查询 。它通过在用户数据上训练RAG模型,然后依据用户提问生成可在数据库上执行的SQL查询,整个过程分为训练和提问两个简单步骤。同时,Vanna支持多种LLMs、向量数据库和SQL数据库,既能保证查询的高准确性,又能确保数据库内容的安全私密,还支持用户自定义前端界面,并通过用户反馈进行自我学习以提升查询准确性。
二、核心概念
检索增强生成(RAG):结合检索与生成的方法,从大量数据中检索相关信息,并基于此生成输出,让Vanna更准确理解和响应用户问题。
大型语言模型(LLMs):Vanna依赖它来理解和生成自然语言,模型经过预训练,能把握语言复杂性和上下文。
向量数据库:用于存储和检索与用户问题相关信息,可高效处理和比较大量数据点。
数据定义语言(DDL):包含数据库中表名、列、数据类型和关系等信息,用于训练Vanna,使其了解数据库结构。
自然语言处理(NLP):实现将用户自然语言问题转化为可执行SQL查询的关键技术。
SQL查询生成:基于用户问题,利用LLMs自动生成SQL查询的功能。
多数据库支持:Vanna可连接多种SQL数据库,如PostgreSQL、MySQL等。
多LLMs支持:能兼容多个LLMs,例如OpenAI、Anthropic等。
三、历史背景
近10年来,随着人工智能和机器学习的迅速发展,将自然语言查询转化为SQL的Text2SQL技术需求日益增长。2023年5月,Vanna以基于MIT许可的开源Python RAG框架问世,目标是解决非技术人员与数据库交互的难题,让用户通过自然语言获取数据库洞察。其推动因素主要源于市场对高效、便捷数据查询工具的需求,以及RAG、LLM等技术的成熟。
四、主要理论/观点
RAG提升查询准确性:通过结合检索和生成过程,利用向量数据库检索相关信息,为LLMs生成SQL查询提供更准确上下文,从而提高查询准确性。
LLMs理解自然语言:预训练的LLMs具备理解人类语言复杂性和上下文的能力,可将自然语言问题转化为数据库可执行的查询。
数据安全保障:强调用户数据库内容不发送到语言模型,仅架构、文档和查询