diff --git a/TestHNSW/HNSWDemo/Program.cs b/TestHNSW/HNSWDemo/Program.cs index 009a04b..10a62bf 100644 --- a/TestHNSW/HNSWDemo/Program.cs +++ b/TestHNSW/HNSWDemo/Program.cs @@ -95,9 +95,10 @@ namespace HNSWDemo return vectors; } + static void Main(string[] args) { - FilterTest(); + AccuracityTest(); Console.ReadKey(); } @@ -390,7 +391,7 @@ namespace HNSWDemo var miss = 0; foreach (var v in vectors) { - var numbers = map.ConvertIdsToFeatures( world.Search(v, K, context).Select(r=>r.Item1)); + var numbers = map.ConvertIdsToFeatures(world.Search(v, K, context).Select(r => r.Item1)); foreach (var r in numbers) { var record = testDict[r]; @@ -422,7 +423,7 @@ namespace HNSWDemo var sw = new Stopwatch(); var test = new VectorsDirectCompare(samples, CosineDistance.ForUnits); - var world = new SmallWorld(NSWOptions.Create(6, 15, 200, 200, CosineDistance.ForUnits, true, true, selectionHeuristic: NeighbourSelectionHeuristic.SelectSimple)); + var world = new SmallWorld(NSWOptions.Create(32, 15, 200, 200, CosineDistance.ForUnits, true, true, selectionHeuristic: NeighbourSelectionHeuristic.SelectSimple)); sw.Start(); var ids = world.AddItems(samples.ToArray()); diff --git a/ZeroLevel.HNSW/Utils/ProbabilityLayerNumberGenerator.cs b/ZeroLevel.HNSW/Utils/ProbabilityLayerNumberGenerator.cs index 0560f21..2af5225 100644 --- a/ZeroLevel.HNSW/Utils/ProbabilityLayerNumberGenerator.cs +++ b/ZeroLevel.HNSW/Utils/ProbabilityLayerNumberGenerator.cs @@ -1,12 +1,16 @@ -namespace ZeroLevel.HNSW.Services +using System; + +namespace ZeroLevel.HNSW.Services { internal sealed class ProbabilityLayerNumberGenerator { private const float DIVIDER = 3.361f; private readonly float[] _probabilities; + private float _mL; internal ProbabilityLayerNumberGenerator(int maxLayers, int M) { + _mL = maxLayers; _probabilities = new float[maxLayers]; var probability = 1.0f / DIVIDER; for (int i = 0; i < maxLayers; i++)