|
7 | 7 | availableEmbeddingModels, |
8 | 8 | availableRerankerModels, |
9 | 9 | } from "shared/types"; |
10 | | -import { FaRegularCircleQuestion } from "solid-icons/fa"; |
11 | 10 |
|
12 | 11 | export const GeneralServerSettings = (props: { |
13 | 12 | serverConfig: Accessor<DatasetConfig>; |
@@ -102,77 +101,106 @@ export const GeneralServerSettings = (props: { |
102 | 101 | for="embeddingSize" |
103 | 102 | class="mr-2 block text-sm font-medium leading-6" |
104 | 103 | > |
105 | | - Distance Metric |
| 104 | + Reranker Model |
106 | 105 | </label> |
107 | 106 | <Tooltip |
108 | 107 | body={<AiOutlineInfoCircle />} |
109 | | - tooltipText="Distance Metric is only editable on creation" |
| 108 | + tooltipText="Reranker Model for re-ranking search results." |
110 | 109 | /> |
111 | 110 | </div> |
112 | 111 | <select |
113 | 112 | id="embeddingSize" |
114 | 113 | aria-readonly |
115 | 114 | title="Embedding Model is only editable on creation" |
116 | | - disabled |
117 | 115 | 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" |
119 | 117 | value={ |
120 | | - availableDistanceMetrics.find( |
| 118 | + availableRerankerModels.find( |
121 | 119 | (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 |
124 | 122 | } |
| 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 | + }} |
125 | 138 | > |
126 | | - <For each={availableDistanceMetrics}> |
| 139 | + <For each={availableRerankerModels}> |
127 | 140 | {(metric) => ( |
128 | 141 | <option value={metric.name}>{metric.name}</option> |
129 | 142 | )} |
130 | 143 | </For> |
131 | 144 | </select> |
132 | 145 | </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> |
133 | 175 |
|
134 | 176 | <div class="col-span-4 space-y-1 sm:col-span-2"> |
135 | 177 | <div class="flex items-center"> |
136 | 178 | <label |
137 | 179 | for="embeddingSize" |
138 | 180 | class="mr-2 block text-sm font-medium leading-6" |
139 | 181 | > |
140 | | - Reranker Model |
| 182 | + Distance Metric |
141 | 183 | </label> |
142 | 184 | <Tooltip |
143 | 185 | body={<AiOutlineInfoCircle />} |
144 | | - tooltipText="Reranker Model for re-ranking search results." |
| 186 | + tooltipText="Distance Metric is only editable on creation" |
145 | 187 | /> |
146 | 188 | </div> |
147 | 189 | <select |
148 | 190 | id="embeddingSize" |
149 | 191 | aria-readonly |
150 | 192 | title="Embedding Model is only editable on creation" |
| 193 | + disabled |
151 | 194 | 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" |
153 | 196 | value={ |
154 | | - availableRerankerModels.find( |
| 197 | + availableDistanceMetrics.find( |
155 | 198 | (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 |
158 | 201 | } |
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 | | - }} |
174 | 202 | > |
175 | | - <For each={availableRerankerModels}> |
| 203 | + <For each={availableDistanceMetrics}> |
176 | 204 | {(metric) => ( |
177 | 205 | <option value={metric.name}>{metric.name}</option> |
178 | 206 | )} |
|
0 commit comments