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 = {
63 ollama_keep: false,63 ollama_keep: false,
64 vllm_model: '',64 vllm_model: '',
65 webllm_model: '',65 webllm_model: '',
66 google_model: 'text-embedding-004',
66 summarize: false,67 summarize: false,
67 summarize_sent: false,68 summarize_sent: false,
68 summary_source: 'main',69 summary_source: 'main',
@@ -789,6 +790,9 @@ function getVectorsRequestBody(args = {}) {
789 case 'webllm':790 case 'webllm':
790 body.model = extension_settings.vectors.webllm_model;791 body.model = extension_settings.vectors.webllm_model;
791 break;792 break;
793 case 'palm':
794 body.model = extension_settings.vectors.google_model;
795 break;
792 default:796 default:
793 break;797 break;
794 }798 }
@@ -1082,6 +1086,7 @@ function toggleSettings() {
1082 $('#nomicai_apiKey').toggle(settings.source === 'nomicai');1086 $('#nomicai_apiKey').toggle(settings.source === 'nomicai');
1083 $('#webllm_vectorsModel').toggle(settings.source === 'webllm');1087 $('#webllm_vectorsModel').toggle(settings.source === 'webllm');
1084 $('#koboldcpp_vectorsModel').toggle(settings.source === 'koboldcpp');1088 $('#koboldcpp_vectorsModel').toggle(settings.source === 'koboldcpp');
1089 $('#google_vectorsModel').toggle(settings.source === 'palm');
1085 if (settings.source === 'webllm') {1090 if (settings.source === 'webllm') {
1086 loadWebLlmModels();1091 loadWebLlmModels();
1087 }1092 }
@@ -1738,6 +1743,12 @@ jQuery(async () => {
1738 toastr.success('WebLLM model loaded');1743 toastr.success('WebLLM model loaded');
1739 });1744 });
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
1741 $('#api_key_nomicai').toggleClass('success', !!secret_state[SECRET_KEYS.NOMICAI]);1752 $('#api_key_nomicai').toggleClass('success', !!secret_state[SECRET_KEYS.NOMICAI]);
17421753
1743 toggleSettings();1754 toggleSettings();
public/scripts/extensions/vectors/settings.html+10 -1
@@ -120,7 +120,16 @@
120 Hint: Set the URL in the API connection settings.120 Hint: Set the URL in the API connection settings.
121 </i>121 </i>
122 </div>122 </div>
123123 <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>
124 <div class="flex-container alignItemsCenter" id="nomicai_apiKey">133 <div class="flex-container alignItemsCenter" id="nomicai_apiKey">
125 <label for="api_key_nomicai" class="flex1">134 <label for="api_key_nomicai" class="flex1">
126 <span data-i18n="NomicAI API Key">NomicAI API Key</span>135 <span data-i18n="NomicAI API Key">NomicAI API Key</span>
src/endpoints/vectors.js+1 -2
@@ -179,8 +179,7 @@ function getSourceSettings(source, request) {
179 };179 };
180 case 'palm':180 case 'palm':
181 return {181 return {
182 // TODO: Add support for multiple models182 model: String(request.body.model || 'text-embedding-004'),
183 model: 'text-embedding-004',
184 };183 };
185 case 'mistral':184 case 'mistral':
186 return {185 return {