Forge
csharp72c0d4fb
1namespace HybridCodebaseIndex.Core.Embeddings;
2
3internal static class EmbeddingProviderFactory
4{
5 internal static IEmbeddingProvider Create(IndexSettings settings, string? indexDirectory = null)
6 {
7 var provider = (settings.EmbeddingProvider ?? "dummy").Trim().ToLowerInvariant();
8 return provider switch
9 {
10 "dummy" => new DummyEmbeddingProvider(settings.EmbeddingDim > 0 ? settings.EmbeddingDim : 64),
11 "onnx" => CreateOnnx(settings, indexDirectory),
12 _ => new DummyEmbeddingProvider(settings.EmbeddingDim > 0 ? settings.EmbeddingDim : 64),
13 };
14 }
15
16 private static IEmbeddingProvider CreateOnnx(IndexSettings settings, string? indexDirectory)
17 {
18 var modelPath = settings.EmbeddingModelPath;
19 if (!string.IsNullOrWhiteSpace(modelPath) && !Path.IsPathRooted(modelPath) && !string.IsNullOrWhiteSpace(indexDirectory))
20 modelPath = Path.Combine(indexDirectory, modelPath);
21
22 var vocabPath = settings.EmbeddingVocabPath;
23 if (!string.IsNullOrWhiteSpace(vocabPath) && !Path.IsPathRooted(vocabPath) && !string.IsNullOrWhiteSpace(indexDirectory))
24 vocabPath = Path.Combine(indexDirectory, vocabPath);
25
26 var seqLen = settings.EmbeddingSequenceLength > 0 ? settings.EmbeddingSequenceLength : 128;
27 var preferGpu = settings.EmbeddingPreferGpu;
28 return new OnnxEmbeddingProvider(
29 modelPath: modelPath ?? "",
30 vocabPath: vocabPath,
31 doLowerCase: settings.EmbeddingDoLowerCase,
32 seqLen: seqLen,
33 preferGpu: preferGpu);
34 }
35}
36
37
View only · write via MCP/CIDE