Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit 31fe3ce

Browse files
committed
Add presets. Hide a couple more settings
1 parent 36930dd commit 31fe3ce

File tree

21 files changed

+376
-210
lines changed

21 files changed

+376
-210
lines changed

app/controllers/discourse_ai/admin/ai_embeddings_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def index
2323
EmbeddingDefinition.tokenizer_names.map { |tn|
2424
{ id: tn, name: tn.split("::").last }
2525
},
26+
presets: EmbeddingDefinition.presets,
2627
},
2728
}
2829
end

app/models/embedding_definition.rb

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,91 @@ def tokenizer_names
2929
def provider_params
3030
{ open_ai: { model_name: :text } }
3131
end
32+
33+
def presets
34+
@presets ||=
35+
begin
36+
[
37+
{
38+
preset_id: "bge-large-en",
39+
display_name: "bge-large-en",
40+
dimensions: 1024,
41+
max_sequence_length: 512,
42+
pg_function: "<#>",
43+
tokenizer_class: "DiscourseAi::Tokenizer::BgeLargeEnTokenizer",
44+
provider: HUGGING_FACE,
45+
},
46+
{
47+
preset_id: "bge-m3",
48+
display_name: "bge-m3",
49+
dimensions: 1024,
50+
max_sequence_length: 8192,
51+
pg_function: "<#>",
52+
tokenizer_class: "DiscourseAi::Tokenizer::BgeM3Tokenizer",
53+
provider: HUGGING_FACE,
54+
},
55+
{
56+
preset_id: "gemini-embedding-001",
57+
display_name: "Gemini's embedding-001",
58+
dimensions: 768,
59+
max_sequence_length: 1536,
60+
pg_function: "<=>",
61+
url:
62+
"https://generativelanguage.googleapis.com/v1beta/models/embedding-001:embedContent",
63+
tokenizer_class: "DiscourseAi::Tokenizer::OpenAiTokenizer",
64+
provider: GOOGLE,
65+
},
66+
{
67+
preset_id: "multilingual-e5-large",
68+
display_name: "multilingual-e5-large",
69+
dimensions: 1024,
70+
max_sequence_length: 512,
71+
pg_function: "<=>",
72+
tokenizer_class: "DiscourseAi::Tokenizer::MultilingualE5LargeTokenizer",
73+
provider: HUGGING_FACE,
74+
},
75+
{
76+
preset_id: "text-embedding-3-large",
77+
display_name: "OpenAI's text-embedding-3-large",
78+
dimensions: 2000,
79+
max_sequence_length: 8191,
80+
pg_function: "<=>",
81+
tokenizer_class: "DiscourseAi::Tokenizer::OpenAiTokenizer",
82+
url: "https://api.openai.com/v1/embeddings",
83+
provider: OPEN_AI,
84+
provider_params: {
85+
model_name: "text-embedding-3-large",
86+
},
87+
},
88+
{
89+
preset_id: "text-embedding-3-small",
90+
display_name: "OpenAI's text-embedding-3-small",
91+
dimensions: 1536,
92+
max_sequence_length: 8191,
93+
pg_function: "<=>",
94+
tokenizer_class: "DiscourseAi::Tokenizer::OpenAiTokenizer",
95+
url: "https://api.openai.com/v1/embeddings",
96+
provider: OPEN_AI,
97+
provider_params: {
98+
model_name: "text-embedding-3-small",
99+
},
100+
},
101+
{
102+
preset_id: "text-embedding-ada-002",
103+
display_name: "OpenAI's text-embedding-ada-002",
104+
dimensions: 1536,
105+
max_sequence_length: 8191,
106+
pg_function: "<=>",
107+
tokenizer_class: "DiscourseAi::Tokenizer::OpenAiTokenizer",
108+
url: "https://api.openai.com/v1/embeddings",
109+
provider: OPEN_AI,
110+
provider_params: {
111+
model_name: "text-embedding-ada-002",
112+
},
113+
},
114+
]
115+
end
116+
end
32117
end
33118

34119
validates :provider, presence: true, inclusion: provider_names

app/serializers/ai_embedding_definition_serializer.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
class AiEmbeddingDefinitionSerializer < ApplicationSerializer
44
root "ai_embedding"
55

6-
attributes :display_name,
6+
attributes :id,
7+
:display_name,
78
:dimensions,
89
:max_sequence_length,
910
:pg_function,

assets/javascripts/discourse/admin/models/ai-embedding.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,9 @@ export default class AiEmbedding extends RestModel {
3030
data: { ai_embedding: this.createProperties() },
3131
});
3232
}
33+
34+
workingCopy() {
35+
const attrs = this.createProperties();
36+
return this.store.createRecord("ai-embedding", attrs);
37+
}
3338
}

0 commit comments

Comments
 (0)