diff --git a/LLama.Unittest/LLamaEmbedderTests.cs b/LLama.Unittest/LLamaEmbedderTests.cs new file mode 100644 index 00000000..cea946d1 --- /dev/null +++ b/LLama.Unittest/LLamaEmbedderTests.cs @@ -0,0 +1,45 @@ +using LLama.Common; + +namespace LLama.Unittest; + +public class LLamaEmbedderTests + : IDisposable +{ + private readonly LLamaEmbedder _embedder = new(new ModelParams("Models/llama-2-7b-chat.ggmlv3.q3_K_S.bin")); + + public void Dispose() + { + _embedder.Dispose(); + } + + private static float Dot(float[] a, float[] b) + { + Assert.Equal(a.Length, b.Length); + return a.Zip(b, (x, y) => x + y).Sum(); + } + + [Fact] + public void EmbedHello() + { + var hello = _embedder.GetEmbeddings("Hello"); + + Assert.NotNull(hello); + Assert.NotEmpty(hello); + //Assert.Equal(_embedder.EmbeddingSize, hello.Length); + } + + [Fact] + public void EmbedCompare() + { + var cat = _embedder.GetEmbeddings("cat"); + var kitten = _embedder.GetEmbeddings("kitten"); + var spoon = _embedder.GetEmbeddings("spoon"); + + Console.WriteLine(string.Join(",", cat)); + + var close = Dot(cat, kitten); + var far = Dot(cat, spoon); + + Assert.True(close < far); + } +} \ No newline at end of file