* Gemini does NOT auto-normalize embeddings when `outputDimensionality` is set below the * native 3072 dimension on `gemini-embedding-001`. Manually L2-normalize so cosine and * inner-product similarity work correctly.
(vector: number[])
| 150 | * inner-product similarity work correctly. |
| 151 | */ |
| 152 | function l2Normalize(vector: number[]): number[] { |
| 153 | let sumSquares = 0 |
| 154 | for (const v of vector) sumSquares += v * v |
| 155 | const norm = Math.sqrt(sumSquares) |
| 156 | if (norm === 0) return vector |
| 157 | return vector.map((v) => v / norm) |
| 158 | } |
| 159 | |
| 160 | function buildGeminiProvider(modelName: string, apiKey: string): ResolvedProvider['buildRequest'] { |
| 161 | return (inputs, inputType) => ({ |
no outgoing calls
no test coverage detected