import { FileSearchOutlined, SearchOutlined } from '@ant-design/icons'; import { Button, Card, Flex, Input, InputNumber, Select, Slider, Spin, Switch, Tag, Tooltip } from 'antd'; import type { RetrieveRecord } from '~/api/dify-dataset/type'; import { useRetrieveTest } from '~/hooks/dify-dataset-manager/retrieve-test'; import type { RetrieveTestProps } from '~/types/dify-dataset-manager/retrieve-test'; // 颜色常量 const colors = { bgContainer: '#fff', bgLayout: '#f5f5f5', bgElevated: '#fafafa', border: '#e8e8e8', text: '#262626', textSecondary: '#8c8c8c', textTertiary: '#bfbfbf', textQuaternary: '#d9d9d9', fillTertiary: '#f0f0f0', }; /** * 检索结果项组件 */ function ResultItem({ record, index }: { record: RetrieveRecord; index: number }) { const scorePercent = (record.score * 100).toFixed(1); const scoreColor = record.score > 0.8 ? '#52c41a' : record.score > 0.5 ? '#faad14' : '#666'; return (
{scorePercent}% #{index + 1} {record.segment.word_count} 字 · 命中 {record.segment.hit_count} 次
{record.segment.document && ( 来源: {record.segment.document.name} )}
{record.segment.content.length > 500 ? record.segment.content.substring(0, 500) + '...' : record.segment.content}
{record.segment.answer && (
答案: {record.segment.answer.length > 200 ? record.segment.answer.substring(0, 200) + '...' : record.segment.answer}
)}
); } /** * 召回测试组件 */ export default function RetrieveTest({ datasetId }: RetrieveTestProps) { const { searchQuery, setSearchQuery, retrieveResults, retrieving, searchMethod, setSearchMethod, topK, setTopK, scoreThresholdEnabled, setScoreThresholdEnabled, scoreThreshold, setScoreThreshold, handleRetrieve, } = useRetrieveTest(datasetId); // 检索方式选项(只有3种) const searchMethodOptions = [ { label: '向量检索', value: 'semantic_search' }, { label: '全文检索', value: 'full_text_search' }, { label: '混合检索', value: 'hybrid_search' }, ]; return ( {/* 左侧面板 - 输入区域 */} {/* 标题 */}

召回测试

根据给定的查询文本测试知识库召回效果
{/* 查询输入区 */} 源文本