diff --git a/src/assets/locale/en/settings.json b/src/assets/locale/en/settings.json index 1ebf81d..eb54db8 100644 --- a/src/assets/locale/en/settings.json +++ b/src/assets/locale/en/settings.json @@ -311,6 +311,11 @@ "label": "Knowledge Base Default File Upload Limit", "placeholder": "Enter default file upload limit (e.g., 10)", "required": "Please enter the default file upload limit" + }, + "noOfRetrievedDocs": { + "label": "Number of Retrieved Documents", + "placeholder": "Enter Number of Retrieved Documents", + "required": "Please enter the number of retrieved documents" } }, "prompt": { diff --git a/src/assets/locale/es/settings.json b/src/assets/locale/es/settings.json index 4a918d5..241df94 100644 --- a/src/assets/locale/es/settings.json +++ b/src/assets/locale/es/settings.json @@ -30,7 +30,7 @@ "sendNotificationAfterIndexing": { "label": "Enviar notificación después de terminar el procesamiento de la base de conocimientos" }, - "generateTitle" :{ + "generateTitle": { "label": "Generar título usando IA" } }, @@ -310,7 +310,13 @@ "totalFilePerKB": { "label": "Límite predeterminado de carga de archivos para la Base de Conocimientos", "placeholder": "Ingrese el límite predeterminado de carga de archivos (ej., 10)", - "required": "Por favor, ingrese el límite predeterminado de carga de archivos" } + "required": "Por favor, ingrese el límite predeterminado de carga de archivos" + }, + "noOfRetrievedDocs": { + "label": "Número de Documentos Recuperados", + "placeholder": "Ingrese el Número de Documentos Recuperados", + "required": "Por favor, ingrese el número de documentos recuperados" + } }, "prompt": { "label": "Configurar el Prompt del RAG", diff --git a/src/assets/locale/fa/settings.json b/src/assets/locale/fa/settings.json index c1e3211..039f222 100644 --- a/src/assets/locale/fa/settings.json +++ b/src/assets/locale/fa/settings.json @@ -30,7 +30,7 @@ "sendNotificationAfterIndexing": { "label": "ارسال نوتیفیکیشن پس از اتمام پردازش پایگاه دانش" }, - "generateTitle" :{ + "generateTitle": { "label": "تولید عنوان با استفاده از هوش مصنوعی" } }, @@ -309,7 +309,13 @@ "totalFilePerKB": { "label": "محدودیت پیش‌فرض آپلود فایل پایگاه دانش", "placeholder": "محدودیت پیش‌فرض آپلود فایل را وارد کنید (مثلاً 10)", - "required": "لطفاً محدودیت پیش‌فرض آپلود فایل را وارد کنید" } + "required": "لطفاً محدودیت پیش‌فرض آپلود فایل را وارد کنید" + }, + "noOfRetrievedDocs": { + "label": "تعداد اسناد بازیابی شده", + "placeholder": "تعداد اسناد بازیابی شده را وارد کنید", + "required": "لطفاً تعداد اسناد بازیابی شده را وارد کنید" + } }, "prompt": { "label": "پیکربندی پرامپت RAG", diff --git a/src/assets/locale/fr/settings.json b/src/assets/locale/fr/settings.json index 680665a..027c1b3 100644 --- a/src/assets/locale/fr/settings.json +++ b/src/assets/locale/fr/settings.json @@ -29,8 +29,8 @@ }, "sendNotificationAfterIndexing": { "label": "Envoyer une notification après avoir terminé le traitement de la base de connaissances" - }, - "generateTitle" :{ + }, + "generateTitle": { "label": "Générer le titre en utilisant l'IA" } }, @@ -310,7 +310,13 @@ "totalFilePerKB": { "label": "Limite par défaut de téléchargement de fichiers pour la base de connaissances", "placeholder": "Entrez la limite par défaut de téléchargement de fichiers (par exemple, 10)", - "required": "Veuillez saisir la limite par défaut de téléchargement de fichiers" } + "required": "Veuillez saisir la limite par défaut de téléchargement de fichiers" + }, + "noOfRetrievedDocs": { + "label": "Nombre de documents récupérés", + "placeholder": "Entrez le nombre de documents récupérés", + "required": "Veuillez saisir le nombre de documents récupérés" + } }, "prompt": { "label": "Configure RAG Prompt", diff --git a/src/assets/locale/it/settings.json b/src/assets/locale/it/settings.json index 2d2716b..af15a71 100644 --- a/src/assets/locale/it/settings.json +++ b/src/assets/locale/it/settings.json @@ -29,8 +29,8 @@ }, "sendNotificationAfterIndexing": { "label": "Inviare notifica dopo aver terminato l'elaborazione della base di conoscenza" - }, - "generateTitle" :{ + }, + "generateTitle": { "label": "Genera titolo utilizzando l'IA" } }, @@ -308,9 +308,15 @@ "required": "Inserisci la Sovrapposizione del Blocco" }, "totalFilePerKB": { - "label": "Limite Predefinito di Caricamento File per la Base di Conoscenza", + "label": "Limite Predefinito di Caricamento File per la Base di Conoscenza", "placeholder": "Inserisci il limite predefinito di caricamento file (es. 10)", - "required": "Inserisci il limite predefinito di caricamento file" } + "required": "Inserisci il limite predefinito di caricamento file" + }, + "noOfRetrievedDocs": { + "label": "Numero di Documenti Recuperati", + "placeholder": "Inserisci il Numero di Documenti Recuperati", + "required": "Inserisci il numero di documenti recuperati" + } }, "prompt": { "label": "Configura il Prompt RAG", diff --git a/src/assets/locale/ja-JP/settings.json b/src/assets/locale/ja-JP/settings.json index 53bd4ad..af5a1f5 100644 --- a/src/assets/locale/ja-JP/settings.json +++ b/src/assets/locale/ja-JP/settings.json @@ -314,6 +314,11 @@ "label": "知識ベースのデフォルトファイルアップロード制限", "placeholder": "デフォルトのファイルアップロード制限を入力してください(例:10)", "required": "デフォルトのファイルアップロード制限を入力してください" + }, + "noOfRetrievedDocs": { + "label": "取得ドキュメント数", + "placeholder": "取得ドキュメント数を入力", + "required": "取得ドキュメント数を入力してください" } }, "prompt": { diff --git a/src/assets/locale/ml/settings.json b/src/assets/locale/ml/settings.json index a6f7abf..b6ebd30 100644 --- a/src/assets/locale/ml/settings.json +++ b/src/assets/locale/ml/settings.json @@ -314,6 +314,11 @@ "label": "വിജ്ഞാനാധാരത്തിന്റെ സ്ഥിര ഫയൽ അപ്‌ലോഡ് പരിധി", "placeholder": "സ്ഥിര ഫയൽ അപ്‌ലോഡ് പരിധി നൽകുക (ഉദാ: 10)", "required": "ദയവായി സ്ഥിര ഫയൽ അപ്‌ലോഡ് പരിധി നൽകുക" + }, + "noOfRetrievedDocs": { + "label": "വീണ്ടെടുത്ത രേഖകളുടെ എണ്ണം", + "placeholder": "വീണ്ടെടുത്ത രേഖകളുടെ എണ്ണം നൽകുക", + "required": "ദയവായി വീണ്ടെടുത്ത രേഖകളുടെ എണ്ണം നൽകുക" } }, "prompt": { diff --git a/src/assets/locale/pt-BR/settings.json b/src/assets/locale/pt-BR/settings.json index 2d16351..ac7e70b 100644 --- a/src/assets/locale/pt-BR/settings.json +++ b/src/assets/locale/pt-BR/settings.json @@ -311,6 +311,11 @@ "label": "Limite Padrão de Upload de Arquivos da Base de Conhecimento", "placeholder": "Digite o limite padrão de upload de arquivos (ex: 10)", "required": "Por favor, insira o limite padrão de upload de arquivos" + }, + "noOfRetrievedDocs": { + "label": "Número de Documentos Recuperados", + "placeholder": "Digite o Número de Documentos Recuperados", + "required": "Por favor, insira o número de documentos recuperados" } }, "prompt": { diff --git a/src/assets/locale/ru/settings.json b/src/assets/locale/ru/settings.json index 2c6353b..0c3c183 100644 --- a/src/assets/locale/ru/settings.json +++ b/src/assets/locale/ru/settings.json @@ -312,7 +312,13 @@ "totalFilePerKB": { "label": "Лимит загрузки файлов по умолчанию для базы знаний", "placeholder": "Введите лимит загрузки файлов по умолчанию (например, 10)", - "required": "Пожалуйста, введите лимит загрузки файлов по умолчанию" } + "required": "Пожалуйста, введите лимит загрузки файлов по умолчанию" + }, + "noOfRetrievedDocs": { + "label": "Количество извлеченных документов", + "placeholder": "Введите количество извлеченных документов", + "required": "Пожалуйста, введите количество извлеченных документов" + } }, "prompt": { "label": "Настройка системной подсказки RAG", diff --git a/src/assets/locale/zh/settings.json b/src/assets/locale/zh/settings.json index abc9150..4c86040 100644 --- a/src/assets/locale/zh/settings.json +++ b/src/assets/locale/zh/settings.json @@ -316,6 +316,11 @@ "label": "知识库默认文件上传限制", "placeholder": "输入默认文件上传限制(例如:10)", "required": "请输入默认文件上传限制" + }, + "noOfRetrievedDocs": { + "label": "检索文档数量", + "placeholder": "输入检索文档数量", + "required": "请输入检索文档数量" } }, "prompt": { diff --git a/src/components/Option/Settings/rag.tsx b/src/components/Option/Settings/rag.tsx index 12d7d97..fd5d576 100644 --- a/src/components/Option/Settings/rag.tsx +++ b/src/components/Option/Settings/rag.tsx @@ -10,7 +10,7 @@ import { } from "~/services/ollama" import { SettingPrompt } from "./prompt" import { useTranslation } from "react-i18next" -import { getTotalFilePerKB } from "@/services/app" +import { getNoOfRetrievedDocs, getTotalFilePerKB } from "@/services/app" import { SidepanelRag } from "./sidepanel-rag" export const RagSettings = () => { @@ -21,20 +21,28 @@ export const RagSettings = () => { const { data: ollamaInfo, status } = useQuery({ queryKey: ["fetchRAGSettings"], queryFn: async () => { - const [allModels, chunkOverlap, chunkSize, defaultEM, totalFilePerKB] = - await Promise.all([ - getAllModels({ returnEmpty: true }), - defaultEmbeddingChunkOverlap(), - defaultEmbeddingChunkSize(), - defaultEmbeddingModelForRag(), - getTotalFilePerKB() - ]) + const [ + allModels, + chunkOverlap, + chunkSize, + defaultEM, + totalFilePerKB, + noOfRetrievedDocs + ] = await Promise.all([ + getAllModels({ returnEmpty: true }), + defaultEmbeddingChunkOverlap(), + defaultEmbeddingChunkSize(), + defaultEmbeddingModelForRag(), + getTotalFilePerKB(), + getNoOfRetrievedDocs() + ]) return { models: allModels, chunkOverlap, chunkSize, defaultEM, - totalFilePerKB + totalFilePerKB, + noOfRetrievedDocs } } }) @@ -45,8 +53,15 @@ export const RagSettings = () => { chunkSize: number overlap: number totalFilePerKB: number + noOfRetrievedDocs: number }) => { - await saveForRag(data.model, data.chunkSize, data.overlap, data.totalFilePerKB) + await saveForRag( + data.model, + data.chunkSize, + data.overlap, + data.totalFilePerKB, + data.noOfRetrievedDocs + ) return true }, onSuccess: () => { @@ -75,14 +90,16 @@ export const RagSettings = () => { model: data.defaultEM, chunkSize: data.chunkSize, overlap: data.chunkOverlap, - totalFilePerKB: data.totalFilePerKB + totalFilePerKB: data.totalFilePerKB, + noOfRetrievedDocs: data.noOfRetrievedDocs }) }} initialValues={{ chunkSize: ollamaInfo?.chunkSize, chunkOverlap: ollamaInfo?.chunkOverlap, defaultEM: ollamaInfo?.defaultEM, - totalFilePerKB: ollamaInfo?.totalFilePerKB + totalFilePerKB: ollamaInfo?.totalFilePerKB, + noOfRetrievedDocs: ollamaInfo?.noOfRetrievedDocs }}> { /> + + + + { ]}> -
- +
diff --git a/src/hooks/useMessageOption.tsx b/src/hooks/useMessageOption.tsx index a362f69..7dd6d6d 100644 --- a/src/hooks/useMessageOption.tsx +++ b/src/hooks/useMessageOption.tsx @@ -32,6 +32,7 @@ import { useStorage } from "@plasmohq/storage/hook" import { useStoreChatModelSettings } from "@/store/model" import { getAllDefaultModelSettings } from "@/services/model-settings" import { pageAssistModel } from "@/models" +import { getNoOfRetrievedDocs } from "@/services/app" export const useMessageOption = () => { const { @@ -680,8 +681,9 @@ export const useMessageOption = () => { const response = await questionOllama.invoke(promptForQuestion) query = response.content.toString() } + const docSize = await getNoOfRetrievedDocs() - const docs = await vectorstore.similaritySearch(query, 4) + const docs = await vectorstore.similaritySearch(query, docSize) const context = formatDocs(docs) const source = docs.map((doc) => { return { diff --git a/src/services/app.ts b/src/services/app.ts index 72cc441..bbae388 100644 --- a/src/services/app.ts +++ b/src/services/app.ts @@ -108,4 +108,13 @@ export const getTotalFilePerKB = async (): Promise => { export const setTotalFilePerKB = async (totalFilePerKB: number): Promise => { await storage.set("totalFilePerKB", totalFilePerKB); -}; \ No newline at end of file +}; + +export const getNoOfRetrievedDocs = async (): Promise => { + const noOfRetrievedDocs = await storage.get("noOfRetrievedDocs"); + return noOfRetrievedDocs || 4 +} + +export const setNoOfRetrievedDocs = async (noOfRetrievedDocs: number): Promise => { + await storage.set("noOfRetrievedDocs", noOfRetrievedDocs); +} \ No newline at end of file diff --git a/src/services/ollama.ts b/src/services/ollama.ts index 6ce83a8..7b0a6a8 100644 --- a/src/services/ollama.ts +++ b/src/services/ollama.ts @@ -2,7 +2,7 @@ import { Storage } from "@plasmohq/storage" import { cleanUrl } from "../libs/clean-url" import { urlRewriteRuntime } from "../libs/runtime" import { getChromeAIModel } from "./chrome" -import { setTotalFilePerKB } from "./app" +import { setNoOfRetrievedDocs, setTotalFilePerKB } from "./app" const storage = new Storage() @@ -326,12 +326,14 @@ export const saveForRag = async ( model: string, chunkSize: number, overlap: number, - totalFilePerKB: number + totalFilePerKB: number, + noOfRetrievedDocs: number ) => { await setDefaultEmbeddingModelForRag(model) await setDefaultEmbeddingChunkSize(chunkSize) await setDefaultEmbeddingChunkOverlap(overlap) await setTotalFilePerKB(totalFilePerKB) + await setNoOfRetrievedDocs(noOfRetrievedDocs) } export const getWebSearchPrompt = async () => {