diff --git a/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx b/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx index 5c4b0b2f04f6da030473f55b6e0528a1fd82f731..70d1d135abbd3a7dea73bf62381cb6ce0fe65f33 100644 --- a/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx +++ b/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx @@ -394,16 +394,17 @@ export default function GeneralLLMPreference() { > <div className="flex gap-x-4 items-center"> <img - src={selectedLLMObject.logo} - alt={`${selectedLLMObject.name} logo`} + src={selectedLLMObject?.logo || AnythingLLMIcon} + alt={`${selectedLLMObject?.name} logo`} className="w-10 h-10 rounded-md" /> <div className="flex flex-col text-left"> <div className="text-sm font-semibold text-white"> - {selectedLLMObject.name} + {selectedLLMObject?.name || "None selected"} </div> <div className="mt-1 text-xs text-[#D2D5DB]"> - {selectedLLMObject.description} + {selectedLLMObject?.description || + "You need to select an LLM"} </div> </div> </div> diff --git a/server/utils/EmbeddingEngines/voyageAi/index.js b/server/utils/EmbeddingEngines/voyageAi/index.js index b25d3208d5240282bc08c0d8d344f360390ccc40..fe2a3964341350c1c197da19ddcc0b000a5236cf 100644 --- a/server/utils/EmbeddingEngines/voyageAi/index.js +++ b/server/utils/EmbeddingEngines/voyageAi/index.js @@ -15,7 +15,22 @@ class VoyageAiEmbedder { // Limit of how many strings we can process in a single pass to stay with resource or network limits this.batchSize = 128; // Voyage AI's limit per request is 128 https://docs.voyageai.com/docs/rate-limits#use-larger-batches - this.embeddingMaxChunkLength = 4000; // https://docs.voyageai.com/docs/embeddings - assume a token is roughly 4 letters with some padding + this.embeddingMaxChunkLength = this.#getMaxEmbeddingLength(); + } + + // https://docs.voyageai.com/docs/embeddings + #getMaxEmbeddingLength() { + switch (this.model) { + case "voyage-large-2-instruct": + case "voyage-law-2": + case "voyage-code-2": + case "voyage-large-2": + return 16_000; + case "voyage-2": + return 4_000; + default: + return 4_000; + } } async embedTextInput(textInput) {