lotus
用自然语言操作 Pandas 数据,LLM 赋能的非结构化数据处理框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用自然语言操作 Pandas 数据,LLM 赋能的非结构化数据处理框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:LOTUS 仓库封面
凌晨两点,数据工程师小张面对一份 10 万行的客户投诉文本,需要从中筛选出「技术故障类」投诉、提取关键词、然后按问题严重程度分类。传统做法是写正则表达式、写规则引擎、调 NLP 模型——折腾一整天未必能上线。
而如果用 LOTUS,只需要三行代码:
import lotus
lm = LM(model="gpt-4o-mini")
lotus.settings.configure(lm=lm)
# 一句话搞定语义筛选
critical = df.sem_filter("技术故障导致业务中断的投诉")
这就是 LOTUS 的核心理念:让任何懂 Pandas 的人,都能用自然语言操作数据,而不需要懂机器学习。
2024 年 7 月,斯坦福大学和 UC Berkeley 的研究团队联合发表了 LOTUS 论文(arXiv:2407.11418),提出了一个根本性问题:
传统数据库的关系操作符(filter、join、agg)是结构化数据处理的基石——它们有精确的语义,有优化空间,有几十年工程积累。但当我们把数据换成非结构化文本、图像、日志时,这些操作符瞬间失灵。我们不得不引入 RAG、NLP 模型、规则引擎,把简单的数据处理流程搞得支离破碎。
LOTUS 的答案是:发明新的操作符——语义操作符(Semantic Operators)。这些操作符沿用 Pandas 的 API 哲学(声明式、链式调用),但底层用 LLM 做语义理解。具体来说:
df.sem_filter("关于性能优化的 issue") 等价于写几十条正则 + 分类器。每一类操作符,背后都对应一个 AI 研究问题:Prompt 设计、精度保证、批处理优化、错误恢复。LOTUS 把这些都封装好了,让数据工程师只管「写需求」,不用「写模型」。
LOTUS 代码库约 2 万行 Python(不含 assets/docs),模块划分清晰:
值得注意的是,lotus/ast/optimizer/ 模块包含完整的代价模型(cost model),会根据数据规模自动选择策略:少量数据走 LLM 全量处理,大量数据走向量近似最近邻(Faiss)+ LLM 抽样验证。这解决了 LLM 数据处理的成本痛点。
2025 年底,LOTUS 团队推出了 LOTUSPlan——一个全新的懒执行(Lazy Execution)引擎。传统 LLM 数据处理是「即时求值」:每次调用 sem_filter 都发一次 API,成本高、延迟大。LOTUSPlan 把语义操作符串成 DAG,按数据依赖关系合并请求、去除冗余调用。
官方 benchmark 数据显示:相比即时执行,LOTUSPlan 带来 2.4 倍成本降低 和 4.6 倍精度提升(在 LLM-Judge 评估、Agent 轨迹分析、RAG 场景下)。这个提升来自两个方面:一是请求合并减少了 token 消耗;二是批量上下文让 LLM 更好地保持一致性。
门槛提示:LOTUS 本身是纯 Python 库,安装简单(uv add lotus-ai),但需要 OpenAI API 或兼容 API key(本地模型也可,但需要 GPU)。如果数据规模大(>10 万行),建议开启缓存 + LOTUSPlan 优化,否则 API 费用会快速攀升。
LOTUS 不是一个完美的银弹,有几个现实问题需要正视:
LOTUS 代表了一个正在快速发展的方向:AI 原生数据处理。传统 ETL 工具(Airbyte、Fivetran)解决的是「数据搬运」问题,而 LOTUS 解决的是「数据理解」问题——让机器理解非结构化数据的语义,并在此基础上做运算。
同类项目还有:Marqo(向量数据库+语义搜索)、LanceDB(面向 AI 的向量数据库)、Dask-SQL(SQL on Dask)。相比之下,LOTUS 的独特价值在于** Pandas-first 的 API 设计**——不需要学新语言,直接在 DataFrame 上用自然语言操作。
项目目前 1604 stars、44 个 open issues、140 forks,由斯坦福 + Berkeley 团队维护,活跃度高。如果你在构建需要处理大量非结构化文本的 pipeline,LOTUS 值得一试。
本报告基于 LOTUS v1.2.1 (2026-06-12) 源码分析生成。数据来源:GitHub、arXiv:2407.11418、官方文档。