瀏覽代碼

Feat: Display tag word cloud on recall test page #4368 (#4438)

### What problem does this PR solve?

Feat: Display tag word cloud on recall test page #4368

### Type of change


- [x] New Feature (non-breaking change which adds functionality)
tags/v0.16.0
balibabu 9 月之前
父節點
當前提交
06c54367fa
沒有連結到貢獻者的電子郵件帳戶。

+ 1
- 2
web/src/hooks/knowledge-hooks.ts 查看文件

if (data.code === 0) { if (data.code === 0) {
const res = data.data; const res = data.data;
return { return {
chunks: res.chunks,
...res,
documents: res.doc_aggs, documents: res.doc_aggs,
total: res.total,
}; };
} }
return ( return (

+ 1
- 0
web/src/interfaces/database/knowledge.ts 查看文件

chunks: ITestingChunk[]; chunks: ITestingChunk[];
documents: ITestingDocument[]; documents: ITestingDocument[];
total: number; total: number;
labels?: Record<string, number>;
} }


export type IRenameTag = { fromTag: string; toTag: string }; export type IRenameTag = { fromTag: string; toTag: string };

+ 1
- 1
web/src/pages/add-knowledge/components/knowledge-setting/tag-word-cloud.tsx 查看文件

type: 'wordCloud', type: 'wordCloud',
autoFit: true, autoFit: true,
layout: { layout: {
fontSize: [20, 100],
fontSize: [10, 50],
// fontSize: (d: any) => { // fontSize: (d: any) => {
// if (d.value) { // if (d.value) {
// return (d.value / sumValue) * 100 * (length / 10); // return (d.value / sumValue) * 100 * (length / 10);

+ 3
- 1
web/src/pages/add-knowledge/components/knowledge-testing/testing-control/index.tsx 查看文件

import Rerank from '@/components/rerank'; import Rerank from '@/components/rerank';
import SimilaritySlider from '@/components/similarity-slider'; import SimilaritySlider from '@/components/similarity-slider';
import { useTranslate } from '@/hooks/common-hooks'; import { useTranslate } from '@/hooks/common-hooks';
import { useChunkIsTesting } from '@/hooks/knowledge-hooks';
import { Button, Card, Divider, Flex, Form, Input } from 'antd'; import { Button, Card, Divider, Flex, Form, Input } from 'antd';
import { FormInstance } from 'antd/lib'; import { FormInstance } from 'antd/lib';
import { LabelWordCloud } from './label-word-cloud';


import { useChunkIsTesting } from '@/hooks/knowledge-hooks';
import styles from './index.less'; import styles from './index.less';


type FieldType = { type FieldType = {
</Card> </Card>
</Form> </Form>
</section> </section>
<LabelWordCloud></LabelWordCloud>
{/* <section> {/* <section>
<div className={styles.historyTitle}> <div className={styles.historyTitle}>
<Space size={'middle'}> <Space size={'middle'}>

+ 59
- 0
web/src/pages/add-knowledge/components/knowledge-testing/testing-control/label-word-cloud.tsx 查看文件

import { useSelectTestingResult } from '@/hooks/knowledge-hooks';
import { Chart } from '@antv/g2';
import { useCallback, useEffect, useMemo, useRef } from 'react';

export function LabelWordCloud() {
const domRef = useRef<HTMLDivElement>(null);
let chartRef = useRef<Chart>();
const { labels } = useSelectTestingResult();

const list = useMemo(() => {
if (!labels) {
return [];
}

return Object.keys(labels).reduce<
Array<{ text: string; name: string; value: number }>
>((pre, cur) => {
pre.push({ name: cur, text: cur, value: labels[cur] });

return pre;
}, []);
}, [labels]);

const renderWordCloud = useCallback(() => {
if (domRef.current && list.length) {
chartRef.current = new Chart({ container: domRef.current });

chartRef.current.options({
type: 'wordCloud',
autoFit: true,
layout: {
fontSize: [6, 15],
},
data: {
type: 'inline',
value: list,
},
encode: { color: 'text' },
legend: false,
tooltip: {
title: 'name', // title
items: ['value'], // data item
},
});

chartRef.current.render();
}
}, [list]);

useEffect(() => {
renderWordCloud();

return () => {
chartRef.current?.destroy();
};
}, [renderWordCloud]);

return <div ref={domRef} className="w-full h-[13vh]"></div>;
}

Loading…
取消
儲存