using BuildFlow.Domain.Interfaces; namespace BuildFlow.Rag.Tests.Stub; /// /// Stub IEmbeddingService:返回固定维度(768)的向量,与 DB vector(768) 列匹配。 /// 维度由 embeddinggemma-300m 决定。所有文本返回相同向量(测试场景下足够)。 /// public sealed class StubEmbeddingService : IEmbeddingService { /// 向量维度,匹配 document_chunks.embedding vector(768)。 public const int Dimensions = 768; /// 是否返回空向量(用于测试零分块路径)。 public bool ReturnEmpty { get; init; } private static float[] BuildVector() { var v = new float[Dimensions]; for (var i = 0; i < Dimensions; i++) v[i] = (i % 10) / 10f; return v; } public Task EmbedAsync(string text, CancellationToken ct = default) => Task.FromResult(ReturnEmpty ? [] : BuildVector()); public Task> EmbedBatchAsync(List texts, CancellationToken ct = default) { if (ReturnEmpty) return Task.FromResult(new List()); var vector = BuildVector(); return Task.FromResult(texts.Select(_ => vector).ToList()); } }