`rerank()`

rerank()

reranking 모델을 사용해 쿼리에 대한 관련성에 따라 문서 집합의 순위를 다시 매깁니다. 쿼리와 문서에 대한 의미적 이해를 바탕으로 문서, 이메일 및 기타 콘텐츠의 순서를 재배치하여 검색 관련성을 높이는 데 이상적입니다.

출처: 문서

본문

import { cohere } from '@ai-sdk/cohere';
import { rerank } from 'ai';

const { ranking } = await rerank({
  model: cohere.reranking('rerank-v4.0-pro'),
  documents: ['sunny day at the beach', 'rainy afternoon in the city'],
  query: 'talk about rain',
});

Import

import { rerank } from "ai"

API Signature

Parameters (파라미터)

  • model: RerankingModel — 사용할 reranking 모델입니다. 예: cohere.reranking('rerank-v4.0-pro')
  • documents: Array<VALUE> — 순위를 다시 매길 문서들입니다. 문자열 배열 또는 JSON 객체 배열일 수 있습니다.
  • query: string — 문서를 순위 매기는 검색 쿼리입니다.
  • topN: number (선택) — 반환할 상위 문서의 최대 개수입니다. 지정하지 않으면 모든 문서가 반환됩니다.
  • maxRetries: number (선택) — 최대 재시도 횟수입니다. 재시도를 비활성화하려면 0으로 설정하세요. 기본: 2.
  • abortSignal: AbortSignal (선택) — 호출을 취소하는 데 사용할 수 있는 선택적 abort 신호입니다.
  • headers: Record<string, string> (선택) — 요청과 함께 보낼 추가 HTTP 헤더입니다. HTTP 기반 프로바이더에만 적용됩니다.
  • providerOptions: ProviderOptions (선택) — reranking 요청에 대한 프로바이더별 옵션입니다.
  • runtimeContext: RUNTIME_CONTEXT (선택) — 라이프사이클 콜백에 전달되는 사용자 정의 런타임 컨텍스트입니다. 기본값은 빈 객체입니다. 텔레메트리 통합은 telemetry.includeRuntimeContext로 명시적으로 포함된 최상위 속성만 받습니다.
  • telemetry: TelemetryOptions<RUNTIME_CONTEXT> (선택) — 텔레메트리 구성입니다.
    • isEnabled: boolean (선택) — 텔레메트리를 활성화하거나 비활성화합니다. 기본적으로 활성화되어 있습니다. 선택 해제하려면 false로 설정하세요.
    • recordInputs: boolean (선택) — 입력 기록을 활성화하거나 비활성화합니다. 기본적으로 활성화되어 있습니다.
    • recordOutputs: boolean (선택) — 출력 기록을 활성화하거나 비활성화합니다. 기본적으로 활성화되어 있습니다.
    • functionId: string (선택) — 이 함수의 식별자입니다. 함수별로 텔레메트리 데이터를 그룹화하는 데 사용됩니다.
    • includeRuntimeContext: { [KEY in keyof RUNTIME_CONTEXT]?: boolean } (선택) — 텔레메트리에 포함할 최상위 런타임 컨텍스트 속성입니다. true로 설정된 속성만 포함됩니다. 모든 속성은 기본적으로 제외됩니다. 사용자 콜백은 여전히 전체 컨텍스트를 받습니다.
    • integrations: Telemetry | Telemetry[] (선택) — 라이프사이클 이벤트를 받는 호출별 텔레메트리 통합입니다. 제공되면 이 호출에 대해 전역으로 등록된 통합을 대체합니다.
  • onStart: (event: RerankStartEvent<RUNTIME_CONTEXT>) => void | Promise<void> (선택) — reranking 모델이 호출되기 전, rerank 작업이 시작될 때 호출됩니다. 이벤트에는 필터링되지 않은 전체 runtimeContext가 포함됩니다.
  • onEnd: (event: RerankEndEvent<RUNTIME_CONTEXT>) => void | Promise<void> (선택) — reranking 모델이 반환된 후 rerank 작업이 완료될 때 호출됩니다. 이벤트에는 필터링되지 않은 전체 runtimeContext가 포함됩니다.

Returns (반환값)

  • originalDocuments: Array<VALUE> — 원래 순서의 원본 문서 배열입니다.
  • rerankedDocuments: Array<VALUE> — 관련성 점수(내림차순)로 정렬된 문서입니다.
  • ranking: Array<RankingItem<VALUE>> — 점수와 인덱스가 있는 ranking 항목 배열입니다.
    • originalIndex: number — 원본 문서 배열에서 문서의 인덱스입니다.
    • score: number — 문서의 관련성 점수입니다 (일반적으로 0-1, 높을수록 더 관련성이 높음).
    • document: VALUE — 문서 자체입니다.
  • response: Response — 응답 데이터입니다.
    • id: string (선택) — 프로바이더의 응답 ID입니다.
    • timestamp: Date — 응답의 타임스탬프입니다.
    • modelId: string — reranking에 사용된 모델 ID입니다.
    • headers: Record<string, string> (선택) — 응답 헤더입니다.
    • body: unknown (선택) — 원시 응답 본문입니다.
  • providerMetadata: ProviderMetadata | undefined (선택) — 프로바이더의 선택적 메타데이터입니다. 외부 키는 프로바이더 이름입니다. 내부 값은 메타데이터입니다. 세부 사항은 프로바이더에 따라 다릅니다.

Examples (예제)

문자열 문서

import { cohere } from '@ai-sdk/cohere';
import { rerank } from 'ai';

const { ranking, rerankedDocuments } = await rerank({
  model: cohere.reranking('rerank-v4.0-pro'),
  documents: [
    'sunny day at the beach',
    'rainy afternoon in the city',
    'snowy night in the mountains',
  ],
  query: 'talk about rain',
  topN: 2,
});

console.log(rerankedDocuments);
// ['rainy afternoon in the city', 'sunny day at the beach']

console.log(ranking);
// [
//   { originalIndex: 1, score: 0.9, document: 'rainy afternoon...' },
//   { originalIndex: 0, score: 0.3, document: 'sunny day...' }
// ]

객체 문서

import { cohere } from '@ai-sdk/cohere';
import { rerank } from 'ai';

const documents = [
  {
    from: 'Paul Doe',
    subject: 'Follow-up',
    text: 'We are happy to give you a discount of 20%.',
  },
  {
    from: 'John McGill',
    subject: 'Missing Info',
    text: 'Here is the pricing from Oracle: $5000/month',
  },
];

const { ranking } = await rerank({
  model: cohere.reranking('rerank-v4.0-pro'),
  documents,
  query: 'Which pricing did we get from Oracle?',
  topN: 1,
});

console.log(ranking[0].document);
// { from: 'John McGill', subject: 'Missing Info', ... }

프로바이더 옵션 사용

import { cohere } from '@ai-sdk/cohere';
import { rerank } from 'ai';

const { ranking } = await rerank({
  model: cohere.reranking('rerank-v4.0-pro'),
  documents: ['sunny day at the beach', 'rainy afternoon in the city'],
  query: 'talk about rain',
  providerOptions: {
    cohere: {
      maxTokensPerDoc: 1000,
    },
  },
});

더 알아보기 (Learn more)