pg_llm Text2SQL turns natural language prompts into executable SQL inside PostgreSQL, with optional vector/RAG context and structured observability.
Primary APIs:
pg_llm_text2sql(...) returns text (compatibility wrapper)pg_llm_text2sql_json(...) returns jsonb (authoritative structured output)Implementation entrypoint: build_text2sql_json_internal(...) in src/pg_llm.cpp.
ModelManager.Text2SQLConfig.schema_info, orText2SQL::get_schema_info().When use_vector_search = true:
Text2SQL::search_vectors(prompt).Text2SQL::get_similar_queries(prompt).Vector storage/search uses _pg_llm_catalog.pg_llm_vectors with corrected column naming:
query_vector (embedding column)table_name, column_name, row_id, metadataText2SQL::generate_statement(prompt, schema, vector_hits, similar_queries).generated_sql).EXPLAIN <sql> and return plan lines in execution.explain.event_type = text2sql) in pg_llm_audit_log.pg_llm_trace_log.request_id for correlation.pg_llm_text2sql_json(instance_name, prompt, schema_info, use_vector_search, options)
instance_name text: registered model instanceprompt text: natural language queryschema_info text default NULL: optional schema JSON overrideuse_vector_search bool default true: toggle vector enhancementoptions jsonb: runtime tuningCurrent option keys parsed by implementation:
enable_cachecache_ttl_secondsparallel_processingmax_parallel_threadssimilarity_thresholdsample_data_limitjsonb)Typical shape:
{
"request_id": "uuid",
"instance_name": "model-instance",
"prompt": "show latest 10 orders",
"generated_sql": "SELECT ...",
"execution": {
"status": "SPI_OK_SELECT",
"row_count": 10,
"columns": ["id", "created_at"],
"rows": [{"id": "1", "created_at": "..."}],
"explain": ["Seq Scan on ..."]
},
"similar_queries": ["..."],
"vector_hits": [
{
"table_name": "orders",
"column_name": "note",
"row_id": 123,
"similarity": 0.91,
"metadata": {"source": "..."}
}
]
}
pg_llm_text2sql(...) returns only generated_sql for compatibility.
Errors are raised as PostgreSQL errors (ereport(ERROR)) for:
schema_info/options)pg_llm.redact_sensitive behavior.contrib/pg_llm/CMakeLists.txt).sql/pg_llm--1.1.sql and upgrade script sql/pg_llm--1.0--1.1.sql.