mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-14 04:16:06 +00:00
fix(memory): update Gemini embedding to gemini-embedding-001 with dimension support (#10)
- Replace deprecated text-embedding-004 with gemini-embedding-001 - Add WithDimensions() to OpenAIEmbeddingProvider for dimension truncation - Pass dimensions=1536 for Gemini to match pgvector column size - Allow config override of Gemini embedding model via embedding_model
This commit is contained in:
1 parent
1b1ca2214a
commit
4db5259581
2 files changed
+20
-5
No files matched your search
@@ -237,7 +237,12 @@ func createEmbeddingProvider(name string, cfg *config.Config, memCfg *config.Mem
|
||||
if cfg.Providers.Gemini.APIKey == "" {
|
||||
return nil
|
||||
}
|
||||
return memory.NewOpenAIEmbeddingProvider("gemini", cfg.Providers.Gemini.APIKey, "https://generativelanguage.googleapis.com/v1beta/openai", "text-embedding-004")
|
||||
geminiModel := "gemini-embedding-001"
|
||||
if memCfg != nil && memCfg.EmbeddingModel != "" {
|
||||
geminiModel = memCfg.EmbeddingModel
|
||||
}
|
||||
return memory.NewOpenAIEmbeddingProvider("gemini", cfg.Providers.Gemini.APIKey, "https://generativelanguage.googleapis.com/v1beta/openai", geminiModel).
|
||||
WithDimensions(1536)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -25,10 +25,11 @@ type EmbeddingProvider interface {
|
||||
// OpenAIEmbeddingProvider uses the OpenAI-compatible embedding API.
|
||||
// Works with OpenAI, OpenRouter, and any compatible endpoint.
|
||||
type OpenAIEmbeddingProvider struct {
|
||||
name string
|
||||
model string
|
||||
apiKey string
|
||||
apiURL string
|
||||
name string
|
||||
model string
|
||||
apiKey string
|
||||
apiURL string
|
||||
dimensions int // optional: truncate output to this many dimensions (0 = use model default)
|
||||
}
|
||||
|
||||
// NewOpenAIEmbeddingProvider creates a provider for OpenAI-compatible embedding APIs.
|
||||
@@ -48,6 +49,12 @@ func NewOpenAIEmbeddingProvider(name, apiKey, apiURL, model string) *OpenAIEmbed
|
||||
}
|
||||
}
|
||||
|
||||
// WithDimensions sets the output dimensions for models that support dimension truncation.
|
||||
func (p *OpenAIEmbeddingProvider) WithDimensions(d int) *OpenAIEmbeddingProvider {
|
||||
p.dimensions = d
|
||||
return p
|
||||
}
|
||||
|
||||
func (p *OpenAIEmbeddingProvider) Name() string { return p.name }
|
||||
func (p *OpenAIEmbeddingProvider) Model() string { return p.model }
|
||||
|
||||
@@ -56,6 +63,9 @@ func (p *OpenAIEmbeddingProvider) Embed(ctx context.Context, texts []string) ([]
|
||||
"input": texts,
|
||||
"model": p.model,
|
||||
}
|
||||
if p.dimensions > 0 {
|
||||
reqBody["dimensions"] = p.dimensions
|
||||
}
|
||||
|
||||
bodyJSON, err := json.Marshal(reqBody)
|
||||
if err != nil {
|
||||
|
||||
Reference in new issue
Block a user