语义查询引擎LOTUS

文摘   2024-10-23 08:31   湖北  

项目简介

使用 LOTUS 轻松构建知识密集型LLM应用程序,对您的数据进行推理!

LOTUS (LLMs Over Tables of Unstructured and Structured Data) 提供了声明性编程模型和优化的查询引擎,用于在结构化和非结构化数据上提供强大的基于推理的查询管道!我们提供了一个简单直观的类似 Pandas 的 API,它实现了语义运算符


关键概念:语义运算符

LOTUS 的编程模型由语义运算符提供支持。语义运算符通过一组基于模块化语言的运算符无缝扩展关系模型,使您能够编写具有高级逻辑的基于 AI 的管道,而将其余工作留给查询引擎!程序员可以轻松地组合语义运算符和传统的关系数据操作,以构建最先进的人工智能系统,对大量知识库进行推理。

下面是 LOTUS 提供的一些语义运算符。要了解有关语义运算符的更多信息,请查看完整文档、运行colab 教程或阅读完整研究论文。您还可以参考这些示例来在 LOTUS 中使用语义运算符。

OperatorDescription
sem_mapMap each row of the dataframe using a natural language projection
sem_filterKeep rows that match the natural language predicate
sem_aggPerforms a natural language aggregation across all rows of a column (e.g. for summarization)
sem_topkOrder the dataframe by some natural langauge sorting criteria
sem_joinJoin two dataframes based on a natural language predicate
sem_indexCreate a semantic similarity index over a text column
sem_searchPerform top-k search the over a text column

安装

conda create -n lotus python=3.9 -yconda activate lotuspip install lotus-ai

快速开始

如果您已经熟悉 Pandas,那么上手将会轻而易举!下面我们提供一个使用语义连接运算符的简单示例程序。与许多语义运算符一样,连接由langex (自然语言表达式)指定,程序员用它来指定操作。每个 langex 都由一个或多个表列参数化,用括号表示。连接的 langex 用作谓词,并由右连接键和左连接键参数化。

import pandas as pdimport lotusfrom lotus.models import OpenAIModel
# configure the LM, and remember to export your API keylm = OpenAIModel()lotus.settings.configure(lm=lm)
# create dataframes with course names and skillscourses_data = { "Course Name": [ "History of the Atlantic World", "Riemannian Geometry", "Operating Systems", "Food Science", "Compilers", "Intro to computer science", ]}skills_data = {"Skill": ["Math", "Computer Science"]}courses_df = pd.DataFrame(courses_data)skills_df = pd.DataFrame(skills_data)
# lotus sem join res = courses_df.sem_join(skills_df, "Taking {Course Name} will help me learn {Skill}")print(res)


项目链接

https://github.com/TAG-Research/lotus

扫码加入技术交流群,备注开发语言-城市-昵称

合作请注明


 

关注「GitHubStore」公众号


GitHubStore
分享有意思的开源项目
 最新文章