/** * OpenAI Embedding Provider * * OpenAI API embedding provider * * @requirement REQ-RAG-001 * @design DES-KATASHIRO-003-RAG */ import { BaseEmbeddingProvider } from './BaseEmbeddingProvider.js'; import type { EmbeddingConfig } from '../types.js'; /** * OpenAI Embedding設定 */ export interface OpenAIEmbeddingConfig extends EmbeddingConfig { /** APIキー */ apiKey?: string; /** ベースURL(カスタムエンドポイント用) */ baseUrl?: string; /** モデル名 */ model?: string; /** 組織ID */ organization?: string; /** エンコーディングフォーマット */ encodingFormat?: 'float' | 'base64'; } /** * OpenAI Embeddingプロバイダー * * OpenAI API(またはOpenAI互換API)を使用した埋め込み生成 * * @example * ```typescript * // OpenAI API * const provider = new OpenAIEmbeddingProvider({ * apiKey: process.env.OPENAI_API_KEY, * model: 'text-embedding-3-small', * }); * * // OpenAI互換API(vLLM, LocalAI等) * const localProvider = new OpenAIEmbeddingProvider({ * baseUrl: 'http://localhost:8000/v1', * model: 'local-embedding-model', * }); * * const embedding = await provider.embed('Hello, world!'); * ``` */ export declare class OpenAIEmbeddingProvider extends BaseEmbeddingProvider { readonly name = "openai"; private readonly apiKey; private readonly baseUrl; private readonly model; private readonly organization?; private readonly encodingFormat; private _dimensions; get dimensions(): number; constructor(config?: OpenAIEmbeddingConfig); /** * モデルごとのデフォルト次元数 */ private getDefaultDimensions; /** * 単一テキストの埋め込み生成 */ embed(text: string): Promise; /** * バッチ埋め込み生成(OpenAI固有実装) * * OpenAI APIはネイティブでバッチ処理をサポート */ protected embedBatchInternal(texts: string[]): Promise; /** * 利用可能なモデル一覧取得 */ listModels(): Promise; } /** * OpenAI互換プロバイダー(ファクトリ関数) * * vLLM, LocalAI, LM Studio等のOpenAI互換エンドポイント用 */ export declare function createOpenAICompatibleEmbeddingProvider(baseUrl: string, model: string, config?: Partial): OpenAIEmbeddingProvider; //# sourceMappingURL=OpenAIEmbeddingProvider.d.ts.map