MCPcopy Create free account
hub / github.com/PatrickSys/codebase-context / getEmbeddingProvider

Function getEmbeddingProvider

src/embeddings/index.ts:32–69  ·  view source on GitHub ↗
(
  config: Partial<EmbeddingConfig> = {}
)

Source from the content-addressed store, hash-verified

30let cachedProviderType: string | null = null;
31
32export async function getEmbeddingProvider(
33 config: Partial<EmbeddingConfig> = {}
34): Promise<EmbeddingProvider> {
35 const mergedConfig = { ...DEFAULT_EMBEDDING_CONFIG, ...config };
36 const providerKey = `${mergedConfig.provider}:${mergedConfig.model}`;
37
38 if (cachedProvider && cachedProviderType === providerKey) {
39 return cachedProvider;
40 }
41
42 if (mergedConfig.provider === 'openai') {
43 const { OpenAIEmbeddingProvider } = await import('./openai.js');
44 const provider = new OpenAIEmbeddingProvider(
45 mergedConfig.model || 'text-embedding-3-small',
46 mergedConfig.apiKey,
47 mergedConfig.apiEndpoint
48 );
49 await provider.initialize();
50 cachedProvider = provider;
51 cachedProviderType = providerKey;
52 return provider;
53 }
54
55 if (mergedConfig.provider === 'custom') {
56 throw new Error("Custom provider not implemented. Use 'openai' or 'transformers'.");
57 }
58
59 if (mergedConfig.provider === 'ollama') {
60 console.warn('Ollama provider not yet implemented, falling back to Transformers.js');
61 }
62
63 const provider = new TransformersEmbeddingProvider(mergedConfig.model);
64 await provider.initialize();
65 cachedProvider = provider;
66 cachedProviderType = providerKey;
67
68 return provider;
69}

Callers 2

indexMethod · 0.85
initializeMethod · 0.85

Calls 1

initializeMethod · 0.95

Tested by

no test coverage detected