# Knowledge Search Traverse 可视化工具 ## 概述 这是 `knowledge_search_traverse.py` (v6.1.2.125) 的配套可视化工具。**基于 v6.1.2.121 的 React Flow 可视化引擎**,通过数据转换层将语义分段跨域组词的执行数据转换为图结构,实现美观的交互式可视化。 ### 🆕 新增功能:多模态图片提取展示 支持展示帖子图片的文字提取和AI语义描述,提供更丰富的内容分析能力。 ## 🎯 核心特性 ### 1. 智能数据转换 - 自动检测数据格式(v6.1.2.5 或 v6.1.2.8) - 将轮次数据(rounds)转换为节点-边图结构 - 保留完整的轮次信息和来源追踪 ### 2. 多类型节点支持 | 节点类型 | 颜色 | 说明 | |---------|------|------| | `root` | 紫色 (#6b21a8) | 原始问题根节点 | | `seg` | 绿色 (#10b981) | 初始分词结果 | | `q` | 蓝色 (#3b82f6) | 查询节点 | | `search` | 深紫 (#8b5cf6) | 搜索操作节点 | | `note` | 粉色 (#ec4899) | 帖子结果节点 | ### 3. 来源标识 清楚展示每个Query的来源: - **seg** - 来自分词 - **add** - 加词生成 - **sug** - 建议词生成 ### 4. 交互功能 继承 v6.1.2.5 的所有交互功能: - ✅ 节点拖拽和缩放 - ✅ 按层级筛选 - ✅ 节点搜索 - ✅ 路径高亮 - ✅ 目录树导航(左侧面板) - ✅ 节点折叠/展开 - ✅ 聚焦功能 - ✅ **目录卡片交错布局** - 卡片左右错开,避免垂直叠加 - ✅ **目录卡片拖动** - 支持垂直方向拖动调整位置 ## 📁 文件结构 ``` visualization/sug_v6_1_2_8/ ├── index.js # 主可视化脚本(支持格式检测) ├── convert_v8_to_graph.js # 数据转换层 ├── package.json # 依赖配置 ├── node_modules/ # 依赖包(React Flow, esbuild等) └── README.md # 本文档 ``` ## 🚀 使用方式 ### 方式1:通过主脚本自动生成(推荐) ```bash # 运行脚本并自动生成可视化 python3 knowledge_search_traverse.py --visualize ``` 可视化HTML会自动生成在输出目录中。 ### 方式2:手动生成可视化 ```bash # 从 run_context.json 生成可视化 node visualization/knowledge_search_traverse/index.js \ path/to/run_context.json \ path/to/output.html \ [--simplified] ``` 参数说明: - `path/to/run_context.json`:运行上下文文件路径(必需) - `path/to/output.html`:输出HTML文件路径(可选,默认为 `query_graph_output.html`) - `--simplified`:使用简化视图(可选) ## 📦 数据来源 可视化工具会读取以下文件: 1. **run_context.json**(必需):主要的运行上下文数据 2. **search_results.json**(可选):搜索结果详情 3. **search_extract.json**(可选):🆕 图片提取结果 ## 🖼️ 多模态图片提取展示 如果存在 `search_extract.json` 文件,可视化会展示: - **提取文字**:图片中的所有可见文字内容 - **图片描述**:AI生成的图片详细描述 - **原图展示**:点击可查看原始图片 ### search_extract.json 格式 ```json { "note_id_xxx": { "note_id": "xxx", "note_url": "https://...", "title": "帖子标题", "body_text": "帖子正文", "type": "normal", "extraction_time": "2025-01-11T15:00:00", "images": [ { "image_index": 0, "original_url": "https://...", "description": "图片的详细语义描述...", "extract_text": "图片中提取的文字内容..." } ] } } ``` ### 扩展图片提取展示 如需自定义图片提取结果的展示方式,可以修改 `index.js` 中的React组件,添加图片展示的UI和交互逻辑。 示例位置: ```javascript // 读取提取结果 const extractPath = path.join(path.dirname(inputFile), 'search_extract.json'); let extractData = {}; if (fs.existsSync(extractPath)) { extractData = JSON.parse(fs.readFileSync(extractPath, 'utf-8')); } ``` ## 📊 数据转换说明 ### 输入格式(v6.1.2.8) ```json { "o": "快速进行图片背景移除和替换", "rounds": [ { "round_num": 0, "type": "initialization", "seg_list": [ {"text": "快速", "score": 0.1}, {"text": "图片", "score": 0.1} ], "q_list_1": [...] }, { "round_num": 1, "input_q_list": [...], "output_q_list": [ {"text": "快速图片", "score": 0.2, "from": "add"} ], "search_count": 3 } ] } ``` ### 转换后格式(图结构) ```json { "nodes": { "root_o": { "type": "root", "query": "快速进行图片背景移除和替换", "level": 0 }, "seg_快速_0": { "type": "seg", "query": "快速", "level": 1 }, "q_快速图片_r2_0": { "type": "q", "query": "快速图片", "level": 2, "from_source": "add" } }, "edges": [ { "from": "root_o", "to": "seg_快速_0", "edge_type": "root_to_seg" }, { "from": "seg_快速_0", "to": "q_快速_r1", "edge_type": "seg_to_q" } ] } ``` ## 🎨 可视化效果 ### 图布局 - **水平布局**:从左到右按轮次展开 - **层次化**:相同轮次的节点纵向排列 - **自动布局**:使用 dagre 算法自动计算最佳位置 ### 节点样式 - **边框颜色**:根据节点类型区分 - **标签内容**:显示 Query 文本、分数、策略 - **特殊标识**: - 未选中的节点:红色 "未选中" 标签 - Search 节点:显示搜索次数和帖子数 ### 边样式 - **虚线**:表示不同类型的关系 - **颜色**:根据策略类型着色 - **箭头**:指示数据流向 ## 📦 依赖 所有依赖已包含在 `package.json` 中: - `react` + `react-dom` - UI 框架 - `@xyflow/react` - 流程图库 - `dagre` - 图布局算法 - `esbuild` - 打包工具 - `zustand` - 状态管理 - `react-draggable` - 拖拽功能库 **安装依赖:** ```bash cd visualization/sug_v6_1_2_121 npm install ``` 总大小:约 34MB ## 🔧 技术实现 ### 转换层(convert_v8_to_graph.js) - 解析 rounds 数据 - 创建图节点和边 - 维护轮次信息(iterations) ### 可视化层(index.js) - 格式检测和自动转换 - React Flow 渲染 - 交互功能实现 ### 优势 - ✅ 复用成熟的可视化引擎 - ✅ 保持视觉一致性 - ✅ 完整的交互功能 - ✅ 易于维护和扩展 ## 📝 更新日志 ### v1.2.0 (knowledge_search_traverse - 2025-01-11) - 🆕 集成多模态图片提取功能 - 📦 添加 search_extract.json 数据支持 - 📝 更新文档说明多模态展示方式 - 🔧 修改脚本路径为 knowledge_search_traverse ### v1.1.0 (2025-11-11) - ✨ 新增目录树卡片交错布局(之字形排列) - ✨ 新增目录树卡片拖动功能(支持垂直拖动) - 🔧 增加卡片间距从 8px 到 20px - 📦 添加 react-draggable 依赖 ### v1.0.0 (2025-10-31) - 基于 v6.1.2.121 可视化引擎 - 实现轮次数据到图结构的转换 - 支持新的节点类型(root, segment, domain_comb, search) - 自动格式检测和转换 - 完整的交互功能 ## 🤝 兼容性 | 版本 | 支持 | 说明 | |------|------|------| | v6.1.2.121 | ✅ | 直接渲染(语义分段跨域组词版) | | v6.1.2.125 | ✅ | 完全兼容 + 多模态图片提取 | | knowledge_search_traverse | ✅ | 当前版本,完整支持 | ## 📧 问题反馈 如有问题或建议,请查看主项目 README 或提交 Issue。