Search Shortcut cmd + k | ctrl + k
flockmtl

LLM & RAG extension to combine analytics and semantic analysis

Installing and Loading

INSTALL flockmtl FROM community;
LOAD flockmtl;

Example

-- After loading, any function call will throw an error if the provider's secret doesn't exist

-- Create your provider secret by following the [documentation](https://dsg-polymtl.github.io/flockmtl/docs/supported-providers). For example, you can create a default OpenAI API key as follows:
D CREATE SECRET (TYPE OPENAI, API_KEY 'your-api-key');

-- Call an OpenAI model with a predefined prompt ('Tell me hello world') and default model ('gpt-4o-mini')
D SELECT llm_complete({'model_name': 'default'}, {'prompt_name': 'hello-world'});
┌──────────────────────────────────────────┐
 llm_complete(hello_world, default_model) 
                 varchar                  
├──────────────────────────────────────────┤
                Hello world               
└──────────────────────────────────────────┘

-- Check the prompts and supported models
D GET PROMPTS;
D GET MODELS;

-- Create a new prompt for summarizing text
D CREATE PROMPT('summarize', 'summarize the text into 1 word: {{text}}');

-- Create a variable name for the model to do the summarizing
D CREATE MODEL('summarizer-model', 'gpt-4o', {'context_window': 128000, 'max_output_tokens': 16400);

-- Summarize text and pass it as parameter 
D SELECT llm_complete({'model_name': 'summarizer-model'}, {'prompt_name': 'summarize'}, {'text': 'We support more functions and approaches to combine relational analytics and semantic analysis. Check our repo for documentation and examples.'});

About flockmtl

This extension is experimental and potentially unstable. Do not use it in production.

Added Functions

function_name function_type description comment example
fusion_relative scalar      
llm_complete scalar      
llm_complete_json scalar      
llm_embedding scalar      
llm_filter scalar      
llm_first aggregate      
llm_last aggregate      
llm_reduce aggregate      
llm_rerank aggregate      

Overloaded Functions

function_name function_type description comment example
array_append macro      
array_intersect macro      
array_pop_back macro      
array_pop_front macro      
array_prepend macro      
array_push_back macro      
array_push_front macro      
array_reverse macro      
array_to_string macro      
array_to_string_comma_default macro      
col_description macro      
count_if macro      
current_catalog macro      
current_database macro      
current_query macro      
current_role macro      
current_schema macro      
current_schemas macro      
current_user macro      
date_add macro      
fdiv macro      
fmod macro      
format_pg_type macro      
format_type macro      
generate_subscripts macro      
geomean macro      
geometric_mean macro      
get_block_size macro      
has_any_column_privilege macro      
has_column_privilege macro      
has_database_privilege macro      
has_foreign_data_wrapper_privilege macro      
has_function_privilege macro      
has_language_privilege macro      
has_schema_privilege macro      
has_sequence_privilege macro      
has_server_privilege macro      
has_table_privilege macro      
has_tablespace_privilege macro      
histogram table_macro      
histogram_values table_macro      
inet_client_addr macro      
inet_client_port macro      
inet_server_addr macro      
inet_server_port macro      
list_any_value macro      
list_append macro      
list_approx_count_distinct macro      
list_avg macro      
list_bit_and macro      
list_bit_or macro      
list_bit_xor macro      
list_bool_and macro      
list_bool_or macro      
list_count macro      
list_entropy macro      
list_first macro      
list_histogram macro      
list_intersect macro      
list_kurtosis macro      
list_kurtosis_pop macro      
list_last macro      
list_mad macro      
list_max macro      
list_median macro      
list_min macro      
list_mode macro      
list_prepend macro      
list_product macro      
list_reverse macro      
list_sem macro      
list_skewness macro      
list_stddev_pop macro      
list_stddev_samp macro      
list_string_agg macro      
list_sum macro      
list_var_pop macro      
list_var_samp macro      
map_contains_entry macro      
map_contains_value macro      
map_to_pg_oid macro      
md5_number_lower macro      
md5_number_upper macro      
nullif macro      
obj_description macro      
pg_collation_is_visible macro      
pg_conf_load_time macro      
pg_conversion_is_visible macro      
pg_function_is_visible macro      
pg_get_constraintdef macro      
pg_get_expr macro      
pg_get_viewdef macro      
pg_has_role macro      
pg_is_other_temp_schema macro      
pg_my_temp_schema macro      
pg_opclass_is_visible macro      
pg_operator_is_visible macro      
pg_opfamily_is_visible macro      
pg_postmaster_start_time macro      
pg_size_pretty macro      
pg_table_is_visible macro      
pg_ts_config_is_visible macro      
pg_ts_dict_is_visible macro      
pg_ts_parser_is_visible macro      
pg_ts_template_is_visible macro      
pg_type_is_visible macro      
pg_typeof macro      
regexp_split_to_table macro      
round_even macro      
roundbankers macro      
session_user macro      
shobj_description macro      
split_part macro      
user macro