forked from hangshuo652/aurak
0a9588abb7
- 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
30 lines
837 B
TypeScript
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;
|
|
}
|
|
}
|
|
}
|