feat(embedding): 嵌入(n-gram 哈希向量 + 关键词 FTS + OpenAI 兼容 API 钩子 + Manager 选择)
This commit is contained in:
1 parent
70fd915242
commit
51b2bdfba2
9 files changed
+1125
No files matched your search
@@ -0,0 +1,64 @@
|
||||
package embedding
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"git.yeij.top/AskaEth/Cyrene_v2/internal/config"
|
||||
)
|
||||
|
||||
func TestManager_SelectsAPIWhenConfigured(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
cfg := config.EmbeddingConfig{
|
||||
APIURL: "http://localhost:9999/v1/embeddings",
|
||||
APIKey: "secret",
|
||||
Model: "text-embedding-3-small",
|
||||
}
|
||||
m := New(cfg)
|
||||
if m.Embedder() == nil {
|
||||
t.Fatal("Embedder() returned nil")
|
||||
}
|
||||
if _, ok := m.Embedder().(*APIEmbedder); !ok {
|
||||
t.Fatalf("Embedder() = %T, want *APIEmbedder", m.Embedder())
|
||||
}
|
||||
}
|
||||
|
||||
func TestManager_SelectsNGramByDefault(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
m := New(config.EmbeddingConfig{})
|
||||
emb, ok := m.Embedder().(*NGramEmbedder)
|
||||
if !ok {
|
||||
t.Fatalf("Embedder() = %T, want *NGramEmbedder", m.Embedder())
|
||||
}
|
||||
if emb.Dim() != defaultNGramDim {
|
||||
t.Errorf("default ngram dim = %d, want %d", emb.Dim(), defaultNGramDim)
|
||||
}
|
||||
}
|
||||
|
||||
func TestManager_BlankAPIURLSelectsNGram(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
cfg := config.EmbeddingConfig{APIURL: " "} // whitespace counts as unset
|
||||
m := New(cfg)
|
||||
if _, ok := m.Embedder().(*NGramEmbedder); !ok {
|
||||
t.Fatalf("Embedder() = %T, want *NGramEmbedder for blank URL", m.Embedder())
|
||||
}
|
||||
}
|
||||
|
||||
func TestManager_EmbedDelegatesToSelectedEmbedder(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
m := New(config.EmbeddingConfig{})
|
||||
vectors, err := m.Embed(context.Background(), []string{"hello"})
|
||||
if err != nil {
|
||||
t.Fatalf("Embed() error: %v", err)
|
||||
}
|
||||
if len(vectors) != 1 {
|
||||
t.Fatalf("got %d vectors, want 1", len(vectors))
|
||||
}
|
||||
if len(vectors[0]) != defaultNGramDim {
|
||||
t.Errorf("vector length = %d, want %d", len(vectors[0]), defaultNGramDim)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user