anything-llm
무엇인가
AnythingLLM은 자체 호스팅으로 운영하는 LLM 애플리케이션이다. 문서 검색 증강 생성 파이프라인, 에이전트 실행, 사용자별 권한 관리를 하나의 인스턴스에 묶는다. 클라우드 챗 서비스가 대신 처리하던 모델 호출·문서 저장·사용자 관리를 자기 서버나 데스크톱으로 옮기는 자리에 놓인다.
어떻게 동작하나
모노레포는 여섯 부분으로 나뉜다. `frontend`는 ViteJS + React로 만든 관리·대화 UI이고, `server`는 NodeJS Express 서버로 벡터DB 관리와 LLM 호출을 담당한다. `collector`는 NodeJS Express 서버로 업로드된 PDF·TXT·DOCX 등을 파싱해 청크로 나눈다. `embed`는 웹 임베드 위젯, `browser-extension`은 크롬 확장, `docker`는 배포 빌드를 맡는다. 문서는 임베더로 벡터화되어 벡터DB에 저장되고, 질의 시 검색된 청크가 컨텍스트로 LLM에 전달되며 UI에 출처 인용이 표시된다. 기본 벡터DB는 LanceDB, 기본 임베더는 AnythingLLM Native Embedder다.
무엇과 다른가
모델·임베더·벡터DB·음성 모델을 각각 독립적으로 교체한다. LLM은 llama.cpp 호환 로컬 모델, Ollama, LM Studio, LocalAI부터 OpenAI, Azure OpenAI, AWS Bedrock, Anthropic, Gemini, Mistral, Groq, Cohere까지 같은 인터페이스로 연결된다. 벡터DB도 PGVector, Pinecone, Chroma, Weaviate, Qdrant, Milvus, Zilliz, Astra DB 중에서 고른다. 동적 모델 라우팅은 정의한 규칙에 따라 대화별로 제공자와 모델을 자동 선택하고, 스킬 선택은 도구를 다수 등록한 상태에서 질의당 토큰 사용을 줄인다. MCP 호환으로 외부 도구 서버를 붙일 수 있다.
어떻게 쓰나
데스크톱 앱은 Mac·Windows·Linux용으로 배포되고, Docker 이미지와 자체 호스팅 템플릿으로도 배포한다. 소스에서 개발할 때는 저장소 루트에서 `yarn setup`으로 각 섹션의 `.env` 파일을 만들고 값을 채운 뒤 `yarn dev:server`, `yarn dev:frontend`, `yarn dev:collector`를 차례로 실행한다. `server/.env.development`가 채워지지 않으면 정상 동작하지 않는다. 커스텀 연동을 위한 전체 개발자 API가 제공된다.
전제와 한계
멀티유저 인스턴스와 사용자별 권한 설정, 임베드 가능한 채팅 위젯은 Docker 버전에서만 동작한다. 오디오 전사는 내장 모델 또는 OpenAI를 쓰고, 음성 인식(STT)은 브라우저 내장만 지원한다. 익명 사용 정보를 수집하는 텔레메트리가 기본 포함되어 있다.
관련 논문 5
유사 도구
- ragflow비정형 문서를 파싱·청킹해 검색 증강 생성 파이프라인과 에이전트 워크플로를 한 엔진에서 돌리는 오픈소스 RAG 서버다.
- difyLLM 애플리케이션을 워크플로·RAG·에이전트·모델 관리·관측까지 한 워크스페이스에서 만들고, 클라우드나 셀프호스팅으로 배포하는 오픈소스 플랫폼이다.
- WeKnora원시 문서를 수집해 검색 가능한 RAG 지식베이스와 자율 추론 에이전트, 자체 유지 위키로 바꾸는 Go 기반 자체 호스팅 LLM 지식 플랫폼이다.
- Langchain-ChatchatLangChain 위에 지식베이스 검색과 Agent를 얹어 오픈소스 LLM만으로 오프라인 질의응답을 구성하는 Python 애플리케이션이다.
- langroid에이전트에 LLM·벡터스토어·도구를 붙이고 태스크를 맡겨 메시지로 협업시키는 Python 멀티에이전트 프레임워크다. LangChain에 의존하지 않는다.
- paperclipNode.js 서버와 React UI로 AI 에이전트 팀을 조직도·예산·거버넌스 단위로 묶어 업무를 배분하고 실행 비용을 추적하는 오케스트레이션 제어 평면이다.