Skip to main content

A simple implementation of NL2SQL.

Project description

NL2SQL

A simple implementation of NL2SQL.

Requirements

  • Python 3.12+
  • Postgresql / Mysql
  • LLM API
  • Milvus 2.5.0+
  • Embedding API

Definition

LLM URI

A db-uri-style string that provides information for calling the model API.

Format

<model_type>+<api_type>://<model>[:<model_tag>]@[<api_key>]@<url>

Supported Model Type

  • llm
  • embedding

Supported API Type

  • ollama
  • openai

Example

llm+ollama://qwen2.5:32b@localhost:11434 llm+openai://gpt-3.5-turbo:32b@your_token@http://localhost:11434/v1

SQL References

Optional metadata stored in Milvus. Provide some sql references for problems similar to the current problem.

Format

Must contain fields: query, sql and tags. Vector field will be matched the embedding of query.

Usage

assembly sql generating

import asyncio
from nl2sql.tools.text2sql import Text2SQLAssembly
text2sql = Text2SQLAssembly(
    db_uri="postgresql+psycopg2://postgres:123456@localhost:5432/test",
    openai_baseurl="http://localhost:11434/v1",
    openai_apikey="your_token",
    llm_model="qwen2.5:0.5b",
    embedding_model="bge-m3",
    milvus_uri="http://read:123456@localhost:19530",
    collection_name="sql_references",
)
# request or get information in context engineering
# using more information to generate SQL exactly
asyncio.run(text2sql.generate(
    "公司的设备清单", 
    ["assets", "users", "projects"], 
    columns=["id", "name", "asset_type"],  # optional
    expressions=["order by id", "limit 10"],  # optional
))

@Deprecated(0.5.0) generate sql

from nl2sql.tools.text2sql import Text2SQL
worker = Text2SQL(
    db_uri="postgresql+psycopg2://postgres:123456@localhost:5432/test",
    llm_uri="llm+ollama://qwen2.5:32b@localhost:11434",
    milvus_uri="http://read:123456@localhost:19530",
    collection_name="sql_references",
    embedding_uri="embedding+ollama://bge-m3@localhost:11434"
)
sql = worker.generate("公司的设备清单", ["assets", "users", "projects"]).sql

@Deprecated(0.5.0) optimize sql

from nl2sql.tools.text2sql import Text2SQL

worker = Text2SQL(
    db_uri="postgresql+psycopg2://postgres:123456@localhost:5432/test",
    llm_uri="llm+ollama://qwen2.5:32b@localhost:11434",
    milvus_uri="http://read:123456@localhost:19530",
    collection_name="sql_references",
    embedding_uri="embedding+ollama://bge-m3@localhost:11434"
)
sql = worker.optimize("select * from users", "所有用户的用户名", "有多余的字段", ["users", "projects"]).sql

@Deprecated(1.0.0) agent for sql generating

import asyncio
from nl2sql.tools.text2sql import Text2SQLAgent

agent = Text2SQLAgent(
    db_uri="postgresql+psycopg2://postgres:123456@localhost:5432/test",
    openai_baseurl="http://localhost:11434/v1",
    openai_apikey="your_token",
    llm_model="qwen2.5:0.5b",
    embedding_model="bge-m3",
    milvus_uri="http://read:123456@localhost:19530",
    collection_name="sql_references",
)
# no longer need to specify name, instructions, tools
asyncio.run(agent.generate("公司的设备清单", ["assets", "users", "projects"]))

Check if the entity is ambiguous

from nl2sql.tools.text2sql import Text2SQLAssembly
text2sql = Text2SQLAssembly(
    db_uri="postgresql+psycopg2://postgres:123456@localhost:5432/test",
    openai_baseurl="http://localhost:11434/v1",
    openai_apikey="your_token",
    llm_model="qwen2.5:0.5b",
    embedding_model="bge-m3",
    milvus_uri="http://read:123456@localhost:19530",
    collection_name="sql_references",
)
result = text2sql.is_entity_ambiguous(
    "test", "users", 
    ["email", "full_name"],
    ["email", "full_name", "id"]
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simple_nl2sql-0.3.1.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simple_nl2sql-0.3.1-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file simple_nl2sql-0.3.1.tar.gz.

File metadata

  • Download URL: simple_nl2sql-0.3.1.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for simple_nl2sql-0.3.1.tar.gz
Algorithm Hash digest
SHA256 cd98ccdc2b75e19c3b4759df6c459bfc3dafbd02d450cf60dbcb1df5134afb12
MD5 db86b45abbd02e263480c1a7a08e677f
BLAKE2b-256 4097ce8d51545f89b05d6d5d669c25f1892c34c13e7856ea2bb7bd56b7ef6344

See more details on using hashes here.

File details

Details for the file simple_nl2sql-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: simple_nl2sql-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for simple_nl2sql-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b6b3c736b67b68c49b14cd75e26ac619c6c500b2c132b9bacbe7552d480ce1ef
MD5 439917d4011d9688edc24987501a0d70
BLAKE2b-256 dd8c7046cda5cac188ad347d043939c1a829e4828dcf421af9086bda212d87fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page