ZeroEntropy Provider

ZeroEntropy Provider

zeroentropy-ai/zeroentropy-ai-provider는 ZeroEntropy를 사용해 AI SDK에 텍스트 임베딩과 리랭킹(reranking) 지원을 제공하는 커뮤니티 프로바이더예요.

출처: 문서

본문

설정

ZeroEntropy 프로바이더는 zeroentropy-ai-provider 모듈에서 사용할 수 있어요. 다음과 같이 설치할 수 있어요:

npm install zeroentropy-ai-provider

프로바이더 인스턴스

zeroentropy-ai-provider에서 기본 프로바이더 인스턴스 zeroentropy를 import 할 수 있어요:

import { zeroentropy } from 'zeroentropy-ai-provider';

커스텀 설정이 필요하다면 zeroentropy-ai-provider에서 createZeroEntropy를 import 해서 설정과 함께 프로바이더 인스턴스를 만들 수 있어요:

import { createZeroEntropy } from 'zeroentropy-ai-provider';

const zeroentropy = createZeroEntropy({
  apiKey: proces..._KEY ?? '',
});

ZeroEntropy 프로바이더 인스턴스를 커스터마이즈하기 위해 다음의 선택적 설정을 사용할 수 있어요:

  • baseURL string

    ZeroEntropy API의 기본 URL이에요. 기본 접두사는 https://api.zeroentropy.dev/v1이에요.

  • apiKey string

    Authorization 헤더로 전송되는 API 키예요. 기본값은 ZEROENTROPY_API_KEY 환경 변수예요. ZeroEntropy Dashboard에서 API 키를 얻을 수 있어요.

  • headers Record<string,string>

    요청에 포함할 커스텀 헤더예요.

  • fetch (input: RequestInfo, init?: RequestInit) => Promise<Response>

    커스텀 fetch 구현이에요. 기본값은 전역 fetch 함수예요. 요청을 가로채는 미들웨어로 사용하거나, 예를 들어 테스트를 위한 커스텀 fetch 구현을 제공하는 데 사용할 수 있어요.

텍스트 임베딩 모델

.textEmbeddingModel() 팩토리 메서드를 사용해 ZeroEntropy 임베딩 API를 호출하는 모델을 만들 수 있어요.

import { zeroentropy } from 'zeroentropy-ai-provider';

const embeddingModel = zeroentropy.textEmbeddingModel('zembed-1');

embed 또는 embedMany 함수로 ZeroEntropy 임베딩 모델을 사용해 임베딩을 생성할 수 있어요:

import { zeroentropy } from 'zeroentropy-ai-provider';
import { embed, embedMany } from 'ai';

// Single embedding
const { embedding } = await embed({
  model: zeroentropy.textEmbeddingModel('zembed-1'),
  value: 'sunny day at the beach',
});

// Batch embeddings
const { embeddings } = await embedMany({
  model: zeroentropy.textEmbeddingModel('zembed-1'),
  values: ['first document', 'second document'],
});

ZeroEntropy 임베딩 모델은 providerOptions.zeroentropy를 통해 전달할 수 있는 추가 프로바이더 옵션을 지원해요:

import { zeroentropy } from 'zeroentropy-ai-provider';
import { embed } from 'ai';

const { embedding } = await embed({
  model: zeroentropy.textEmbeddingModel('zembed-1'),
  value: 'sunny day at the beach',
  providerOptions: {
    zeroentropy: {
      inputType: 'document',
      dimensions: 1280,
    },
  },
});

다음 프로바이더 옵션을 사용할 수 있어요:

  • inputType 'query' | 'document'

    입력이 검색 쿼리인지 인덱싱할 문서인지 지정해요. 검색 쿼리에는 'query', 인덱싱할 콘텐츠에는 'document'를 사용해요. 기본값은 'document'예요.

  • dimensions 2560 | 1280 | 640 | 320 | 160 | 80 | 40

    출력 벡터 차원이에요. 기본값은 2560이에요. 유연한 차원 축소를 위한 Matryoshka 표현을 지원해요.

  • latency 'fast' | 'slow'

    'fast'는 1초 미만의 지연시간, 'slow'는 더 높은 처리량 한도를 위한 값이에요.

모델 기능

모델 기본 차원 컨텍스트 길이 설명
zembed-1 2560 8192 다국어 임베딩 모델, Matryoshka 차원 지원

리랭킹 모델

.rerankingModel() 팩토리 메서드를 사용해 ZeroEntropy 리랭킹 API를 호출하는 모델을 만들 수 있어요.

import { zeroentropy } from 'zeroentropy-ai-provider';
import { rerank } from 'ai';

const result = await rerank({
  model: zeroentropy.rerankingModel('zerank-2'),
  query: 'talk about rain',
  documents: ['sunny day at the beach', 'rainy day in the city'],
  topN: 2,
});

ZeroEntropy 리랭킹 모델은 providerOptions.zeroentropy를 통해 전달할 수 있는 추가 프로바이더 옵션을 지원해요:

import { zeroentropy } from 'zeroentropy-ai-provider';
import { rerank } from 'ai';

const result = await rerank({
  model: zeroentropy.rerankingModel('zerank-2'),
  query: 'talk about rain',
  documents: ['sunny day at the beach', 'rainy day in the city'],
  topN: 2,
  providerOptions: {
    zeroentropy: {
      latency: 'fast',
    },
  },
});

다음 프로바이더 옵션을 사용할 수 있어요:

  • latency 'fast' | 'slow'

    'fast'는 1초 미만의 지연시간, 'slow'는 더 높은 처리량 한도를 위한 값이에요.

모델 기능

모델 설명
zerank-2 최첨단 크로스-인코더 리랭커 플래그십 모델
zerank-2-nano 저지연 사용 사례를 위한 컴팩트 zerank-2 변형
zerank-1 이전 세대 리랭커
zerank-1-small 저지연 사용 사례를 위한 경량 리랭커

사용 가능한 모델과 옵션의 전체 목록은 ZeroEntropy 문서를 참고하세요.

더 알아보기 (Learn more)