Skip to content

Commit

Permalink
fix: deleting useless embedding module and adding tests for openai em…
Browse files Browse the repository at this point in the history
…bedding
  • Loading branch information
NarwhalChen committed Jan 7, 2025
1 parent 89fd2f3 commit 88d79db
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 282 deletions.
15 changes: 13 additions & 2 deletions backend/src/embedding/__tests__/loadAllEmbModels.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { localEmbProvider } from '../local-embedding-provider';
import { EmbeddingModel } from 'fastembed';
import { openAIEmbProvider } from '../../../../llm-server/src/embedding/openai-embedding-provider';
import { OpenAIEmbProvider } from '../openai-embbeding-provider';
const originalIsArray = Array.isArray;

Array.isArray = jest.fn((type: any): type is any[] => {
Expand All @@ -16,7 +16,8 @@ Array.isArray = jest.fn((type: any): type is any[] => {
}) as unknown as (arg: any) => arg is any[];

describe('testing embedding provider', () => {
it('should load real models specified in config', async () => {
let openAiProvider: OpenAIEmbProvider;
it('should load real local models specified in config', async () => {
const documents = [
'passage: Hello, World!',
'query: Hello, World!',
Expand All @@ -30,6 +31,16 @@ describe('testing embedding provider', () => {
documents,
);
}, 6000000);

it('should load real openai embedding models', async () => {
openAiProvider = OpenAIEmbProvider.getInstance();
let res = await openAiProvider.generateEmbResponse(
'text-embedding-3-small','test document'
);
console.log(res);
}, 6000000);


});

afterAll(() => {
Expand Down
34 changes: 22 additions & 12 deletions backend/src/embedding/openai-embbeding-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,39 @@ import { EmbeddingModel } from 'fastembed';
import openai, { OpenAI } from 'openai';
import { EmbeddingDownloader } from 'src/downloader/embedding-downloader';

export class openAIEmbProvider {
private static logger = new Logger(openAIEmbProvider.name);

private static openai = () => {
return new OpenAI({
apiKey: process.env.OPEN_API_KEY,
export class OpenAIEmbProvider {
private logger = new Logger(OpenAIEmbProvider.name);
private static instance: OpenAIEmbProvider;
private openAi: OpenAI;
static openAi: any;
static getInstance(){
if(this.instance){
return this.instance;
}
return new OpenAIEmbProvider();
}
constructor(){
this.openAi = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
};
}

static async generateEmbResponse(model: string, message: string) {
const embedding = await this.openai().embeddings.create({
async generateEmbResponse(model: string, message: string): Promise<any> {
const embedding = await this.openAi.embeddings.create({
model: model,
input: message,
encoding_format: 'float',
});
console.log(embedding.data[0].embedding);
return embedding.data[0].embedding;
}

static async getEmbList() {
async getEmbList() : Promise<any>{
try {
const models = await this.openai().models.list();
Object.values(models).filter((model) => model.object === 'embedding');
const models = await this.openAi.models.list();
const modelList = Object.values(models).filter((model) => model.object === 'embedding');
this.logger.log(`Models fetched: ${models.data.length}`);
return modelList;
} catch (error) {
this.logger.error('Error fetching models:', error);
}
Expand Down
155 changes: 0 additions & 155 deletions llm-server/src/emb-provider.ts

This file was deleted.

11 changes: 0 additions & 11 deletions llm-server/src/embedding/emb-provider.ts

This file was deleted.

102 changes: 0 additions & 102 deletions llm-server/src/embedding/openai-embedding-provider.ts

This file was deleted.

0 comments on commit 88d79db

Please sign in to comment.