ai-sdk-ollama
Version:
Vercel AI SDK Provider for Ollama using official ollama-js library
83 lines • 2.75 kB
TypeScript
import { RerankingModelV4, RerankingModelV4CallOptions } from '@ai-sdk/provider';
import { FetchFunction } from '@ai-sdk/provider-utils';
import { z } from 'zod';
/**
* Configuration for the Ollama reranking model
*/
export interface OllamaRerankingConfig {
provider: string;
baseURL: string;
headers: () => Record<string, string | undefined>;
fetch?: FetchFunction;
}
/**
* Settings for configuring Ollama reranking models
*/
export interface OllamaRerankingSettings {
/**
* Custom instruction for the reranker model.
* Defaults to the model's built-in instruction (usually "Please judge relevance").
*/
instruction?: string;
}
/**
* Schema for validating Ollama reranking provider options
*/
export declare const ollamaRerankingProviderOptionsSchema: z.ZodObject<{
instruction: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
* Ollama provider options for reranking calls
*/
export type OllamaRerankingProviderOptions = z.infer<typeof ollamaRerankingProviderOptionsSchema>;
/**
* Native Ollama Reranking Model
*
* **WAITING FOR OFFICIAL SUPPORT**
*
* This implementation uses Ollama's /api/rerank endpoint from PR #11389.
* As of December 2024, this PR has NOT been merged into Ollama.
*
* **For a working solution, use `OllamaEmbeddingRerankingModel` instead:**
* ```ts
* import { ollama } from 'ai-sdk-ollama';
* import { rerank } from 'ai';
*
* const result = await rerank({
* model: ollama.embeddingReranking('bge-m3'),
* query: 'What is machine learning?',
* documents: [...],
* });
* ```
*
* This native implementation will work once Ollama adds reranking support:
* @see https://github.com/ollama/ollama/pull/11389
*
* @example
* ```ts
* // NOT YET WORKING - requires Ollama reranking API
* import { ollama } from 'ai-sdk-ollama';
* import { rerank } from 'ai';
*
* const { rerankedDocuments } = await rerank({
* model: ollama.rerankingModel('bge-reranker-v2-m3'),
* query: 'What is machine learning?',
* documents: [
* 'Machine learning is a subset of AI...',
* 'The weather today is sunny...',
* 'Deep learning uses neural networks...',
* ],
* topN: 2,
* });
* ```
*/
export declare class OllamaRerankingModel implements RerankingModelV4 {
readonly specificationVersion: 'v4';
readonly modelId: string;
private readonly config;
private readonly settings;
constructor(modelId: string, settings: OllamaRerankingSettings, config: OllamaRerankingConfig);
get provider(): string;
doRerank({ documents, headers, query, topN, abortSignal, providerOptions, }: RerankingModelV4CallOptions): Promise<Awaited<ReturnType<RerankingModelV4['doRerank']>>>;
}
//# sourceMappingURL=reranking-model.d.ts.map