<!-- markdownlint-disable MD033 MD041 -->
<div align="center">
<img src="https://github.com/user-attachments/assets/25f92357-a670-4564-881d-e336f668c252" alt="Moss — Real-time semantic search for AI agents. Sub-10 ms." width="1200" />
<br /><br />
License
PyPI
PyPI downloads
npm
npm downloads
Discord
Website · Docs · Discord · Blog
</div>
Moss는 대화형 AI 에이전트(Conversational AI agents)를 위해 구축된 10ms 미만의 의미 검색 런타임입니다. 하이브리드 검색(의미 검색 + 키워드 검색), 내장 임베딩, 메타데이터 필터링 기능과 브라우저에서 실행되는 WebAssembly 빌드가 단일 SDK에 통합되어 애플리케이션에 임베드될 수 있습니다.
핫 패스(hot path)에서 네트워크 왕복이 없습니다. 튜닝할 클러스터도 필요하지 않습니다. SDK를 Moss Cloud에 연결하고 인덱스를 로드한 후, 10ms 미만으로 쿼리할 수 있습니다. Python, TypeScript, Elixir, 그리고 C를 지원합니다.
Moss Python walkthrough
빠른 시작(Quickstart)
시작하기 전: project_id와 project_key를 얻으려면 moss.dev에 가입하세요. 무료 티어가 제공됩니다.
아래 스니펫은 Python 3.10 이상 또는 Node.js 20 이상이 필요합니다.
Python
from moss import MossClient, QueryOptions
client = MossClient("your_project_id", "your_project_key")
...
TypeScript
npm install @moss-js/moss
import { MossClient } from "@moss-js/moss";
const client = new MossClient("your_project_id", "your_project_key");
...
왜 Moss인가?
대부분의 검색 스택은 원격 벡터 데이터베이스에 의존합니다. 이 왕복 시간(round trip)만으로도 200–500ms가 소요되어 실시간 대화를 끊기에는 충분한 시간이 됩니다.
Moss는 검색과 임베딩을 사용자의 프로세스 내부에서 실행합니다. 따라서 핫 패스(hot path)에 네트워크 이동이 없어 쿼리 지연 시간(query latency)이 한 자릿수에 머무릅니다. 이는 검색 과정 자체가 지연 시간 예산(latency budget)에서 사라질 만큼 빠르다는 의미입니다. 음성 봇, 코파일럿 또는 사람과 대화하는 모든 에이전트를 구축한다면, 이것은 살아있는 것처럼 느껴지는 도구와 느리게 느껴지는 도구 사이의 차이를 만듭니다.
벤치마크(Benchmarks)
10만 개의 문서, 측정된 쿼리 750개, top_k=5를 사용한 엔드투엔드 쿼리 지연 시간(임베딩 + 검색). Macbook pro (M4 Pro, 24GB)로 테스트했습니다.
| 시스템 | P50 | P95 | P99 | 평균 |
|---|
| Moss | 3.1 ms | 4.3 ms | 5.4 ms | 3.3 ms |
| ... | | | | |
Moss는 측정에 임베딩을 포함합니다. 경쟁사들은 외부 임베딩 서비스(modal)를 사용합니다. Pinecone과 Qdrant는 클라우드 검색을 사용합니다.
이 벤치마크를 재현하려면 →
Moss는 데이터베이스가 아닙니다! 이것은 **검색 런타임(search runtime)**입니다. 클러스터를 관리하거나, HNSW 파라미터를 조정하거나, 샤딩(sharding)에 대해 걱정할 필요가 없습니다. 문서를 인덱싱하고, 런타임에 로드한 다음, 쿼리만 하면 됩니다. 그게 전부입니다.
기능
- 10ms 미만의 의미 검색(semantic search) - benchmarks에서 p99 기준 한 자릿수 밀리초 달성
- 하이브리드 검색(Hybrid search) - 단일 쿼리 내에서 의미 기반 및 키워드 결합 검색 지원
- 내장 임베딩 모델(Built-in embedding models) - OpenAI API 키 불필요 (또는 자체 제공 가능)
- 메타데이터 필터링(Metadata filtering) -
$eq, $and, $in, $near 연산자 사용
- 브라우저에서도 실행 가능 - 서버 없이 클라이언트 측 의미 검색을 위한 별도의 WebAssembly SDK (
@moss-dev/moss-web) 제공
- 데이터베이스 커넥터(Database connectors) - SQLite, MongoDB, MySQL, Supabase에서 직접 데이터 수집 가능 (
packages/moss-data-connector/)
- CLI - 터미널에서 인덱스 관리 및 쿼리 실행 가능 (
moss-cli)
- SDKs - Python (3.10 이상), TypeScript / Node.js (20+), Elixir, C 지원 (
libmoss)
- 프레임워크 통합(Framework integrations) - LangChain, DSPy, LlamaIndex, Pipecat, LiveKit, Vapi, ElevenLabs, Strands Agents
예시 (Examples)
이 저장소에는 프로젝트에 바로 복사하여 사용할 수 있는 작동하는 예제들이 포함되어 있습니다:
examples/
├── python/ # Python SDK 샘플
│ ├── load_and_query_sample.py
...
Python 예제 실행하기
cd examples/python
pip install -r requirements.txt
cp ../../.env.example .env
...
TypeScript 예제 실행하기
cd examples/javascript
npm install
cp ../../.env.example .env
...
Next.js 앱 실행하기
cd apps/next-js
npm install
cp ../../.env.example .env
...
Pipecat 음성 에이전트 실행하기
10ms 미만의 검색 기능을 Pipecat의 실시간 음성 파이프라인에 연결했습니다. 이는 대화 속도를 따라잡는 고객 지원 에이전트입니다.
cd apps/pipecat-moss/pipecat-quickstart
완전히 로컬 환경의 음성 에이전트 실행하기 (Ollama + Moss + Pipecat)
개인 정보 보호를 최우선으로 하는 음성 AI 스택: LLM 추론을 위한 Ollama, 검색을 위한 Moss, 실시간 오디오 처리를 위한 Pipecat — LLM과 검색 기능 모두 사용자의 장치에서 실행됩니다.
cd apps/pipecat-moss/ollama-local
docker compose up
전체 API 레퍼런스: docs.moss.dev.
통합 (Integrations)
아키텍처 (Architecture)
Moss runtime architecture
세 가지 부분으로 구성됩니다:
- Moss Cloud - 수집(ingestion), 문서 임베딩, 저장 및 배포를 처리합니다. SDK에서 프로젝트 ID와 키를 사용하여 여기에 연결하세요.
- Index - 사용자의 문서와 해당 벡터들이며, Moss Cloud에 존재하는 단일 아티팩트로 패키징됩니다.
- Runtime - 애플리케이션 내부에 임베드(embedded)됩니다. HTTPS를 통해 인덱스를 가져오고, 메모리에 저장하며, 로컬에서 쿼리를 처리합니다.
인덱스가 로드되면, 쿼리는 프로세스 외부로 나가지 않습니다. 여기서 10ms 미만의 낮은 지연 시간이 나오는 것입니다. 문서 변경 사항은 Moss Cloud를 거쳐 흐르고 런타임은 동기화 상태를 유지합니다.
런타임을 실행하는 두 가지 방법
- 서버 측 (Server-side) -
moss (Python)와 @moss-js/moss (Node.js 20 이상)가 백엔드에 런타임을 임베드합니다. 에이전트가 서버에서 실행되는 경우 사용하세요.
- 브라우저 (Browser) -
@moss-dev/moss-web은 인덱스를 다운로드하고 쿼리를 전적으로 클라이언트 측에서 실행하는 WebAssembly 빌드입니다. 서버가 필요 없습니다. 정적 사이트, 브라우저 확장 프로그램 및 오프라인 우선 앱에 사용하세요. examples/javascript-web/을 참고하세요.
각 JavaScript, Python, Elixir SDK 릴리스의 소스 코드와 샘플은 sdks/에서 확인할 수 있습니다.
기여 (Contributing)
<div align="center">
<img src="https://github.com/user-attachments/assets/80b9dd1c-661c-4201-a1b4-9d191afa8e6b" alt="We welcome contributions!" width="1200" />
</div>
커뮤니티가 가장 큰 영향을 미칠 수 있는 곳은 바로 여기입니다:
- 새 SDK 바인딩 — Swift, Go, Elixir 등
- 프레임워크 통합 — CrewAI, Haystack, AutoGen
- 재순위 지정(Reranking) 지원 — 플러그인 방식의 크로스 인코더 재순위 지정기 사용
- 문서 파싱 커넥터 — PDF, DOCX, HTML, Markdown 수집
- 예제 및 튜토리얼 — Moss를 사용하여 무언가를 구축했다면 저희가 소개하고 싶습니다.
설정 지침은 Contributing Guide에서, 향후 계획은 Roadmap에서 확인하세요.
good first issue로 레이블이 지정된 이슈를 확인하여 시작해 보세요.
기여자(Contributors)
Contributors
라이선스(License)
Moss가 배포하는 SDK는 sdks/에 동기화되며, PolyForm Shield License 1.0.0 하에 라이선스가 부여됩니다. 현재 Swift는 LICENSE.txt에 명시되어 있으며, JavaScript, Python 및 Elixir는 다음 버전에서 각 폴더의 BSD LICENSE를 PolyForm Shield LICENSE.txt로 대체하면서 적용될 예정입니다. sdks/go의 Go SDK와 이미 BSD 2-Clause License 하에 기여된 코드는 해당 라이선스를 유지합니다. 이 저장소의 나머지 모든 내용은 BSD 2-Clause License 하에 있습니다.
<div align="center">
<sub style="font-size: smaller;">Moss 팀에서 제작 · <a href="https://www.ycombinator.com">Y Combinator</a> 지원</sub>
</div>