Elastic
Jina AI
모델
API
keyboard_arrow_down
Reader
어떤 URL이든 Markdown으로 변환하여 LLM 그라운딩을 개선하세요.
Embeddings
멀티모달 및 다국어 임베딩.
Reranker
검색 관련성을 극대화하는 리랭커.
Elastic Inference Service
Jina 모델을 Elasticsearch에서 네이티브 방식으로 실행하세요.
MCP
terminal
CLI
article
llms.txt
smart_toy
에이전트
data_object
스키마
menu_book
문서
로그인
login
구현
쿼리 작성에 대한 실증 연구
요약
기술 블로그
3월 17, 2024

Jina Reranker API만으로 게시글 추천 시스템 만들기

Jina Reranker API만으로 추천 시스템을 구축할 수 있습니다—파이프라인도, 임베딩도, 벡터 검색도 필요 없이 리랭킹만으로 가능합니다. 20줄의 코드로 어떻게 구현하는지 알아보세요.
Black background with a grid, multiple smiley faces, and a cursor pointing to one of them.
Engineering Group • 5 분 소요

2주 전에 시장의 선도적인 재순위화 솔루션으로 자리매김한 Reranker API를 소개했습니다. Jina Reranker는 다양한 벤치마크에서 BM25 결과 대비 히트율을 최대 +33% 향상시키며 인기 있는 기준들을 능가하는 성능을 보여줍니다. 성능이 인상적이지만, 제가 더 흥미로워하는 것은 Reranker API의 잠재력입니다. 쿼리-문서 목록을 입력하고 재순위화된 상위 k개의 결과를 직접 출력하는 간단한 인터페이스를 제공합니다. 이는 이론적으로 BM25, 임베딩, 벡터 데이터베이스 또는 어떤 파이프라인도 필요 없이 Reranker만으로 검색이나 추천 시스템을 구축할 수 있어 엔드투엔드 기능을 달성할 수 있다는 것을 의미합니다.

이 개념이 너무 흥미로워서 실험해보지 않을 수 없었습니다. 그래서 지금 보시는 것처럼 우리 웹사이트의 뉴스 페이지에서 @ 키를 누르고 "get top 5 related articles" 버튼을 클릭하면, jina-reranker-v1 모델을 사용하여 약 5초 만에 현재 기사와 가장 관련성이 높은 5개의 기사를 받을 수 있습니다(jina-colbert-v1 모델의 경우 조금 더 걸립니다). 모든 계산은 온라인으로 수행되며 Reranker API가 전적으로 관리합니다. 아래는 작동 방식을 보여주는 비디오입니다:

0:00
/0:33

이 데모를 실행하려면 충분한 토큰이 남아있는 API 키가 필요합니다. 할당량을 모두 소진하여 데모를 실행할 수 없는 경우 https://jina.ai/reranker에서 새 키를 생성할 수 있습니다. 새 키마다 100만 개의 무료 토큰이 제공됩니다.

tag구현

구현은 매우 간단합니다: jina.ai/news/의 주어진 기사와 가장 관련된 기사를 찾기 위해, 현재 읽고 있는 기사를 쿼리로 사용하고 뉴스 사이트의 다른 모든 230여 개의 기사(전체 텍스트 사용!)를 문서로 사용합니다(물론 현재 기사는 제외). 그런 다음 이 (q,d1,d2,⋯ ,d230)(q, d_1, d_2, \cdots, d_{230})(q,d1​,d2​,⋯,d230​)를 페이로드로 Reranker API에 전송합니다. 응답을 받으면 정렬된 문서 인덱스를 사용하여 결과를 표시합니다. 따라서 기본 코드는 다음과 같습니다:

const getRecommendedArticles = async () => {
  
  const query = `${currentNews.title} ${currentNews.excerpt}`;
  const docs = newsStore.allBlogs.filter((item) => item.slug !== currentNews.slug);
  
  const data = {
    model: modelName,
    query: query,
    documents: docs,
    top_n: 5,
  }

  const rerankUrl = 'https://api.jina.ai/v1/rerank';
  const headers = {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${apiKey}`,
  };
  const modelName = 'jina-reranker-v1-base-en';
  
  const res = await fetch(rerankUrl, {
    method: 'POST',
    headers: headers,
    body: JSON.stringify(data),
  });

  const resp = await res.json();

  const topKList = resp.results.map((item) => {
    return docs[item.index];
  });

  console.log(topKList);
}
Reranker API
Maximize the search relevancy and RAG accuracy at ease

API 키를 얻으려면 Reranker API 페이지를 방문하여 API 섹션으로 이동하면 됩니다. Embedding API에서 이미 API 키를 가지고 있다면 여기서도 재사용할 수 있습니다.

이렇게 하면 결과가 나타나며, 구현 과정이 약 10분 정도 걸린다는 점을 고려하면 첫 시도치고는 꽤 괜찮은 결과를 보여줍니다.

독자들은 이 구현에 대해 우려할 수 있는데, 일부 비판은 과도한 걱정일 수 있고 다른 일부는 타당할 수 있습니다:

  • 전체 텍스트가 너무 길고 청킹이 필요하다는 우려는 과도한 걱정일 수 있습니다: jina-reranker-v1 모델은 길이가 512까지인 쿼리와 임의 길이의 문서를 처리할 수 있으며, jina-colbert-v1 모델은 쿼리와 문서 모두 8192까지 처리할 수 있습니다. 따라서 전체 텍스트를 Reranker API에 입력하는 것은 불필요할 수 있습니다. 두 모델 모두 긴 컨텍스트를 효율적으로 관리하므로 걱정할 필요가 없습니다. 임베딩-벡터-검색-재순위화 파이프라인에서 가장 번거롭고 휴리스틱한 측면일 수 있는 청킹은 여기서는 큰 문제가 되지 않습니다. 하지만 더 긴 컨텍스트는 더 많은 토큰을 가정하므로, 이는 API 유료 사용자가 고려해야 할 사항입니다. 이 예제에서는 233개 기사의 전체 텍스트를 사용하므로 하나의 재순위화 쿼리에 300K+ 토큰이 소비됩니다.
  • 품질에 대한 원시 데이터 대 정제된 데이터의 영향. 데이터 정제를 추가하면 향상될 수 있습니다. 예를 들어, HTML 태그를 제거하는 것만으로도 (즉, docs.map(item => item.html.replace(/<[^>]*>?/gm, '')) jina-reranker-v1 모델의 추천 품질이 크게 향상되는 것을 관찰했습니다. 하지만 jina-colbert-v1 모델에서는 그 효과가 덜 두드러집니다. 이는 ColBERT 모델이 jina-reranker-v1 모델보다 노이즈가 있는 텍스트에 더 관대하도록 훈련되었다는 것을 시사합니다.
  • 다른 쿼리 구성이 품질에 미치는 영향. 위의 구현에서는 현재 기사의 제목과 요약을 쿼리로 직접 사용했습니다. 이것이 쿼리를 구성하는 최적의 방법일까요? "What is the most related article to..."와 같은 접두사를 추가하는 것이"가장 좋은 글을 추천해 주시면 $20를 드리겠습니다"와 같이 대규모 언어 모델에서 사용되는 프롬프트와 유사한 방식이 도움이 될까요? 이는 모델의 학습 데이터 분포와 관련이 있을 것으로 보이는 흥미로운 질문을 제기하며, 이에 대해 더 자세히 살펴볼 예정입니다.
  • 쿼리 구성에 대한 이전 논점을 확장하여, 사용자의 최근 브라우징 기록을 활용한 개인화된 추천과 같이 쿼리의 조합 능력을 더 자세히 조사하는 것도 흥미로울 것입니다. 특히 시스템이 쿼리의 긍정적인 예시뿐만 아니라 부정적인 예시도 이해할 수 있는지, 예를 들어 NOT_LIKE 연산자, "이런 글은 추천하지 마세요" 또는 "이와 같은 글을 덜 보고 싶습니다"와 같은 것을 이해할 수 있는지 고려해 볼 만합니다. 다음 섹션에서 이에 대해 더 자세히 다룰 것입니다.

tag쿼리 작성에 대한 실증 연구

Jina Reranker API를 사용한 다양한 쿼리 작성 탐구에서, 상위 10개 결과에 초점을 맞추어 인간 레이블링(즉, 우리 스스로 평가)을 통한 정성적 평가를 수행했습니다. 웹사이트에 게시된 모든 콘텐츠에 대한 완전한 지식을 가지고 있기 때문에 이는 타당한 접근이었습니다. 우리가 검토한 쿼리 작성 전략은 다음과 같습니다:

  • 글의 제목, 발췌문, 그리고 제목 + 발췌문의 조합 사용
  • "이와 같은 글", "이런 글은 제외", "가장 관련성이 높은 글은 무엇인가요?"와 같은 "프롬프트" 스타일의 지시문 채택

reranker의 효과를 테스트하기 위해, 200개 이상의 게시물 중에서 가장 관련성 있는 글을 찾아내는—LLM에서의 "건초더미 속 바늘 찾기"에서 영감을 받은 도전 과제—을 위해 두 개의 복잡한 글을 쿼리 대상으로 선택했습니다. 아래에서는 이러한 "바늘"들을 녹색으로 강조 표시했습니다.

Screenshot of a table ranking articles on search technology relevance, featuring titles, excerpts, and 'More Like' or 'Not Li
연구의 포괄적인 결과는 이 스프레드시트에서 자세히 볼 수 있습니다.

tag요약

테스트 결과를 바탕으로 다음과 같은 관찰 사항과 요약을 도출했습니다:

  1. 제목과 발췌문을 조합하는 것이 가장 좋은 재순위화 결과를 보여주며, 발췌문은 재순위화 품질을 향상시키는 데 중요한 역할을 합니다.
  2. "프롬프트" 스타일의 지시문을 포함하는 것은 개선으로 이어지지 않습니다.
  3. 현재 reranker 모델은 긍정적이거나 부정적인 한정자를 효과적으로 처리하지 못합니다. "더 많이", "더 적게" 또는 "제외"와 같은 용어는 reranker가 이해하지 못합니다.

2번과 3번 포인트의 통찰은 reranker의 향후 개선을 위한 흥미로운 방향을 제시합니다. 정렬 로직을 변경하기 위한 즉각적인 프롬프팅을 가능하게 하면 reranker의 기능이 크게 확장되어 개인화된 콘텐츠 큐레이션/추천과 같은 새로운 잠재적 응용 분야가 열릴 수 있을 것으로 믿습니다.

범주:
기술 블로그
rss_feed

자세히 보기
3월 11, 2026 • 7 분 소요
Bootstrapping Audio Embeddings from Multimodal LLMs
Han Xiao
Abstract illustration of a sound wave or heartbeat, formed by blue, orange, and gray dots on a white background.
3월 06, 2026 • 6 분 소요
Identifying Embedding Models from Raw Numerical Values
Han Xiao
Fingerprint illustration made from numbers, showcasing digital and high-tech design on a light background.
9월 09, 2025 • 11 분 소요
Multimodal Embeddings in Llama.cpp and GGUF
Andrei Ungureanu
Alex C-G
Cartoon llama in the center of a white background, emitting laser-like beams from its eyes. The illustration creates a playfu
현재 언어 / 테마
Search Foundation
Reader
Embeddings
Reranker
Jina API 키 받기
속도 제한
회사 소개
소식
Jina 로고 다운로드
open_in_new
Elastic 로고 다운로드
open_in_new
API 상태
Elastic © 2026.보안이용약관개인정보 보호쿠키 관리제 개인 정보를 판매하거나 공유하지 마세요.
본 웹사이트 및 관련 콘텐츠, 소프트웨어, 제품, 서비스는 전문가용으로만 제작되었습니다. 일반 소비자를 위한 것이 아니며, 소비자의 사용을 권장하지 않습니다.