PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.25
MxChat – AI Chatbot & Content Generation for WordPress v3.2.25
3.2.25 3.2.24 3.2.23 3.2.22 3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 All 156 releases
← All changes | admin/class-pinecone-manager.php +17 -26 3.2.23 → 3.2.25 View file →
@@ -284,8 +284,17 @@
284 284 * ADDED 2.6.1
285 285 */
286 286 private function mxchat_get_search_embedding($search_query) {
287 287 $options = get_option('mxchat_options', array());
288 +
289 + // Custom Provider embeddings first, as everywhere else (plan 418afd): the
290 + // records were embedded with the custom model, so the query must be too.
291 + // A failure returns null, which sends the caller to its text search.
292 + if (isset($options['custom_provider_for_embeddings']) && $options['custom_provider_for_embeddings'] === 'on') {
293 + $custom = MxChat_Utils::generate_embedding_custom($search_query, $options);
294 + return is_array($custom) ? $custom : null;
295 + }
296 +
288 297 $embedding_model = $options['embedding_model'] ?? 'text-embedding-ada-002';
289 298
290 299 // Determine which API to use based on model
291 300 if (strpos($embedding_model, 'voyage-') === 0) {
@@ -984,36 +993,18 @@
984 993 * Get embedding dimensions based on the selected model
985 994 * ADD THIS NEW FUNCTION
986 995 */
987 996 private function mxchat_get_embedding_dimensions() {
997 + // One answer for every caller (plan 418afd): the size of the model the
998 + // site really embeds with, Custom Provider included. If a custom
999 + // model cannot be asked, the dropdown's number is the old behaviour
1000 + // and still better than no listing at all.
988 1001 $options = get_option('mxchat_options', array());
989 - $selected_model = $options['embedding_model'] ?? 'text-embedding-ada-002';
990 -
991 - // Define dimensions for different models
992 - $model_dimensions = array(
993 - 'text-embedding-ada-002' => 1536,
994 - 'text-embedding-3-small' => 1536,
995 - 'text-embedding-3-large' => 3072,
996 - 'voyage-2' => 1024,
997 - 'voyage-large-2' => 1536,
998 - 'voyage-3-large' => 2048,
999 - 'gemini-embedding-001' => 1536,
1000 - );
1001 -
1002 - // Check if it's a voyage model with custom dimensions
1003 - if (strpos($selected_model, 'voyage-3-large') === 0) {
1004 - $custom_dimensions = $options['voyage_output_dimension'] ?? 2048;
1005 - return intval($custom_dimensions);
1002 + $dimension = MxChat_Utils::expected_embedding_dimension($options);
1003 + if (!is_wp_error($dimension) && (int) $dimension > 0) {
1004 + return (int) $dimension;
1006 1005 }
1007 -
1008 - // Check if it's a gemini model with custom dimensions
1009 - if (strpos($selected_model, 'gemini-embedding') === 0) {
1010 - $custom_dimensions = $options['gemini_output_dimension'] ?? 1536;
1011 - return intval($custom_dimensions);
1012 - }
1013 -
1014 - // Return known dimensions or default to 1536
1015 - return $model_dimensions[$selected_model] ?? 1536;
1006 + return MxChat_Utils::standard_embedding_dimension($options);
1016 1007 }
1017 1008
1018 1009 /**
1019 1010 * Generate random unit vector with correct dimensions