import { useQuery, useQueryClient } from '@tanstack/react-query' import { Card, Row, Col, Statistic, Button, Typography, Descriptions, App } from 'antd' import { ReloadOutlined, DatabaseOutlined, NodeIndexOutlined } from '@ant-design/icons' import { api } from '@/services/http-client' const { Title } = Typography export default function VectorAdminPage() { const qc = useQueryClient() const { message } = App.useApp() const { data: coll, isLoading: collLoading } = useQuery({ queryKey: ['vector', 'collection'], queryFn: (): Promise => api.get('/admin-api/vector/collection'), staleTime: 30_000, }) const { data: count } = useQuery({ queryKey: ['vector', 'count'], queryFn: (): Promise => api.get('/admin-api/vector/count'), staleTime: 30_000, }) const handleReindex = async () => { try { await api.post('/admin-api/vector/reindex') message.success('索引重建已提交') qc.invalidateQueries({ queryKey: ['vector'] }) } catch { message.error('操作失败') } } return (
<DatabaseOutlined /> 向量检索
{coll?.name || 'zhixi_chunks'} {coll?.vectorSize || 1024} {coll?.distance || 'Cosine'} {count?.count ?? 0} HNSW (m=16, ef_construct=100) userId (keyword), knowledgeBaseId (keyword), deleted (bool) 索引重建会通过任务队列异步执行,不影响线上检索。建议在低峰期操作。
) }