Vecstore vs Imagga: 두 Image Search API를 테스트했습니다
Source: Dev.to
TL;DR
Imagga “visual search”는 이미지 분류와 태그 매칭을 기반으로 합니다.
Vecstore는 진정한 시각적 유사성을 위해 벡터 임베딩을 사용합니다.
- Vecstore는 검색 속도가 약 8배 빠릅니다 (≈300 ms vs 2.5 s).
- Vecstore는 별도의 데이터베이스가 필요 없으며, 텍스트‑투‑이미지 검색을 지원하고, 수동 학습 단계 없이 자동 인덱싱됩니다.
- Imagga는 구조화된 이미지 태깅, 색상 추출, 배경 제거에 강점이 있습니다.
가장 큰 교훈은 속도가 아니라 두 API가 이미지 검색에 근본적으로 다른 접근 방식을 사용한다는 점입니다.
핵심 차이점
| Imagga | Vecstore | |
|---|---|---|
| 접근 방식 | 이미지를 WordNet 태그로 분류한 뒤, 해당 태그를 공유하는 다른 이미지를 찾습니다. | 이미지를 시각적 의미를 포착하는 벡터 임베딩으로 변환한 뒤, 벡터 공간에서 가장 가까운 이웃을 찾습니다. |
| 결과 유형 | 태그 이름, 신뢰도 점수, 이미지 ID 및 거리만 반환합니다. | 벡터 ID, 유사도 점수 및 저장한 사용자 정의 메타데이터(예: URL, 이름, 가격)를 반환합니다. |
| 검색 모드 | 이미지‑대‑이미지만. | 이미지‑대‑이미지 및 텍스트‑대‑이미지(다중모달 임베딩 공간 덕분). |
| 학습 | 이미지를 삽입한 후 명시적인 “train index” 호출이 필요합니다. | 학습 단계가 없으며, 삽입 즉시 이미지를 검색할 수 있습니다. |
| 데이터베이스 | 이미지 ID를 URL/메타데이터와 연결하기 위해 별도의 DB(예: Supabase)가 필요합니다. | 메타데이터가 벡터 스토어 내부에 저장되어 두 번째 DB가 필요 없습니다. |
네트워크 트래픽은 어떻게 보이는가
Imagga 시각‑검색 데모
- Request 1 – Imagga API (카테고리와 이미지 ID 반환)
{
"categories": [
{
"name": "border_collie.n.01",
"confidence": 93.41
}
],
"images": [
{
"id": "img_1770651039261-q6ozvx531",
"distance": 0.387
}
]
}
이미지 URL도 없고, 다른 메타데이터도 없으며 – ID와 거리만 있습니다.
- Request 2 – Supabase (또는 자체 DB) – 해당 ID를 해결
GET /rest/v1/visual_search_images
?select=save_id,image_url,file_name
&save_id=in.(img_1770651039261-q6ozvx531,img_1770651039253-ggmgwfihy,…)
데모는 결과를 표시하기 위해 별도의 Postgres 데이터베이스가 필요합니다. 이것은 데모의 제한이 아니라 API 작동 방식입니다.
Vecstore 시각‑검색 데모
단일 요청으로 모든 것을 반환
{
"vector_id": "abc123",
"score": 0.94,
"metadata": {
"image_url": "https://…/border_collie.jpg",
"name": "Border Collie",
"category": "pets",
"price": 45.00
}
}
이미지 URL, 사용자 정의 메타데이터, 유사도 점수 – 두 번째 데이터베이스 호출이 필요 없습니다.
실용적인 설정 비교
Imagga: ──► Imagga API (IDs) ──► Your DB (resolve URLs/metadata)
Vecstore: ──► Vecstore API (full payload)
Benchmarks (real API calls)
| Operation | Imagga | Vecstore |
|---|---|---|
| 이미지 삽입 | 3.8 – 4.7 s | ~200 ms |
| 인덱스 학습 | ~0.9 s (수동 단계) | 필요 없음 |
| 검색 쿼리 | 2.0 – 2.5 s | ~300 ms |
| 검색 가능으로 삽입 | ~5‑6 s + 수동 재학습 | ~200 ms (즉시) |
Vecstore의 300 ms는 임베딩 생성 ~90 ms + 실제 벡터 검색 5‑8 ms로 구성되며, 나머지는 네트워크 오버헤드입니다.
Imagga의 2‑2.5 s는 분류 및 태그 매칭을 포함하며, URL을 가져오는 추가 DB 호출은 포함되지 않음.
태그 명명 규칙
Imagga는 WordNet 분류 체계를 사용합니다, 예:
border_collie.n.01
loggerhead.n.02
turbine.n.01
Persian_cat.n.01
- “
.n.01” 접미사는 명사, 첫 번째 의미를 의미합니다. - 계산 언어학에 유용하지만, 개발자는 보통 이를 인간이 읽을 수 있는 라벨로 변환하는 매핑 레이어가 필요합니다.
Vecstore는 카테고리 라벨을 반환하지 않으며 – 오직 유사도 점수와 제공한 메타데이터만 반환합니다. 라벨링은 전적으로 여러분이 제어합니다.
워크플로우 예시
Imagga – 삽입 → 학습 → 검색
# 1️⃣ Insert image
curl -X POST "https://api.imagga.com/v2/images-similarity/index/save-image" \
-u "api_key:api_secret" \
-F "image_url=https://example.com/dog.jpg" \
-F "index_name=my_index" \
-F "save_id=img_001"
# 2️⃣ Train the index (required before search works)
curl -X POST "https://api.imagga.com/v2/images-similarity/index/train" \
-u "api_key:api_secret" \
-F "index_name=my_index"
# 3️⃣ Search
curl -X GET "https://api.imagga.com/v2/images-similarity/index/search" \
-u "api_key:api_secret" \
-d "image_url=https://example.com/query.jpg" \
-d "index_name=my_index"
빈번한 업로드가 있는 앱(마켓플레이스, 소셜 플랫폼, 사진 라이브러리 등)에서는 매 업로드 후 재학습을 하거나 배치 재학습을 수행하고 새로운 이미지가 검색 가능해지기까지 지연을 허용해야 합니다.
Vecstore – 삽입 및 검색 (학습 없음)
# Insert (instantly searchable)
curl -X POST "https://api.vecstore.app/api/databases/{id}/documents" \
-H "X-API-Key: your_key" \
-H "Content-Type: application/json" \
-d '{"image_url": "https://example.com/dog.jpg"}'
# Search
curl -X POST "https://api.vecstore.app/api/databases/{id}/search" \
-H "X-API-Key: your_key" \
-H "Content-Type: application/json" \
-d '{"image_url": "https://example.com/query.jpg", "top_k": 10}'
학습 단계가 없으며 – 이미지를 삽입하는 즉시 검색할 수 있습니다.
검색 유연성
- Imagga: 이미지‑대‑이미지만 지원합니다. ID만 반환합니다 → 쿼리 시 메타데이터로 필터링할 수 없습니다(예: “price < 20”).
- Vecstore: 이미지‑대‑이미지와 텍스트‑대‑이미지 쿼리를 모두 지원하며, 벡터와 함께 저장된 모든 메타데이터 필드로 필터링하거나 정렬할 수 있습니다.
요약
- Imagga는 구조화된 태깅, 색상 추출, 배경 제거 및 기타 전통적인 컴퓨터‑비전 작업에 뛰어납니다.
- Vecstore는 실제 시각적 유사성, 즉시 검색 가능한 삽입, 멀티모달(텍스트 + 이미지) 쿼리를 제공하며 별도의 메타데이터 저장소가 필요 없게 합니다.
해결하려는 주요 문제에 맞는 서비스를 선택하세요.
비주얼 검색 및 태깅: Imagga vs. Vecstore
주요 차이점
-
메타데이터 처리
- Vecstore는 메타데이터를 벡터와 함께 저장하고 결과와 함께 반환합니다. 메타데이터 필드에 대한 필터링은 검색 쿼리 자체의 일부입니다.
- Imagga는 메타데이터를 벡터 스토어에 포함하지 않으며, 별도로 처리해야 합니다.
-
사용 사례 초점
- Imagga는 이미지 태깅 및 분류(구조화된 라벨, 주요 색상 추출, 배경 제거, 바코드/텍스트 인식)에 강점이 있습니다.
- Vecstore는 시각적 유사성 검색(비슷한 이미지를 찾기), 텍스트‑투‑이미지 검색, 얼굴 검색, 콘텐츠 모더레이션, 즉시 인덱싱을 위해 설계되었습니다.
-
가격 모델
- Imagga – 월 구독제; 사용하지 않은 요청은 각 청구 주기 말에 소멸됩니다. 비주얼 검색은 $79/mo Indie 플랜 이상이 필요합니다.
- Vecstore – 만료되지 않는 크레딧 팩; 모든 기능이 모든 플랜에 포함됩니다.
가격 비교
| 작업량 (operations) | Imagga 플랜 | Imagga 비용 | Vecstore 플랜 | Vecstore 비용 (대략) |
|---|---|---|---|---|
| 5 K | Indie | $79/mo | 5 K 크레딧 | $8 |
| 70 K | Indie | $79/mo | 70 K 크레딧 | 약 $66 |
| 300 K | Pro | $349/mo | 300 K 크레딧 | 약 $240 |
- 낮은 볼륨에서는 Vecstore가 훨씬 저렴합니다.
- 높은 볼륨에서는 비용 차이가 좁혀집니다.
- 기능 고정: Imagga는 고급 기능(예: 얼굴 인식)을 상위 티어에 숨겨 두는 반면, Vecstore는 모든 플랜에 모든 기능을 포함합니다.
Imagga를 선택해야 할 경우
- 구조화된 이미지 태깅 및 분류
- 색상 추출 및 분석
- 배경 제거
- 이미지 내 바코드 및 텍스트 인식
Vecstore를 선택해야 할 경우
- 시각적 유사성 검색(비슷한 이미지를 찾기)
- 텍스트‑투‑이미지 검색(설명으로 이미지 매칭)
- 이미지 라이브러리 전체에 대한 얼굴 검색
- 콘텐츠 모더레이션(NSFW 감지)
- 수동 학습 단계 없이 즉시 인덱싱
- 이미지 URL 및 메타데이터를 한 번의 호출로 반환하는 검색 결과
결론
주된 필요가 검색이라면 속도, 개발자 경험, 아키텍처 차이가 누적됩니다.
- Vecstore는 처음부터 검색을 위해 구축되었습니다.
- Imagga는 이미지 이해를 위해 구축되었으며, 검색은 그 응용 중 하나에 불과합니다.
전체 비교표를 확인하거나 Vecstore를 무료로 체험해 보세요.