Files
aurak/server/src/ai/embedding.service.ts
T
Developer 0a9588abb7 feat: implement QuestionBank CRUD with pagination and template query
- Add pagination support to findAll (page, limit query params)
- Add findByTemplateId method to service
- Add GET /by-template/:templateId endpoint to controller
- Service already includes CRUD for QuestionBank and QuestionBankItem
2026-04-23 17:19:11 +08:00

30 lines
837 B
TypeScript

import { Injectable, Logger } from '@nestjs/common';
import { OpenAIEmbeddings } from '@langchain/openai';
import { ModelConfig } from '../model-config/model-config.entity';
@Injectable()
export class EmbeddingService {
private readonly logger = new Logger(EmbeddingService.name);
async getEmbeddings(text: string, config: ModelConfig): Promise<number[]> {
try {
const embeddings = new OpenAIEmbeddings({
openAIApiKey: config.apiKey || 'ollama',
configuration: {
baseURL: config.baseUrl,
},
modelName: config.modelId,
});
const vector = await embeddings.embedQuery(text);
return vector;
} catch (error) {
this.logger.error(
`Failed to generate embeddings using model ${config.modelId}`,
error,
);
throw error;
}
}
}