From 8c5a30db9da64e94033a138e173c846985ce999d Mon Sep 17 00:00:00 2001 From: Timothy Carambat <rambat1010@gmail.com> Date: Wed, 22 May 2024 10:53:49 -0500 Subject: [PATCH] Support dynamic context length - VoyageAI (#1489) --- .../GeneralSettings/LLMPreference/index.jsx | 9 +++++---- server/utils/EmbeddingEngines/voyageAi/index.js | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx b/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx index 5c4b0b2f0..70d1d135a 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 b25d3208d..fe2a39643 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) { -- GitLab