Skip to content

Commit ab99ee0

Browse files
committed
feature: reranker settings added to dashboard
1 parent 5a18771 commit ab99ee0

File tree

4 files changed

+63
-35
lines changed

4 files changed

+63
-35
lines changed

frontends/dashboard/src/components/ApiKeys.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ export const ApiKeys = () => {
204204
];
205205
return createSolidTable({
206206
columns: columns,
207-
data: userApiKeysQuery.data as ApiKeyRespBody[],
207+
data: userApiKeysQuery.data,
208208
getCoreRowModel: getCoreRowModel(),
209209
});
210210
});

frontends/dashboard/src/components/NewDatasetModal.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ export const NewDatasetModal = (props: NewDatasetModalProps) => {
348348
body={
349349
<FaRegularCircleQuestion class="h-3 w-3 text-black" />
350350
}
351-
tooltipText="Dense vector models are used for semantic search. jina-base-en provides the best balance of latency and relevance quality. Only change this if you have a specific requirement. Custom models are supported on the enterprise plan."
351+
tooltipText="Reranker Model for re-ranking search results."
352352
/>
353353
</label>
354354
<select
@@ -372,8 +372,7 @@ export const NewDatasetModal = (props: NewDatasetModalProps) => {
372372
setServerConfig((prev) => {
373373
return {
374374
...prev,
375-
RERANKER_MODEL_NAME: selectedModel?.name,
376-
RERANKER_BASE_URL: selectedModel?.url
375+
RERANKER_MODEL_NAME: selectedModel?.id,
377376
};
378377
});
379378
}}

frontends/dashboard/src/components/dataset-settings/GeneralSettings.tsx

Lines changed: 59 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
availableEmbeddingModels,
88
availableRerankerModels,
99
} from "shared/types";
10-
import { FaRegularCircleQuestion } from "solid-icons/fa";
1110

1211
export const GeneralServerSettings = (props: {
1312
serverConfig: Accessor<DatasetConfig>;
@@ -102,77 +101,106 @@ export const GeneralServerSettings = (props: {
102101
for="embeddingSize"
103102
class="mr-2 block text-sm font-medium leading-6"
104103
>
105-
Distance Metric
104+
Reranker Model
106105
</label>
107106
<Tooltip
108107
body={<AiOutlineInfoCircle />}
109-
tooltipText="Distance Metric is only editable on creation"
108+
tooltipText="Reranker Model for re-ranking search results."
110109
/>
111110
</div>
112111
<select
113112
id="embeddingSize"
114113
aria-readonly
115114
title="Embedding Model is only editable on creation"
116-
disabled
117115
name="embeddingSize"
118-
class="col-span-2 block w-full cursor-not-allowed rounded-md border-[0.5px] border-neutral-300 bg-white px-3 py-1.5 shadow-sm placeholder:text-neutral-400 focus:outline-magenta-500 sm:text-sm sm:leading-6"
116+
class="col-span-2 block w-full rounded-md border-[0.5px] border-neutral-300 bg-white px-3 py-1.5 shadow-sm placeholder:text-neutral-400 focus:outline-magenta-500 sm:text-sm sm:leading-6"
119117
value={
120-
availableDistanceMetrics.find(
118+
availableRerankerModels.find(
121119
(metric) =>
122-
metric.id === props.serverConfig().DISTANCE_METRIC,
123-
)?.name ?? availableEmbeddingModels[0].name
120+
metric.id === props.serverConfig().RERANKER_MODEL_NAME,
121+
)?.name ?? availableRerankerModels[0].name
124122
}
123+
onChange={(e) => {
124+
const selectedModel = availableRerankerModels.find(
125+
(model) => model.name === e.currentTarget.value,
126+
);
127+
128+
const url = selectedModel?.url ?? "";
129+
130+
props.setServerConfig((prev) => {
131+
return {
132+
...prev,
133+
RERANKER_MODEL_NAME: selectedModel?.id,
134+
RERANKER_BASE_URL: url,
135+
};
136+
});
137+
}}
125138
>
126-
<For each={availableDistanceMetrics}>
139+
<For each={availableRerankerModels}>
127140
{(metric) => (
128141
<option value={metric.name}>{metric.name}</option>
129142
)}
130143
</For>
131144
</select>
132145
</div>
146+
<div class="col-span-4 sm:col-span-2">
147+
<div class="flex flex-row items-center gap-2">
148+
<label
149+
for="rerankerApiKey"
150+
class="block text-sm font-medium leading-6"
151+
>
152+
Cohere API Key (for reranker)
153+
</label>
154+
<Tooltip
155+
body={<AiOutlineInfoCircle />}
156+
tooltipText="Sets the API key for the Cohere reranker if you choose to use it."
157+
/>
158+
</div>
159+
<input
160+
type="text"
161+
name="rerankerApiKey"
162+
id="linesBeforeShowMore"
163+
class="block w-full rounded-md border-[0.5px] border-neutral-300 px-3 py-1.5 shadow-sm placeholder:text-neutral-400 focus:outline-magenta-500 sm:text-sm sm:leading-6"
164+
value={props.serverConfig().RERANKER_API_KEY ?? ""}
165+
onChange={(e) =>
166+
props.setServerConfig((prev) => {
167+
return {
168+
...prev,
169+
RERANKER_API_KEY: e.currentTarget.value,
170+
};
171+
})
172+
}
173+
/>
174+
</div>
133175

134176
<div class="col-span-4 space-y-1 sm:col-span-2">
135177
<div class="flex items-center">
136178
<label
137179
for="embeddingSize"
138180
class="mr-2 block text-sm font-medium leading-6"
139181
>
140-
Reranker Model
182+
Distance Metric
141183
</label>
142184
<Tooltip
143185
body={<AiOutlineInfoCircle />}
144-
tooltipText="Reranker Model for re-ranking search results."
186+
tooltipText="Distance Metric is only editable on creation"
145187
/>
146188
</div>
147189
<select
148190
id="embeddingSize"
149191
aria-readonly
150192
title="Embedding Model is only editable on creation"
193+
disabled
151194
name="embeddingSize"
152-
class="col-span-2 block w-full rounded-md border-[0.5px] border-neutral-300 bg-white px-3 py-1.5 shadow-sm placeholder:text-neutral-400 focus:outline-magenta-500 sm:text-sm sm:leading-6"
195+
class="col-span-2 block w-full cursor-not-allowed rounded-md border-[0.5px] border-neutral-300 bg-white px-3 py-1.5 shadow-sm placeholder:text-neutral-400 focus:outline-magenta-500 sm:text-sm sm:leading-6"
153196
value={
154-
availableRerankerModels.find(
197+
availableDistanceMetrics.find(
155198
(metric) =>
156-
metric.id === props.serverConfig().RERANKER_MODEL_NAME,
157-
)?.name ?? availableRerankerModels[0].name
199+
metric.id === props.serverConfig().DISTANCE_METRIC,
200+
)?.name ?? availableEmbeddingModels[0].name
158201
}
159-
onChange={(e) => {
160-
const selectedModel =
161-
availableRerankerModels.find(
162-
(model) =>
163-
model.name === e.currentTarget.value,
164-
);
165-
166-
props.setServerConfig((prev) => {
167-
return {
168-
...prev,
169-
RERANKER_MODEL_NAME: selectedModel?.name,
170-
RERANKER_BASE_URL: selectedModel?.url
171-
};
172-
});
173-
}}
174202
>
175-
<For each={availableRerankerModels}>
203+
<For each={availableDistanceMetrics}>
176204
{(metric) => (
177205
<option value={metric.name}>{metric.name}</option>
178206
)}

frontends/dashboard/src/components/dataset-settings/LegacySettingsWrapper.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export type DatasetConfig = Exclude<
1818
"PUBLIC_DATASET"
1919
> & {
2020
LLM_API_KEY?: string | null;
21+
RERANKER_API_KEY?: string | null;
2122
PUBLIC_DATASET?: {
2223
enabled: boolean;
2324
api_key: string;

0 commit comments

Comments
 (0)