diff --git a/web/src/hooks/use-knowledge-request.ts b/web/src/hooks/use-knowledge-request.ts index e66368d283..3f0931f4fa 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 a6a1b65bbd..66cc2c9f1b 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 992ff02437..bafdd94604 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 b8037133aa..4a1c4fcb90 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, {