KURE

시작하기

KURE API는 한국어 검색 모델을 API로 제공합니다. 임베딩(KURE-v3)은 OpenAI 호환이라 OpenAI SDK에서 주소와 키만 바꾸면 바로 쓸 수 있고, 같은 키로 희소 임베딩(KURE-Sparse)과 리랭킹(KURE-Reranker)도 쓸 수 있습니다. 이 페이지는 임베딩으로 시작합니다.

API는 지금 무료입니다. KURE-v3 웨이트는 Hugging Face에서 받을 수 있습니다.

1. API 키 발급

  1. 오른쪽 위 로그인에서 GitHub 또는 Google 계정으로 로그인합니다.
  2. 이용약관에 동의하고 가입합니다. 입력 원문 저장 동의는 선택이며, 동의하면 분당 한도가 2배, 일일 토큰 한도가 10배로 늘어납니다 (데이터 정책).
  3. 대시보드 → API 키에서 키를 발급합니다. 키 원문은 발급할 때 한 번만 보이니 바로 안전한 곳에 저장하세요.

키는 코드에 직접 쓰지 말고 환경변수로 넘기는 것을 권장합니다.

export KURE_API_KEY="kure-..."

2. 첫 요청

Base URL은 https://kure.kullm.ai/api/v1입니다.

# pip install openai
import os
 
from openai import OpenAI
 
client = OpenAI(base_url="https://kure.kullm.ai/api/v1", api_key=os.environ["KURE_API_KEY"])
 
res = client.embeddings.create(
    model="kure-v3",
    input="고려대학교는 어디에 있나요?",
    extra_body={"input_type": "query"},
)
print(len(res.data[0].embedding))  # 2048

3. 질의와 문서를 구분하세요

KURE-v3는 검색 질의와 검색 대상 문서를 다르게 인코딩하도록 학습되었습니다. input_type에 질의는 "query", 문서는 "document"를 넣으세요. 넣지 않으면 텍스트를 그대로 임베딩하며 검색 품질이 떨어질 수 있습니다. 자세한 내용은 모델을 참고하세요.

OpenAI SDK에는 input_type 인자가 없어서 Python은 extra_body로 넘깁니다.

4. 간단한 검색

벡터는 길이 1로 정규화되어 있어 내적이 곧 코사인 유사도입니다.

import os
 
import numpy as np
from openai import OpenAI
 
client = OpenAI(base_url="https://kure.kullm.ai/api/v1", api_key=os.environ["KURE_API_KEY"])
 
 
def embed(texts, input_type):
    res = client.embeddings.create(
        model="kure-v3",
        input=texts,
        dimensions=1024,
        extra_body={"input_type": input_type},
    )
    return np.array([d.embedding for d in res.data])
 
 
docs = [
    "고려대학교는 서울특별시 성북구 안암로 145에 있다.",
    "연세대학교는 서울특별시 서대문구 연세로 50에 있다.",
    "고려대학교 세종캠퍼스는 세종특별자치시 조치원읍에 있다.",
]
doc_vecs = embed(docs, "document")
query_vec = embed(["고려대 본교 주소 알려줘"], "query")[0]
 
scores = doc_vecs @ query_vec
for i in np.argsort(-scores):
    print(f"{scores[i]:.3f}  {docs[i]}")

문서를 미리 임베딩해 벡터 DB에 저장해 두고, 검색할 때는 질의만 임베딩하면 됩니다. 로그인 없이 플레이그라운드에서도 결과를 바로 확인할 수 있습니다.

다음 단계

문의·버그 제보·한도 상향 요청은 kure.nlpai@gmail.com로 보내 주세요.