diff --git a/web/src/hooks/use-knowledge-request.ts b/web/src/hooks/use-knowledge-request.ts index e66368d28..3f0931f4f 100644 --- a/web/src/hooks/use-knowledge-request.ts +++ b/web/src/hooks/use-knowledge-request.ts @@ -1,3 +1,4 @@ +import { INextTestingResult } from '@/interfaces/database/knowledge'; import { ITestRetrievalRequestBody } from '@/interfaces/request/knowledge'; import kbService from '@/services/knowledge-service'; import { useQuery } from '@tanstack/react-query'; @@ -33,14 +34,18 @@ export const useTestRetrieval = () => { data, isFetching: loading, refetch, - } = useQuery({ + } = useQuery({ queryKey: [KnowledgeApiAction.TestRetrieval, queryParams], - initialData: {}, - // enabled: !!values?.question && !!knowledgeBaseId, + initialData: { + chunks: [], + doc_aggs: [], + total: 0, + }, enabled: false, gcTime: 0, queryFn: async () => { const { data } = await kbService.retrieval_test(queryParams); + console.log('🚀 ~ queryFn: ~ data:', data); return data?.data ?? {}; }, }); diff --git a/web/src/interfaces/database/knowledge.ts b/web/src/interfaces/database/knowledge.ts index a6a1b65bb..66cc2c9f1 100644 --- a/web/src/interfaces/database/knowledge.ts +++ b/web/src/interfaces/database/knowledge.ts @@ -137,6 +137,13 @@ export interface ITestingResult { labels?: Record; } +export interface INextTestingResult { + chunks: ITestingChunk[]; + doc_aggs: ITestingDocument[]; + total: number; + labels?: Record; +} + export type IRenameTag = { fromTag: string; toTag: string }; export interface IKnowledgeGraph { diff --git a/web/src/pages/dataset/testing/index.tsx b/web/src/pages/dataset/testing/index.tsx index 992ff0243..bafdd9460 100644 --- a/web/src/pages/dataset/testing/index.tsx +++ b/web/src/pages/dataset/testing/index.tsx @@ -1,53 +1,63 @@ -import { Badge } from '@/components/ui/badge'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { useTranslate } from '@/hooks/common-hooks'; +import { useTestRetrieval } from '@/hooks/use-knowledge-request'; +import { ITestingChunk } from '@/interfaces/database/knowledge'; +import { camelCase } from 'lodash'; import TestingForm from './testing-form'; -const list = new Array(15).fill({ - content: `Lorem ipsum odor amet, consectetuer adipiscing elit. Ullamcorper vulputate id laoreet malesuada commodo molestie. Lectus convallis class euismod; consequat in curabitur. Ablandit praesent inceptos nibh placerat lectus fringilla finibus. Hac vivamus id scelerisque et gravida nec ligula et non. Consectetur eu himenaeos eget felis quis habitant tellus. Tellus commodo inceptos litora habitant per himenaeos faucibus pretium. Gravida velit pretium amet purus rhoncus taciti. `, -}); - -const SimilarityList = [ - { label: '混合相似度', value: 45.88 }, - { label: '关键词似度', value: 45.88 }, - { label: '向量相似度', value: 45.88 }, +const similarityList: Array<{ field: keyof ITestingChunk; label: string }> = [ + { field: 'similarity', label: 'Hybrid Similarity' }, + { field: 'term_similarity', label: 'Term Similarity' }, + { field: 'vector_similarity', label: 'Vector Similarity' }, ]; +const ChunkTitle = ({ item }: { item: ITestingChunk }) => { + const { t } = useTranslate('knowledgeDetails'); + return ( +
+ {similarityList.map((x) => ( +
+ {((item[x.field] as number) * 100).toFixed(2)} + {t(camelCase(x.field))} +
+ ))} +
+ ); +}; + export default function RetrievalTesting() { + const { loading, setValues, refetch, data } = useTestRetrieval(); + return (
- +

15 Results from 3 files

- {list.map((x, idx) => ( + {data.chunks.map((x) => (
- {SimilarityList.map((x, idx) => ( - - {x.label} - - {x.value} - - - ))} +
-

{x.content}

+

+ {x.content_with_weight} +

))} diff --git a/web/src/pages/dataset/testing/testing-form.tsx b/web/src/pages/dataset/testing/testing-form.tsx index b8037133a..4a1c4fcb9 100644 --- a/web/src/pages/dataset/testing/testing-form.tsx +++ b/web/src/pages/dataset/testing/testing-form.tsx @@ -28,10 +28,17 @@ import { trim } from 'lodash'; import { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; -export default function TestingForm() { - const { t } = useTranslation(); +type TestingFormProps = Pick< + ReturnType, + 'loading' | 'refetch' | 'setValues' +>; - const { loading, setValues, refetch } = useTestRetrieval(); +export default function TestingForm({ + loading, + refetch, + setValues, +}: TestingFormProps) { + const { t } = useTranslation(); const formSchema = z.object({ question: z.string().min(1, {