Files
story/internal/memoryindex/processor_test.go
T

40 lines
1.3 KiB
Go

package memoryindex
import (
"math"
"strings"
"testing"
"data-terminal-cloud/internal/developmentembedding"
)
func TestDevelopmentEmbeddingIsDeterministicAndNormalized(t *testing.T) {
first := developmentembedding.Vector("长者谈到小时候在河边散步。")
second := developmentembedding.Vector("长者谈到小时候在河边散步。")
other := developmentembedding.Vector("完全不同的记忆内容。")
if len(first) != developmentembedding.Dimensions || len(second) != len(first) {
t.Fatalf("embedding dimensions = %d, want %d", len(first), developmentembedding.Dimensions)
}
var squared float64
var different bool
for index := range first {
if first[index] != second[index] {
t.Fatalf("embedding differs at %d", index)
}
if first[index] != other[index] {
different = true
}
squared += first[index] * first[index]
}
if !different {
t.Fatal("different content produced the same embedding")
}
if math.Abs(math.Sqrt(squared)-1) > 1e-9 {
t.Fatalf("embedding norm = %.12f, want 1", math.Sqrt(squared))
}
literal := developmentembedding.Literal(first)
if !strings.HasPrefix(literal, "[") || !strings.HasSuffix(literal, "]") || strings.Count(literal, ",") != developmentembedding.Dimensions-1 {
t.Fatal("vector literal has an invalid shape")
}
}