Skip to content

Commit 278cec0

Browse files
committed
feat: new gemini embedding
1 parent 8a4bb80 commit 278cec0

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

src/ax/ai/google-gemini/api.ts

+2
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,8 @@ class AxAIGoogleGeminiImpl
391391
requests: req.texts.map((text) => ({
392392
model: 'models/' + model,
393393
content: { parts: [{ text }] },
394+
outputDimensionality: this.config.dimensions,
395+
taskType: this.config.embedType,
394396
})),
395397
}
396398
}

src/ax/ai/google-gemini/types.ts

+14
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export enum AxAIGoogleGeminiModel {
1515
}
1616

1717
export enum AxAIGoogleGeminiEmbedModel {
18+
GeminiEmbedding = 'gemini-embedding-exp-03-07',
1819
TextEmbedding004 = 'text-embedding-004',
1920
TextEmbedding005 = 'text-embedding-005',
2021
}
@@ -34,6 +35,17 @@ export enum AxAIGoogleGeminiSafetyThreshold {
3435
BlockDefault = 'HARM_BLOCK_THRESHOLD_UNSPECIFIED',
3536
}
3637

38+
export enum AxAIGoogleGeminiEmbedTypes {
39+
SemanticSimilarity = 'SEMANTIC_SIMILARITY',
40+
Classification = 'CLASSIFICATION',
41+
Clustering = 'CLUSTERING',
42+
RetrievalDocument = 'RETRIEVAL_DOCUMENT',
43+
RetrievalQuery = 'RETRIEVAL_QUERY',
44+
QuestionAnswering = 'QUESTION_ANSWERING',
45+
FactVerification = 'FACT_VERIFICATION',
46+
CodeRetrievalQuery = 'CODE_RETRIEVAL_QUERY',
47+
}
48+
3749
export type AxAIGoogleGeminiContent =
3850
| {
3951
role: 'user'
@@ -169,6 +181,8 @@ export type AxAIGoogleGeminiConfig = AxModelConfig & {
169181
model: AxAIGoogleGeminiModel
170182
embedModel?: AxAIGoogleGeminiEmbedModel
171183
safetySettings?: AxAIGoogleGeminiSafetySettings
184+
embedType?: AxAIGoogleGeminiEmbedTypes
185+
dimensions?: number
172186
}
173187

174188
/**

src/ax/ai/openai/api.ts

+3-5
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ class AxAIOpenAIImpl<TModel, TEmbedModel>
102102
{
103103
constructor(
104104
private readonly config: Readonly<AxAIOpenAIConfig<TModel, TEmbedModel>>,
105-
private streamingUsage: boolean,
106-
private dimensions?: number
105+
private streamingUsage: boolean
107106
) {}
108107

109108
getModelConfig(): AxModelConfig {
@@ -212,7 +211,7 @@ class AxAIOpenAIImpl<TModel, TEmbedModel>
212211
const reqValue = {
213212
model: model,
214213
input: req.texts,
215-
dimensions: this.dimensions,
214+
dimensions: this.config.dimensions,
216215
}
217216

218217
return [apiConfig, reqValue]
@@ -449,8 +448,7 @@ export class AxAIOpenAIBase<TModel, TEmbedModel> extends AxBaseAI<
449448

450449
const aiImpl = new AxAIOpenAIImpl<TModel, TEmbedModel>(
451450
config,
452-
options?.streamingUsage ?? true,
453-
config.dimensions
451+
options?.streamingUsage ?? true
454452
)
455453

456454
super(aiImpl, {

0 commit comments

Comments
 (0)