Skip to content

Commit 7060ded

Browse files
author
Jicheng Lu
committed
refine doc knowledge
1 parent 230805e commit 7060ded

8 files changed

Lines changed: 371 additions & 63 deletions

File tree

src/lib/helpers/http.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ function skipLoader(config) {
184184
new RegExp('http(s*)://(.*?)/knowledge/(.*?)/search', 'g'),
185185
new RegExp('http(s*)://(.*?)/knowledge/vector/(.*?)/create', 'g'),
186186
new RegExp('http(s*)://(.*?)/knowledge/document/(.*?)/page', 'g'),
187+
new RegExp('http(s*)://(.*?)/knowledge/document/(.*?)/upload', 'g'),
187188
new RegExp('http(s*)://(.*?)/knowledge/tokenize', 'g'),
188189
new RegExp('http(s*)://(.*?)/users', 'g'),
189190
new RegExp('http(s*)://(.*?)/instruct/(.*?)', 'g'),
@@ -228,6 +229,7 @@ function skipLoader(config) {
228229
new RegExp('http(s*)://(.*?)/llm-provider/(.*?)/models', 'g'),
229230
new RegExp('http(s*)://(.*?)/knowledge/vector/collections', 'g'),
230231
new RegExp('http(s*)://(.*?)/knowledge/vector/(.*?)/exist', 'g'),
232+
new RegExp('http(s*)://(.*?)/knowledge/document/processors', 'g'),
231233
new RegExp('http(s*)://(.*?)/knowledge/tokenizer/providers', 'g'),
232234
new RegExp('http(s*)://(.*?)/knowledge/tokenizer/data-providers', 'g'),
233235
new RegExp('http(s*)://(.*?)/logger/instruction/log', 'g'),

src/lib/helpers/types/knowledgeTypes.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
/**
9999
* @typedef {Object} VectorKnowledgeUploadRequest
100100
* @property {import('$fileTypes').FileModel[]} files - The files.
101+
* @property {any} [options]
101102
*/
102103

103104
/**

src/lib/scss/custom/pages/_knowledgebase.scss

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@
482482
}
483483

484484
.doc-upload-footer {
485-
margin-top: 30px;
485+
margin-top: 0px;
486486

487487
.load-doc-btn {
488488
font-size: 12px;
@@ -820,4 +820,25 @@
820820
gap: 0;
821821
}
822822
}
823+
}
824+
825+
826+
.knowledge-upload-modal-container {
827+
.doc-upload-body {
828+
width: 100%;
829+
height: 100%;
830+
831+
.gallery-item, .doc-drop-zone {
832+
width: 100%;
833+
min-height: 200px;
834+
}
835+
836+
i {
837+
font-size: 5em;
838+
}
839+
840+
.doc-drop-icon {
841+
text-align: center;
842+
}
843+
}
823844
}

src/lib/services/api-endpoints.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ export const endpoints = {
113113
knowledgeDocumentDeleteUrl: `${host}/knowledge/document/{collection}/delete/{fileId}`,
114114
knowledgeDocumentDeleteAllUrl: `${host}/knowledge/document/{collection}/delete`,
115115
knowledgeDocumentPageListUrl: `${host}/knowledge/document/{collection}/page`,
116+
knowledgeDocumentProcessorsUrl: `${host}/knowledge/document/processors`,
116117

117118
tokenizersUrl: `${host}/knowledge/tokenizer/providers`,
118119
tokenizerDataLoadersUrl: `${host}/knowledge/tokenizer/data-providers`,

src/lib/services/knowledge-base-service.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,15 @@ export async function getKnowledgeDocumentPageList(collection, request) {
193193
return response.data;
194194
}
195195

196+
/**
197+
* @returns {Promise<string[]>}
198+
*/
199+
export async function getKnowledgeDocumentProcessors() {
200+
const url = endpoints.knowledgeDocumentProcessorsUrl;
201+
const response = await axios.get(url);
202+
return response.data;
203+
}
204+
196205

197206
/**
198207
* @param {import('$knowledgeTypes').CreateVectorCollectionRequest} request

src/routes/page/knowledge-base/documents/+page.svelte

Lines changed: 67 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,8 @@
2525
createVectorCollection,
2626
createVectorIndexes,
2727
deleteVectorIndexes,
28-
29-
getVectorCollectionDetails
30-
28+
getVectorCollectionDetails,
29+
getKnowledgeDocumentProcessors
3130
} from '$lib/services/knowledge-base-service';
3231
import Breadcrumb from '$lib/common/Breadcrumb.svelte';
3332
import HeadTitle from '$lib/common/HeadTitle.svelte';
@@ -41,13 +40,14 @@
4140
VectorDataSource,
4241
VectorPayloadDataType
4342
} from '$lib/helpers/enums';
43+
import { DECIMAL_REGEX } from '$lib/helpers/constants';
4444
import VectorItem from '../common/vector-table/vector-item.svelte';
4545
import VectorItemEditModal from '../common/vector-table/vector-item-edit-modal.svelte';
4646
import CollectionCreateModal from '../common/collection/collection-create-modal.svelte';
4747
import VectorIndexModal from '../common/indexes/vector-index-modal.svelte';
4848
import AdvancedSearch from '../common/search/advanced-search.svelte';
4949
import KnowledgeDocumentUpload from './knowledge-document-upload.svelte';
50-
import { DECIMAL_REGEX } from '$lib/helpers/constants';
50+
import KnowledgeUploadModal from './knowledge-upload-modal.svelte';
5151
5252
const pageSize = 8;
5353
const duration = 2000;
@@ -106,6 +106,9 @@
106106
order: 'desc'
107107
};
108108
109+
/** @type {import('$commonTypes').LabelValuePair[]} */
110+
let docProcessors = [];
111+
109112
/** @type {boolean} */
110113
let showDemo = true;
111114
let isSearching = false;
@@ -122,6 +125,8 @@
122125
let isAdvSearchOn = false;
123126
let disableSearchBtn = false;
124127
let isExactSearch = false;
128+
let isOpenUploadModal = false;
129+
let showDocList = false;
125130
126131
/** @type {any} */
127132
let docUploadrCmp;
@@ -168,6 +173,7 @@
168173
if (selectedCollection) {
169174
Promise.all([
170175
getCollectionDetail(),
176+
getDocProcessors(),
171177
getData({
172178
...defaultParams,
173179
isReset: true,
@@ -456,6 +462,19 @@
456462
});
457463
}
458464
465+
function getDocProcessors() {
466+
return new Promise((resolve, reject) => {
467+
getKnowledgeDocumentProcessors().then(res => {
468+
const retProcessors = res?.map(x => ({ label: x, value: x })) || [];
469+
docProcessors = [ ...retProcessors ];
470+
resolve(res);
471+
}).catch(err => {
472+
docProcessors = [];
473+
reject(err);
474+
});
475+
});
476+
}
477+
459478
/** @param {boolean} isLocalLoading */
460479
function toggleLoader(isLocalLoading) {
461480
if (isLocalLoading) {
@@ -740,9 +759,12 @@
740759
});
741760
}
742761
743-
/** @param {any} e */
744-
function onDocUploaded(e) {
745-
reset();
762+
/**
763+
* @param {any} e
764+
* @param {boolean} skipLoader
765+
*/
766+
function onDocUploaded(e, skipLoader = false) {
767+
reset(skipLoader);
746768
}
747769
748770
/** @param {any} e */
@@ -859,6 +881,10 @@
859881
function toggleIndexModal() {
860882
isOpenIndexModal = !isOpenIndexModal;
861883
}
884+
885+
function toggleUploadModal() {
886+
isOpenUploadModal = !isOpenUploadModal;
887+
}
862888
</script>
863889
864890
<HeadTitle title="{$_('Document Knowledge')}" addOn="Knowledge Base" />
@@ -905,6 +931,21 @@
905931
/>
906932
{/if}
907933
934+
<KnowledgeUploadModal
935+
className={'knowledge-upload-modal-container'}
936+
size={'md'}
937+
accept={'.txt,.pdf'}
938+
collection={selectedCollection}
939+
open={isOpenUploadModal}
940+
processors={docProcessors}
941+
toggleModal={() => toggleUploadModal()}
942+
on:docuploaded={(e) => {
943+
showDocList = false;
944+
isOpenUploadModal = false;
945+
onDocUploaded(e, true);
946+
}}
947+
/>
948+
908949
<CollectionCreateModal
909950
title={'Create new collection'}
910951
open={isOpenCreateCollection}
@@ -1082,9 +1123,13 @@
10821123
{#if selectedCollection}
10831124
<KnowledgeDocumentUpload
10841125
collection={selectedCollection}
1126+
accept={'.txt'}
1127+
disableFileUpload={true}
1128+
disableFileDelete={false}
10851129
disabled={disabled}
10861130
bind:this={docUploadrCmp}
1087-
on:docuploaded={(e) => onDocUploaded(e)}
1131+
bind:showDocList={showDocList}
1132+
on:docuploaded={(e) => onDocUploaded(e, true)}
10881133
on:docdeleted={(e) => onDocDeleted(e)}
10891134
on:resetdocs={(e) => onDocsReset(e)}
10901135
/>
@@ -1133,6 +1178,20 @@
11331178
<i class="mdi mdi-minus" />
11341179
</Button>
11351180
</div>
1181+
<div
1182+
class="line-align-center"
1183+
data-bs-toggle="tooltip"
1184+
data-bs-placement="top"
1185+
title="Upload doc"
1186+
>
1187+
<Button
1188+
class="btn btn-sm btn-soft-info knowledge-btn-icon"
1189+
disabled={disabled}
1190+
on:click={() => toggleUploadModal()}
1191+
>
1192+
<i class="mdi mdi-file-upload" />
1193+
</Button>
1194+
</div>
11361195
</div>
11371196
<div class="collection-action-container action-container-padding">
11381197
{#if selectedCollection}

0 commit comments

Comments
 (0)