Skip to content

Commit 7072a9a

Browse files
committed
feat: 增加知识库参数设置,包括分块大小、重叠大小、检索数量、相似度阈值
1 parent 6be3680 commit 7072a9a

File tree

15 files changed

+317
-34
lines changed

15 files changed

+317
-34
lines changed

messages/en.json

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,23 @@
2727
"settings": {
2828
"rag": {
2929
"title": "Knowledge Base",
30-
"desc": "Here, you can configure knowledge base related settings, knowledge base based on RAG technology, through embedding models to convert text into vectors, then through vector search to achieve intelligent search and intelligent answers."
30+
"desc": "Here, you can configure knowledge base related settings, knowledge base based on RAG technology, through embedding models to convert text into vectors, then through vector search to achieve intelligent search and intelligent answers.",
31+
"settingsTitle": "Parameter Settings",
32+
"settingsDesc": "By adjusting parameters, you can more precisely control the retrieval effect of the knowledge base.",
33+
"deleteVectorConfirm": "Are you sure you want to clear the knowledge base?",
34+
"deleteVectorSuccess": "Knowledge base cleared successfully",
35+
"enable": "Enable knowledge base search",
36+
"enableDesc": "Enabling it will make AI search your notes when answering questions, providing more accurate answers.",
37+
"chunkSize": "Chunk size",
38+
"chunkSizeDesc": "The maximum number of characters for text chunking. Larger chunks may contain more context, but will increase vector calculation complexity.",
39+
"chunkOverlap": "Chunk overlap",
40+
"chunkOverlapDesc": "The number of overlapping characters between text chunks. Larger overlaps can maintain context continuity.",
41+
"resultCount": "Result count",
42+
"resultCountDesc": "The number of related documents returned when searching. The more documents, the more information provided, but may also introduce noise.",
43+
"similarityThreshold": "Similarity threshold",
44+
"similarityThresholdDesc": "The minimum similarity threshold between documents and queries. Only documents exceeding this threshold will be returned. The value range is 0.0-1.0, the higher the threshold, the stricter the requirement.",
45+
"resetToDefaults": "Reset to defaults",
46+
"deleteVector": "Clear knowledge base"
3147
},
3248
"editor": {
3349
"title": "Markdown Editor",

messages/ja.json

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,23 @@
2525
"settings": {
2626
"rag": {
2727
"title": "知識庫",
28-
"desc": "ここでは、知識庫に関する設定を構成できます。知識庫は、RAG技術に基づいて、埋め込みモデルを使用してテキストをベクトルに変換し、ベクトル検索を介して智能的な検索と智能的な回答を達成します。"
28+
"desc": "ここでは、知識庫に関する設定を構成できます。知識庫は、RAG技術に基づいて、埋め込みモデルを使用してテキストをベクトルに変換し、ベクトル検索を介して智能的な検索と智能的な回答を達成します。",
29+
"settingsTitle": "パラメータ設定",
30+
"settingsDesc": "パラメータを調整することで、知識庫の検索結果をより正確に制御できます。",
31+
"deleteVectorConfirm": "知識庫を空にしますか?",
32+
"deleteVectorSuccess": "知識庫を空にしました",
33+
"enable": "知識庫検索を有効にする",
34+
"enableDesc": "有効にすると、AI は回答問題時にあなたのノート内容を検索して、より正確な回答を提供します。",
35+
"chunkSize": "ブロックサイズ",
36+
"chunkSizeDesc": "テキストをブロックに分割する最大文字数。より大きなブロックはより多くの文脈を含む可能性がありますが、ベクトル計算の複雑さを増加させます。",
37+
"chunkOverlap": "重叠サイズ",
38+
"chunkOverlapDesc": "テキストブロック間の重叠文字数。より大きな重叠は上下文の連続性を維持できます。",
39+
"resultCount": "検索結果数",
40+
"resultCountDesc": "検索時に返される関連するドキュメント数。数が多いと提供される情報がより豊富かもしれませんが、ノイズも増加する可能性があります。",
41+
"similarityThreshold": "類似度閾値",
42+
"similarityThresholdDesc": "ドキュメントとクエリの最小類似度閾値。この閾値を超えるドキュメントのみが返されます。値の範囲は 0.0-1.0、高いほど厳格です。",
43+
"resetToDefaults": "デフォルト値に戻す",
44+
"deleteVector": "知識庫を空にする"
2945
},
3046
"editor": {
3147
"title": "Markdown エディタ",

messages/zh.json

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,23 @@
2525
"settings": {
2626
"rag": {
2727
"title": "知识库",
28-
"desc": "在这里,你可以配置知识库相关设置,知识库基于 RAG 技术,通过嵌入模型将文本转换为向量,然后通过向量搜索来实现智能搜索和智能回答。"
28+
"desc": "在这里,你可以配置知识库相关设置,知识库基于 RAG 技术,通过嵌入模型将文本转换为向量,然后通过向量搜索来实现智能搜索和智能回答。",
29+
"settingsTitle": "参数设置",
30+
"settingsDesc": "通过调解参数,可以更加精确的控制知识库的检索效果。",
31+
"deleteVectorConfirm": "确定清空知识库吗?",
32+
"deleteVectorSuccess": "清空知识库成功",
33+
"enable": "启用知识库检索",
34+
"enableDesc": "启用后,AI 将在回答问题时检索你的笔记内容,提供更准确的回答。",
35+
"chunkSize": "分块大小",
36+
"chunkSizeDesc": "文本分块的最大字符数,较大的分块可能包含更多上下文,但会增加向量计算的复杂度。",
37+
"chunkOverlap": "重叠大小",
38+
"chunkOverlapDesc": "文本分块间的重叠字符数,较大的重叠可以保持上下文连贯性。",
39+
"resultCount": "检索数量",
40+
"resultCountDesc": "检索时返回的相关文档数量,数量越多提供的信息可能更丰富,但也可能引入噪声。",
41+
"similarityThreshold": "相似度阈值",
42+
"similarityThresholdDesc": "文档与查询的最小相似度阈值,只有超过此阈值的文档才会被返回。值范围 0.0-1.0,越高要求越严格。",
43+
"resetToDefaults": "重置默认值",
44+
"deleteVector": "清空知识库"
2945
},
3046
"editor": {
3147
"title": "Markdown 编辑器",

src/app/core/record/chat/chat-input.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import { ClipboardMonitor } from "./clipboard-monitor"
2828
import { RagSwitch } from "./rag-switch"
2929
import emitter from "@/lib/emitter"
3030
import useVectorStore from "@/stores/vector"
31+
import { getContextForQuery } from '@/lib/rag'
32+
3133

3234
export function ChatInput() {
3335
const [text, setText] = useState("")
@@ -98,8 +100,6 @@ export function ChatInput() {
98100
// 如果启用RAG,获取相关上下文
99101
if (isRagEnabled) {
100102
try {
101-
// 导入getContextForQuery函数
102-
const { getContextForQuery } = await import('@/lib/rag')
103103
// 获取相关文档内容
104104
ragContext = await getContextForQuery(text)
105105

src/app/core/setting/ai/page.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,9 @@ export default function AiPage() {
287287
<Slider
288288
className="w-64"
289289
value={[temperature]}
290-
max={2}
291-
step={0.01}
292-
onValueChange={(value) => valueChangeHandler('temperature', value[0])}
290+
max={2}
291+
step={0.01}
292+
onValueChange={(value) => valueChangeHandler('temperature', value[0])}
293293
/>
294294
<span className="text-zinc-500">{temperature}</span>
295295
</div>

src/app/core/setting/components/setting-base.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ export function FormItem({title, desc, children}: { title: string, desc?: string
2828
}
2929

3030
export function SettingPanel({children, title, desc, icon}: {children: React.ReactNode, title?: string, desc?: string, icon?: React.ReactNode}) {
31-
return <div className="flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm mb-4">
32-
<div>
31+
return <div className="flex flex-col lg:flex-row lg:items-center justify-between rounded-lg border p-3 shadow-sm mb-4">
32+
<div className="mb-2 lg:mb-0">
3333
<div className="flex items-center gap-2 mb-2">
3434
{icon}
3535
{title && <div className="text-sm font-bold">{title}</div>}

src/app/core/setting/defaultModel/model-select.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export function ModelSelect({modelKey}: {modelKey: string}) {
9292
<Popover open={open} onOpenChange={setOpen}>
9393
<div className="flex gap-2">
9494
<PopoverTrigger asChild>
95-
<div>
95+
<div className="flex-1">
9696
<Button
9797
variant="outline"
9898
role="combobox"

src/app/core/setting/rag/model-select.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export function ModelSelect({modelKey}: {modelKey: string}) {
8686
<Popover open={open} onOpenChange={setOpen}>
8787
<div className="flex gap-2">
8888
<PopoverTrigger asChild>
89-
<div>
89+
<div className="flex-1">
9090
<Button
9191
variant="outline"
9292
role="combobox"

src/app/core/setting/rag/setting.tsx renamed to src/app/core/setting/rag/model-setting.tsx

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import { useTranslations } from 'next-intl';
33
import { ModelSelect } from "./model-select";
44
import { ChartScatter, ListOrdered } from "lucide-react";
55

6-
export function Setting() {
6+
export function ModelSetting() {
77
const t = useTranslations('settings.defaultModel');
8-
9-
const options = [
8+
9+
const modelOptions = [
1010
{
1111
title: t('options.embedding.title'),
1212
desc: t('options.embedding.desc'),
@@ -19,13 +19,16 @@ export function Setting() {
1919
modelKey: 'reranking',
2020
icon: <ListOrdered className="size-4" />
2121
},
22-
]
22+
];
2323

24-
return (
25-
options.map((option) => (
26-
<SettingPanel key={option.modelKey} title={option.title} desc={option.desc} icon={option.icon}>
27-
<ModelSelect modelKey={option.modelKey} />
28-
</SettingPanel>
29-
))
30-
)
24+
return modelOptions.map((option) => (
25+
<SettingPanel
26+
key={option.modelKey}
27+
title={option.title}
28+
desc={option.desc}
29+
icon={option.icon}
30+
>
31+
<ModelSelect modelKey={option.modelKey} />
32+
</SettingPanel>
33+
))
3134
}

src/app/core/setting/rag/page.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import { SettingType } from '../components/setting-base'
44
import { Drama } from 'lucide-react'
55
import { useTranslations } from 'next-intl'
6-
import { Setting } from './setting'
6+
import { ModelSetting } from './model-setting'
7+
import { Settings } from './settings'
78

89
export default function PromptSetting() {
910
const t = useTranslations('settings.rag')
1011
return <SettingType id="rag" title={t('title')} desc={t('desc')} icon={<Drama />}>
11-
<Setting />
12+
<ModelSetting />
13+
<Settings />
1214
</SettingType>
1315
}

0 commit comments

Comments
 (0)