DDIWYk 发表于 3 天前

Text2SQL工具:Vanna介绍与安装


一、什么是Vanna

Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation,检索增强生成)框架,用于将自然语言问题转换为精确的 SQL 查询,并在数据库上执行这些查询以返回结果和可视化图表。
比如你提问:查询年龄25岁以上的人员清单。
Vanna就可以将其转为sql语句。

二、Vanna的工作原理

1. 训练 RAG 模型


[*]数据准备:导入数据库的元数据(如表结构 DDL 语句)、文档(如业务术语解释)和示例 SQL 查询。
[*]向量化存储:将上述数据转换为向量并存储在本地向量数据库(如 ChromaDB)中。
2. 生成 SQL


[*]用户输入自然语言问题后,Vanna 从向量库中检索相关上下文,结合 LLM(如 GPT-4、Qwen、DeepSeek等)生成 SQL 语句。
[*]生成的 SQL 可自动执行并返回结果,支持数据可视化(如图表展示)
以下是Vanna的整体工作原理:

三、Vanna的环境配置

3.1 创建属于vanna的虚拟环境

在这里选择了python3.11.x的版本。
conda create -n my_vanna pythnotallow==3.11.9

[*]1.







3.2 安装vanna环境依赖

pip install vanna

[*]1.






由于我们采用openai接口的方式使用vanna,因此需要安装openai库。
pip install openai

[*]1.






经过以上配置,我们就可以通过vanna来生成sql了。
注意:以上通过pip安装过程中涉及到其他依赖库的安装,因此建议通过在线方式进行安装。
涉及到的环境:
annotated-types                        0.7.0anyio                                    4.8.0asgiref                                  3.8.1attrs                                    25.1.0backoff                                  2.2.1bcrypt                                 4.2.1blinker                                  1.9.0build                                    1.2.2.post1cachetools                               5.5.1certifi                                  2025.1.31charset-normalizer                     3.4.1chroma-hnswlib                           0.7.6chromadb                                 0.6.3click                                    8.1.8colorama                                 0.4.6coloredlogs                              15.0.1Deprecated                               1.2.18distro                                 1.9.0durationpy                               0.9fastapi                                  0.115.8filelock                                 3.17.0flasgger                                 0.9.7.1Flask                                    3.1.0flask-sock                               0.7.0flatbuffers                              25.2.10fsspec                                 2025.2.0google-auth                              2.38.0googleapis-common-protos               1.67.0greenlet                                 3.1.1grpcio                                 1.70.0h11                                    0.14.0httpcore                                 1.0.7httptools                              0.6.4httpx                                    0.28.1huggingface-hub                        0.29.0humanfriendly                            10.0idna                                     3.10importlib_metadata                     8.5.0importlib_resources                      6.5.2itsdangerous                           2.2.0Jinja2                                 3.1.5jiter                                    0.8.2jsonschema                               4.23.0jsonschema-specifications                2024.10.1kaleido                                  0.2.1kubernetes                               32.0.1markdown-it-py                           3.0.0MarkupSafe                               3.0.2mdurl                                    0.1.2mistune                                  3.1.2mmh3                                     5.1.0monotonic                              1.6mpmath                                 1.3.0narwhals                                 1.27.1numpy                                    2.2.3oauthlib                                 3.2.2onnxruntime                              1.20.1openai                                 1.63.2opentelemetry-api                        1.30.0opentelemetry-exporter-otlp-proto-common 1.30.0opentelemetry-exporter-otlp-proto-grpc   1.30.0opentelemetry-instrumentation            0.51b0opentelemetry-instrumentation-asgi       0.51b0opentelemetry-instrumentation-fastapi    0.51b0opentelemetry-proto                      1.30.0opentelemetry-sdk                        1.30.0opentelemetry-semantic-conventions       0.51b0opentelemetry-util-http                  0.51b0orjson                                 3.10.15overrides                              7.7.0packaging                              24.2pandas                                 2.2.3pip                                    25.0plotly                                 6.0.0posthog                                  3.14.1protobuf                                 5.29.3pyasn1                                 0.6.1pyasn1_modules                           0.4.1pydantic                                 2.10.6pydantic_core                            2.27.2Pygments                                 2.19.1PyMySQL                                  1.1.1PyPika                                 0.48.9pyproject_hooks                        1.2.0pyreadline3                              3.5.4python-dateutil                        2.9.0.post0python-dotenv                            1.0.1pytz                                     2025.1PyYAML                                 6.0.2referencing                              0.36.2requests                                 2.32.3requests-oauthlib                        2.0.0rich                                     13.9.4rpds-py                                  0.22.3rsa                                    4.9setuptools                               75.8.0shellingham                              1.5.4simple-websocket                         1.1.0six                                    1.17.0sniffio                                  1.3.1SQLAlchemy                               2.0.38sqlparse                                 0.5.3starlette                              0.45.3sympy                                    1.13.3tabulate                                 0.9.0tenacity                                 9.0.0tokenizers                               0.21.0tqdm                                     4.67.1typer                                    0.15.1typing_extensions                        4.12.2tzdata                                 2025.1urllib3                                  2.3.0uvicorn                                  0.34.0vanna                                    0.7.6watchfiles                               1.0.4websocket-client                         1.8.0websockets                               15.0Werkzeug                                 3.1.3wheel                                    0.45.1wrapt                                    1.17.2wsproto                                  1.2.0zipp                                     3.21.0

[*]1.
[*]2.
[*]3.
[*]4.
[*]5.
[*]6.
[*]7.
[*]8.
[*]9.
[*]10.
[*]11.
[*]12.
[*]13.
[*]14.
[*]15.
[*]16.
[*]17.
[*]18.
[*]19.
[*]20.
[*]21.
[*]22.
[*]23.
[*]24.
[*]25.
[*]26.
[*]27.
[*]28.
[*]29.
[*]30.
[*]31.
[*]32.
[*]33.
[*]34.
[*]35.
[*]36.
[*]37.
[*]38.
[*]39.
[*]40.
[*]41.
[*]42.
[*]43.
[*]44.
[*]45.
[*]46.
[*]47.
[*]48.
[*]49.
[*]50.
[*]51.
[*]52.
[*]53.
[*]54.
[*]55.
[*]56.
[*]57.
[*]58.
[*]59.
[*]60.
[*]61.
[*]62.
[*]63.
[*]64.
[*]65.
[*]66.
[*]67.
[*]68.
[*]69.
[*]70.
[*]71.
[*]72.
[*]73.
[*]74.
[*]75.
[*]76.
[*]77.
[*]78.
[*]79.
[*]80.
[*]81.
[*]82.
[*]83.
[*]84.
[*]85.
[*]86.
[*]87.
[*]88.
[*]89.
[*]90.
[*]91.
[*]92.
[*]93.
[*]94.
[*]95.
[*]96.
[*]97.
[*]98.
[*]99.
[*]100.
[*]101.
[*]102.
[*]103.
[*]104.
[*]105.
[*]106.
[*]107.
[*]108.
[*]109.
[*]110.
[*]111.
[*]112.
[*]113.
[*]114.
[*]115.
[*]116.
[*]117.
[*]118.
[*]119.
[*]120.
[*]121.
[*]122.





四、Vanna的环境配置

4.1 注册vanna的API

官网地址如下:
https://vanna.ai/

[*]1.





仅需通过email就可以免费注册,然后到个人中心去找到自己的api key。

注册之后,每天享有100K的免费Token。

4.2  vanna在线测试

根据官网给的示例,我们只需要传递自己的apikey就可以进行测试。
import vannafrom vanna.remote import VannaDefaultvn = VannaDefault(model='chinook', api_key='6474fcc9348a48feb0c997c707c2004b')vn.connect_to_sqlite('https://vanna.ai/Chinook.sqlite')vn.ask("What are the top 10 albums by sales?")

[*]1.
[*]2.
[*]3.
[*]4.
[*]5.





测试结果如下,可以看到利用vanna自己的服务器和数据库能够成功获得sql语句与sql结果。(API已失效,自己可以免费申请)

4.3  vanna私有化测试

本地mysql数据库的user表:

通过代码测试,可以看到能够成功提取年龄大于30岁的用户。
图片
页: [1]
查看完整版本: Text2SQL工具:Vanna介绍与安装