Add Gemini embedding model for vector storage

70fe5b6e01b17139c6d86cd18ad0458ec4b657d3

Cohee <18619528+Cohee1207@users.noreply.github.com>

3 files changed, +22 -3Showing whitespace changes
public/scripts/extensions/vectors/index.js+11 -0
@@ -63,6 +63,7 @@ const settings = {
6363 ollama_keep: false,
6464 vllm_model: '',
6565 webllm_model: '',
66+ google_model: 'text-embedding-004',
6667 summarize: false,
6768 summarize_sent: false,
6869 summary_source: 'main',
@@ -789,6 +790,9 @@ function getVectorsRequestBody(args = {}) {
789790 case 'webllm':
790791 body.model = extension_settings.vectors.webllm_model;
791792 break;
793+ case 'palm':
794+ body.model = extension_settings.vectors.google_model;
795+ break;
792796 default:
793797 break;
794798 }
@@ -1082,6 +1086,7 @@ function toggleSettings() {
10821086 $('#nomicai_apiKey').toggle(settings.source === 'nomicai');
10831087 $('#webllm_vectorsModel').toggle(settings.source === 'webllm');
10841088 $('#koboldcpp_vectorsModel').toggle(settings.source === 'koboldcpp');
1089+ $('#google_vectorsModel').toggle(settings.source === 'palm');
10851090 if (settings.source === 'webllm') {
10861091 loadWebLlmModels();
10871092 }
@@ -1738,6 +1743,12 @@ jQuery(async () => {
17381743 toastr.success('WebLLM model loaded');
17391744 });
17401745
1746+ $('#vectors_google_model').val(settings.google_model).on('input', () => {
1747+ settings.google_model = String($('#vectors_google_model').val());
1748+ Object.assign(extension_settings.vectors, settings);
1749+ saveSettingsDebounced();
1750+ });
1751+
17411752 $('#api_key_nomicai').toggleClass('success', !!secret_state[SECRET_KEYS.NOMICAI]);
17421753
17431754 toggleSettings();
public/scripts/extensions/vectors/settings.html+10 -1
@@ -120,7 +120,16 @@
120120 Hint: Set the URL in the API connection settings.
121121 </i>
122122 </div>
123-
123+ <div class="flex-container flexFlowColumn" id="google_vectorsModel">
124+ <label for="vectors_google_model" data-i18n="Vectorization Model">
125+ Vectorization Model
126+ </label>
127+ <select id="vectors_google_model" class="text_pole">
128+ <option value="gemini-embedding-exp-03-07">gemini-embedding-exp-03-07</option>
129+ <option value="text-embedding-004">text-embedding-004</option>
130+ <option value="embedding-001">embedding-001</option>
131+ </select>
132+ </div>
124133 <div class="flex-container alignItemsCenter" id="nomicai_apiKey">
125134 <label for="api_key_nomicai" class="flex1">
126135 <span data-i18n="NomicAI API Key">NomicAI API Key</span>
src/endpoints/vectors.js+1 -2
@@ -179,8 +179,7 @@ function getSourceSettings(source, request) {
179179 };
180180 case 'palm':
181181 return {
182- // TODO: Add support for multiple models
182+ model: String(request.body.model || 'text-embedding-004'),
183- model: 'text-embedding-004',
184183 };
185184 case 'mistral':
186185 return {