Go 언어 기반의 분산형 멀티모달 검색, 메모리 및 그래프 엔진 Antfly
요약
Antfly는 Go 언어와 etcd의 raft 라이브러리를 기반으로 구축된 분산형 멀티모달 검색 및 그래프 엔진입니다. 텍스트, 이미지, 오디오, 비디오 데이터를 대상으로 전문 검색, 벡터 유사도, 그래프 탐색을 결합한 하이브리드 검색을 제공하며, 내장된 RAG 에이전트를 통해 검색 증강 생성 기능을 지원합니다.
핵심 포인트
- BM25, 밀집/희소 벡터, 그래프 탐색을 결합한 하이브리드 검색 지원
- 데이터 입력 시 임베딩, 청킹, 그래프 엣지가 자동으로 생성되는 워크플로우
- 멀티턴 채팅 및 도구 호출 기능을 갖춘 내장 RAG 에이전트 탑재
- 분산 환경에서의 샤드 수준 ACID 트랜잭션 및 S3 스토리지 지원
- SIMD/SME 가속을 통한 x86 및 ARM 하드웨어 성능 최적화
Antfly
Antfly는 etcd의 raft 라이브러리를 기반으로 구축된 분산 검색 엔진입니다. 텍스트, 이미지, 오디오, 비디오와 같은 멀티모달 (Multimodal) 데이터에 대해 전문 검색 (Full-text search, BM25), 벡터 유사도 (Vector similarity), 그리고 그래프 탐색 (Graph traversal)을 결합합니다. 데이터를 작성함에 따라 임베딩 (Embeddings), 청킹 (Chunking), 그래프 엣지 (Graph edges)가 자동으로 생성됩니다. 내장된 RAG 에이전트가 검색 증강 생성 (Retrieval-Augmented Generation, RAG)을 통해 이 모든 기능을 하나로 연결합니다.
빠른 시작 (Quick Start)
# 내장된 ML 추론 기능과 함께 단일 노드 클러스터 시작
go run ./cmd/antfly swarm
...
이를 통해 http://localhost:8080에서 Antfarm 대시보드를 사용할 수 있으며, 여기에서 검색, RAG, 지식 그래프 (Knowledge graphs), 임베딩 (Embeddings), 재순위화 (Reranking) 등을 테스트할 수 있는 플레이그라운드를 제공합니다.
전체 과정을 확인하려면 빠른 시작 가이드를 참조하세요.
주요 기능
-
하이브리드 검색 (Hybrid search) — 하나의 쿼리로 전문 검색 (BM25), 밀집 벡터 (Dense vectors), 희소 벡터 (Sparse vectors, SPLADE)를 모두 지원
-
RAG 에이전트 (RAG agents) — 스트리밍, 멀티턴 채팅 (Multi-turn chat), 도구 호출 (Tool calling, 웹 검색, 그래프 탐색), 신뢰도 점수 산출 기능을 갖춘 내장 검색 증강 생성 (Retrieval-augmented generation)
-
그래프 인덱스 (Graph indexes) — 데이터에 대한 자동 관계 추출 (Relationship extraction) 및 그래프 탐색 쿼리 지원
-
멀티모달 (Multimodal) — CLIP, CLAP, 시각-언어 모델 (Vision-language models)을 사용하여 이미지, 오디오, 비디오 인덱싱 및 검색
-
재순위화 (Reranking) — 노이즈를 줄이기 위한 점수 기반 가지치기 (Pruning) 기능이 포함된 교차 인코더 (Cross-encoder) 재순위화
-
집계 (Aggregations) — 분석을 위한 통계 (합계/최소/최대/평균) 및 용어 패싯 (Terms facets)
-
트랜잭션 (Transactions) — 분산 조정 (Distributed coordination)을 통한 샤드 (Shard) 수준의 ACID 트랜잭션
-
문서 TTL (Document TTL) — 직접 정리할 필요가 없는 자동 문서 만료 (Document expiration)
-
S3 스토리지 (S3 storage) — 비용을 크게 절감하고 샤드 분할 (Shard splits) 속도를 훨씬 높일 수 있는 S3/MinIO/R2 데이터 저장
-
SIMD / SME 가속 (acceleration) — x86 및 ARM에서 go-highway를 통해 하드웨어 인트린직 (hardware intrinsics)을 사용하여 벡터 연산 (vector operations) 수행
-
분산형 (Distributed) — Raft 합의 (consensus), 자동 샤딩 (sharding) 및 복제 (replication), 수평적 확장 (horizontal scaling)
-
강화 파이프라인 (Enrichment pipelines) — 임베딩 (embeddings), 요약 (summaries), 그래프 엣지 (graph edges) 및 사용자 정의 계산 필드 (custom computed fields)를 위한 인덱스별 설정 가능한 파이프라인 (configurable pipelines)
-
자체 모델 사용 (Bring your own models) — Ollama, OpenAI, Bedrock, Google을 사용하거나 Termite를 통해 모델을 로컬에서 실행
-
인증 (Auth) — API 키, 기본 인증 (basic auth), 베어러 토큰 (bearer tokens)을 포함한 내장 사용자 관리 (user management)
-
백업 및 복구 (Backup & restore) — 로컬 디스크 또는 S3로 수행
-
Kubernetes 오퍼레이터 (Kubernetes operator) — 오퍼레이터 (operator)를 사용하여 클러스터 배포 및 관리
-
MCP 서버 (MCP server) — LLM이 Antfly를 도구로 사용할 수 있도록 하는 모델 컨텍스트 프로토콜 (Model Context Protocol)
-
A2A 프로토콜 (A2A protocol) — Google의 A2A 표준을 위한 에이전트 간 (Agent-to-Agent) 지원
-
Antfarm — 검색, RAG, 지식 그래프 (knowledge graphs), 임베딩 (embeddings), 재순위화 (reranking), 청킹 (chunking), 개체명 인식 (NER), OCR 및 전사 (transcription)를 위한 플레이그라운드가 포함된 웹 대시보드 (web dashboard)
문서 (Documentation)
SDK 및 클라이언트 라이브러리 (SDKs & Client Libraries)
| 언어 (Language) | 패키지 (Package) | 소스 (Source) |
|---|---|---|
| Go | github.com/antflydb/antfly/pkg/client | pkg/client |
| ... |
pgaf — PostgreSQL 확장 (PostgreSQL Extension)
pgaf는 Antfly 검색 기능을 Postgres로 가져옵니다. 인덱스를 생성하고 @@@ 연산자를 사용하기만 하면 됩니다:
CREATE INDEX idx_content ON docs USING antfly (content)
WITH (url = 'http://localhost:8080/api/v1/', collection = 'my_docs');
...
React 컴포넌트 (React Components)
@antfly/components는 검색 UI를 위한 즉시 사용 가능한 React 컴포넌트인 SearchBox, Autosuggest, Facet, Results, RAGBox, AnswerBox와 useAnswerStream 및 useCitations와 같은 스트리밍 훅 (streaming hooks)을 제공합니다.
Termite — ML 추론 (ML Inference)
Termite는 임베딩 (embeddings), 청킹 (chunking), 재순위화 (reranking), 분류 (classification), 개체명 인식 (NER), 광학 문자 인식 (OCR), 전사 (transcription), 생성 (generation) 등 ML 측면을 처리합니다. 이는 인트리 모듈 (pkg/termite)로 제공되며 스웜 모드 (swarm mode)에서 자동으로 실행되므로 별도로 설정할 필요가 없습니다.
라이브러리 및 도구 (Libraries & Tools)
| 패키지 (Package) | 역할 | 소스 |
|---|---|---|
| docsaf | 파일 시스템, 웹 크롤링, git 저장소 및 S3로부터 콘텐츠 수집 | pkg/docsaf |
| ... |
아키텍처 (Architecture)
Antfly는 별도의 합의 그룹 (consensus groups)을 가진 멀티 라프트 (multi-raft) 설계를 사용합니다:
- 메타데이터 라프트 (Metadata raft) — 테이블 스키마 (table schemas), 샤드 할당 (shard assignments), 클러스터 토폴로지 (cluster topology)
- 스토리지 라프트 (Storage rafts) — 샤드당 하나씩 존재하며 데이터, 인덱스 (indexes) 및 쿼리 (queries)를 처리
Jepsen에서 영감을 받은 엔드 투 엔드 카오스 테스트 (chaos tests)는 노드 충돌 (node crashes), 리더 장애 (leader failures), 부하 상황에서의 샤드 분할 (shard splits), 클러스터 확장 (cluster scaling)을 다룹니다. 이 테스트는 실제 멀티 노드 클러스터를 실행하고 결함 (faults)을 주입하여, 장애 발생 시 Raft 합의 (Raft consensus), 트랜잭션 (transactions) 및 복제 (replication)가 올바르게 작동하는지 검증합니다.
핵심적인 분산 프로토콜 (distributed protocols)은 정식으로 명세화되었으며 TLA+를 통해 모델 체크 (model-checked)되었습니다:
- AntflyTransaction — 분산 트랜잭션 프로토콜 (distributed transaction protocol)
- occ-2pc — 2단계 커밋 (two-phase commit)을 이용한 낙관적 동시성 제어 (optimistic concurrency control)
- AntflySnapshotTransfer — Raft 스냅샷 전송 (Raft snapshot transfer)
- AntflyShardSplit — 샤드 분할 조정 (shard split coordination)
커뮤니티 (Community)
지원, 토론 및 업데이트를 위해 Discord에 참여하세요.
기여에 관심이 있으신가요? CONTRIBUTING.md를 참조하세요.
라이선스 (License)
코어 서버는 Elastic License 2.0 (ELv2)를 따릅니다. 이는 여러분이 서버를 사용, 수정, 셀프 호스팅(self-host)할 수 있고 이를 기반으로 제품을 구축할 수 있음을 의미합니다. 다만, Antfly 자체를 매니지드 서비스 (managed service)로 제공하는 것만 금지됩니다. 그 외의 모든 요소인 SDKs, React components, Termite, pgaf, docsaf, evalaf는 Apache 2.0 라이선스입니다. 저희는 가능한 한 많은 부분을 허용적인 라이선스 (permissive license) 하에 유지하려고 노력했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Claude Code Search의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기