@restnfeel/agentc-starter-kit
Version:
한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템
38 lines (32 loc) • 1.04 kB
text/typescript
import { EmbeddingModel } from "../types";
import { OpenAIEmbeddings } from "@langchain/openai";
export class OpenAIEmbeddingModel implements EmbeddingModel {
private embeddings: OpenAIEmbeddings;
constructor(apiKey: string, modelName: string = "text-embedding-3-small") {
this.embeddings = new OpenAIEmbeddings({
openAIApiKey: apiKey,
modelName,
batchSize: 1000, // Process embeddings in batches
});
}
async embed(text: string): Promise<number[]> {
try {
const result = await this.embeddings.embedQuery(text);
return result;
} catch (error) {
throw new Error(`Failed to generate embedding: ${error}`);
}
}
async embedBatch(texts: string[]): Promise<number[][]> {
try {
const results = await this.embeddings.embedDocuments(texts);
return results;
} catch (error) {
throw new Error(`Failed to generate batch embeddings: ${error}`);
}
}
getDimensions(): number {
// text-embedding-3-small has 1536 dimensions
return 1536;
}
}