lotus
무엇인가
LOTUS는 비정형·정형 데이터 테이블 위에서 LLM 기반 시맨틱 연산자를 실행하는 Python 라이브러리다. 스탠퍼드대와 UC버클리가 개발했다. 이름은 LLMs Over Text, Unstructured and Structured Data의 약자다. 데이터셋 단위 일괄 처리(bulk processing)를 대상으로 하며, 사용자는 자연어 지시로 연산을 선언하고 실행 방식은 옵티마이저에 맡긴다.
어떻게 동작하나
Corpus 객체가 데이터를 샤드로 나눈다. 에이전트 연산자는 샤드마다 에이전트를 병렬로 띄우고, 각 에이전트는 샌드박스 Python REPL로 코드를 실행해 정확한 값을 계산한다. 샤드별 결과는 reduce 단계에서 하나의 답으로 합쳐진다. LLM 연산자(sem_map, sem_filter, sem_agg, sem_join, sem_extract)는 레코드당 모델 호출 수를 줄이는 방식으로 동작한다. 옵티마이저는 호출 배칭, 모델 캐스케이드와 프록시 적용, 파이프라인 지연 계획을 담당한다. 모델 접근은 LiteLLM 제공자를 거친다.
무엇과 다른가
레코드마다 LLM API를 호출하는 루프를 직접 작성하는 방식과 달리, 연산자를 선언하면 실행 계획을 엔진이 결정한다. 연산자를 에이전트 연산자와 LLM 연산자 두 부류로 나눠, 다단계 도구 호출이 필요한 모호한 작업과 레코드당 호출이 적은 잘 정의된 작업을 구분해 맡긴다. 대체 대상은 수작업 프롬프트 루프와 개별 배치 스크립트다.
어떻게 쓰나
설치는 pip install lotus-ai 또는 uv add lotus-ai로 한다. 최신 기능은 소스에서 직접 설치한다. API 키를 설정한 뒤 Corpus에 데이터를 넣고 연산자를 호출한다. 에이전트 경로는 corpus.agent(ops=["map", "filter", "reduce"], ...) 형태로 쓰고, LLM 경로는 sem_map 같은 개별 연산자를 호출한다. 문서는 lotus-data.github.io에 있다.
전제와 한계
Python 패키지이므로 Python 실행 환경이 필요하다. LLM 호출에는 LiteLLM이 지원하는 제공자와 해당 API 키가 전제된다. 에이전트 연산자는 샌드박스 Python REPL에서 코드를 실행하는 환경을 요구한다. 비용과 지연은 선택한 모델 제공자에 종속된다.
관련 논문 1
유사 도구
- quivrRAG 파이프라인을 YAML 워크플로로 정의해 LLM 앱에 붙이는 Python 라이브러리다. LLM·벡터스토어·파서를 교체할 수 있다.
- txtai벡터 인덱스·그래프·관계형 DB를 합친 임베딩 데이터베이스 위에서 시맨틱 검색과 LLM 워크플로를 돌리는 Python AI 프레임워크다.
- GPTCacheLLM 질의를 임베딩해 의미가 비슷한 이전 질의의 응답을 재사용하는 시맨틱 캐시 라이브러리다. LangChain·llama_index와 통합되고 Docker 서버로도 배포된다.
- LLM-API-Key-ProxyOpenAI·Anthropic 호환 엔드포인트를 하나 띄워 여러 LLM 제공자를 provider/model 형식으로 중계하는 자체 호스팅 FastAPI 프록시다.