anything-llm

AI Chat UIsDevOpsJavaScript

★ 65,962주당 +284조회 4

무엇인가

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

유사 도구