搜索快捷键 cmd + k | ctrl + k
flockmtl

LLM & RAG 扩展,用于结合分析和语义分析

安装和加载

INSTALL flockmtl FROM community;
LOAD flockmtl;

示例

-- 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://dais-polymtl.github.io/flockmtl/docs/what-is-flockmtl/). 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', 'openai');

-- 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.'});

关于 flockmtl

FlockMTL 是一个实验性的 DuckDB 扩展,它支持直接在 SQL 中无缝集成大型语言模型 (LLM) 和检索增强生成 (RAG)。

它引入了 MODELPROMPT 对象作为一流的 SQL 实体,从而可以轻松定义、管理和重用 LLM 交互。诸如 llm_completellm_filterllm_rerank 等核心函数允许您执行生成、语义过滤和排名——所有这些都来自 SQL。

FlockMTL 专为基于 LLM 的分析的快速原型设计而设计,并通过批处理和缓存功能进行优化,以获得更好的性能。

📄 有关更多详细信息和示例,请参阅 FlockMTL 文档

注意: FlockMTL 是 Data & AI Systems (DAIS) Laboratory @ Polytechnique Montréal 正在进行的研究的一部分。它正在积极开发中,某些功能可能会演变。欢迎提出反馈和贡献!

新增函数

function_name (函数名) 函数类型 description (描述) comment (注释) examples (示例)
llm_complete 标量 使用指定的语言模型生成文本补全 需要定义好的 prompt 和 model [SELECT llm_complete({'model_name': 'default'}, {'prompt_name': 'hello-world'});]
llm_filter 标量 根据语言模型的评估结果过滤数据 返回布尔值 [SELECT * FROM data WHERE llm_filter({'model_name': 'default'}, {'prompt_name': 'is_relevant'}, {'text': content});]
llm_embedding 标量 为输入文本生成嵌入 对于语义相似性任务很有用 [SELECT llm_embedding({'model_name': 'default'}, {'text': 'Sample text'});]
llm_reduce aggregate (聚合) 使用语言模型将多个输入聚合为单个输出 汇总或组合多个行 [SELECT llm_reduce({'model_name': 'default'}, {'prompt_name': 'summarize'}, {'text': content}) FROM documents;]
llm_rerank aggregate (聚合) 根据语言模型的相关性得分重新排序查询结果 提高搜索应用程序中的结果相关性 [SELECT llm_rerank({'model_name': 'default'}, {'prompt_name': 'rank_relevance'}, {'text': content}) FROM search_results;]
llm_first aggregate (聚合) 选择重新排序后排名最高的结果 检索最相关的项目 [SELECT llm_first({'model_name': 'default'}, {'prompt_name': 'rank_relevance'}, {'text': content}) FROM search_results;]
llm_last aggregate (聚合) 选择重新排序后排名最低的结果 检索最不相关的项目 [SELECT llm_last({'model_name': 'default'}, {'prompt_name': 'rank_relevance'}, {'text': content}) FROM search_results;]
fusion_rrf 标量 实现倒数排名融合 (RRF) 以组合排名 组合来自多个评分系统的排名 [SELECT fusion_rrf(score1, score2) FROM combined_scores;]
fusion_combsum 标量 对来自不同评分系统的标准化分数求和 用于聚合来自各种模型的分数 [SELECT fusion_combsum(score1, score2) FROM combined_scores;]
fusion_combmnz 标量 将标准化分数相加并乘以命中计数 增强频繁出现项目的影响 [SELECT fusion_combmnz(score1, score2) FROM combined_scores;]
fusion_combmed 标量 计算标准化分数的中位数 减少组合分数中离群值的影响 [SELECT fusion_combmed(score1, score2) FROM combined_scores;]
fusion_combanz 标量 计算标准化分数的平均值 提供分数的均衡聚合 [SELECT fusion_combanz(score1, score2) FROM combined_scores;]