news 2026/9/11 17:49:19

如何运行 GraphRAG Unified Search 演示应用对比多个索引的搜索结果?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何运行 GraphRAG Unified Search 演示应用对比多个索引的搜索结果?

如何运行 GraphRAG Unified Search 演示应用对比多个索引的搜索结果?

【免费下载链接】graphragA modular graph-based Retrieval-Augmented Generation (RAG) system项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag

如果你已经用 GraphRAG 对多个数据集建好了索引,想在一个界面上选定不同索引、发送同一个问题,并并排查看 Basic RAG、Local、Global、Drift 四种搜索方式给出的答案与引用,就可以运行 GraphRAG 仓库自带的unified-search-app演示应用。它是一个 Streamlit 应用,通过listing.json目录文件加载多个 GraphRAG 索引(本地目录或 Blob 存储均可)。适用前提:环境中有 Python 3.11 和 UV;该应用没有发布到 PyPI,必须 clone GraphRAG 仓库并在unified-search-app目录下运行。应用首页如下(文档配图):

准备多个索引:目录结构与 listing.json

Unified Search 依赖一个“项目目录 + 索引清单”的约定:先按 docs/get_started.md 的 Getting Started 流程用 GraphRAG 对每个数据集完成索引,再按下面的结构组织所有索引。结构来自 unified-search-app/README.md:

projects_folder - listing.json - dataset_1 - settings.yaml - .env (optional if you declare your environment variables elsewhere) - output - prompts - dataset_2 - settings.yaml - .env (optional if you declare your environment variables elsewhere) - output - prompts

其中output是 GraphRAG 索引产出的 parquet 表(应用读取的表名在 data_config.py 中写死为output/communitiesoutput/community_reports等),settings.yaml是该数据集索引时的配置,prompts存放提示词文件。每个数据集目录内的其他文件夹会被忽略,不影响应用运行;只有listing.json中声明的数据集才会被使用

projects_folder根目录创建listing.json,每个数据集一条记录,字段含义:key用于标识数据集,path指向数据集目录,name是展示名,description是描述,community_level是要过滤的社区层级(整数)。README 中的示例:

[{ "key": "christmas-demo", "path": "christmas", "name": "A Christmas Carol", "description": "Getting Started index of the novel A Christmas Carol", "community_level": 2 }]

实际使用时把各字段替换为你自己的数据集标识、目录和描述即可,path需与上一节目录结构中dataset_1dataset_2的位置对应。

设置数据源:本地文件夹或 Blob Storage

应用通过环境变量决定从哪里读取listing.json和各数据集文件(见 default.py),二选一:

主路径:本地数据文件夹。用绝对路径设置DATA_ROOT

export DATA_ROOT=/absolute/path/to/projects_folder

/absolute/path/to/projects_folder替换为你实际的projects_folder绝对路径——README 明确要求使用绝对路径。

可选分支:Azure Blob Storage。在 Blob 存储账户中创建data容器并按同样的目录结构上传,然后执行az login并选择一个对该存储有读权限的账户,再设置:

export BLOB_ACCOUNT_NAME=<blob_storage_name> export BLOB_CONTAINER_NAME=<blob_container_with_projects> # 可选,默认使用 data 容器

两个变量都要替换为你自己的值。如果DATA_ROOTBLOB_ACCOUNT_NAME都未设置,应用会在启动阶段抛出ValueError: Either DATA_ROOT or BLOB_ACCOUNT_NAME environment variable must be set.,这是判断环境变量是否生效的直接依据。

安装依赖并启动应用

进入unified-search-app目录后,按 README 建议始终使用虚拟环境,然后安装依赖并启动:

uv venv --python 3.11 source .venv/bin/activate uv sync uv run poe start
  • uv venv --python 3.11/source .venv/bin/activate:创建并激活 Python 3.11 的虚拟环境;
  • uv sync:安装应用的全部依赖(依赖清单见 pyproject.toml,固定了streamlit==1.43.0等版本);
  • uv run poe start:启动应用。poe 任务start实际执行的是streamlit run app/home_page.py,即 home_page.py。

如果需要容器方式运行,仓库提供了 Dockerfile:它基于mcr.microsoft.com/oryx/python:3.11镜像,安装 uv 后执行uv sync --no-install-projectEXPOSE 8501,入口为uv run poe start_prodstart_prod对应streamlit run app/home_page.py --server.port=8501 --server.address=0.0.0.0,用于对外部地址提供访问。

在界面中提问并对比搜索结果

应用启动后是左右两个面板。

左侧配置面板(可收起)包含三项:

  1. Datasetslisting.json中声明的所有数据集都会出现在下拉框中,切换它即可在多个索引之间对比;
  2. Number of suggested questions:设置建议问题数量;
  3. Search options:选择本次要参与对比的搜索方式,至少必须启用一种,否则界面会提示Please select at least one search option from the sidebar.

右侧面板自上而下是:所选数据集的名称与描述、"Suggest some questions" 按钮(该功能使用 global search 分析数据集,生成上面设置数量的建议问题,点击问题左侧的复选框即可选中)、"Ask a question to compare the results" 提问输入框,以及 Search 和 Community Explorer 两个标签页。点击 "Suggest some questions" 后的界面(文档配图):

在输入框输入问题(或选中一条建议问题)后,启用的搜索方式会各自在一列中输出答案,答案下方展示对应的引用。四种搜索方式在界面上的标注是:

搜索方式Answer context
Basic RAGFixed number of text chunks of raw documents
Local SearchGraph index query results with relevant document text chunks
Global SearchAI-generated network reports covering all input documents
Drift SearchIncludes community information

Community Explorer 标签页分为 Community Reports List 和 Selected Report 两栏,用于浏览所选数据集的社区报告(文档配图):

结果判断与限制

  • 启动配置是否正确:数据集出现在左侧下拉框,且右上方显示该数据集的 name 和 description,说明listing.jsonpathDATA_ROOT(或 Blob 配置)都指向了正确位置;下拉框为空时先检查环境变量和listing.json所在目录。
  • 任务完成标志:输入问题后,启用的每种搜索方式都输出了带引用的答案,即可在同一页面横向对比多个索引、多种搜索方式的结果。
  • 限制:README 明确声明该应用仅为 demo/experimental 用途、不受支持,相关 issue 可能不会被处理;它只使用listing.json中声明的数据集,未声明的目录一律忽略;数据集目录中的settings.yamloutputprompts是应用读取索引所需的部分,缺表时 Blob 数据源只会记录Table ... does not exist警告并返回空表(见 blob_source.py),本地数据源则打印Table ... does not exist

如果对比过程中发现某类搜索结果不符合预期,下一步可以回到 docs/get_started.md 检查对应数据集的索引配置,或用 docs/query/overview.md 中介绍的搜索方式单独运行对应查询。

【免费下载链接】graphragA modular graph-based Retrieval-Augmented Generation (RAG) system项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 17:45:45

Linux行业盒子芯片选型:RK3588、S922X与S905X3实战决策指南

1. 项目概述&#xff1a;为什么“行业定制盒子”的芯片选型&#xff0c;比你想象中更像一场精密的工业手术 最近半年&#xff0c;我跑了七家做Linux行业定制盒子的源头工厂&#xff0c;从深圳华强北的方案商小作坊&#xff0c;到东莞松山湖的ODM大厂产线&#xff0c;再到浙江慈…

作者头像 李华
网站建设 2026/9/11 17:44:59

基于YOLOv8的农田虫情测报灯系统:目标检测与部署实践

简介&#xff1a;面向毕业设计与课程设计的基于YOLOv8的农田智能虫情测报灯害虫种类识别系统&#xff0c;完整覆盖数据准备、模型训练、视频检测与可视化界面展示全流程&#xff0c;旨在解决农田虫害监测场景中的目标检测需求&#xff1b;项目代码经测试可运行&#xff0c;适合…

作者头像 李华
网站建设 2026/9/11 17:41:45

丝状真菌的制剂加工——为什么它们“不耐加工“?

一、从发酵罐到制剂车间&#xff1a;一个被低估的"断点"一个事实被行业低估了&#xff1a;丝状真菌的产业化瓶颈&#xff0c;不只在发酵端&#xff0c;更在制剂端。前四篇文章分别聊了开篇、菌种制备、液体发酵、固体发酵&#xff0c;把"怎么把菌养好、把孢子产…

作者头像 李华
网站建设 2026/9/11 17:41:17

装备制造企业非标定制订单多,生产进度该如何透明化跟踪?

本文要点&#xff1a;本文针对装备制造行业"非标定制订单多、设计变更频繁、交期长"带来的生产进度跟踪难题&#xff0c;盘点轻流及市面多款工具在订单进度可视化、变更协同方面的能力差异。文章覆盖从中小型非标装配厂到集团型装备企业的不同场景&#xff0c;帮助该…

作者头像 李华
网站建设 2026/9/11 17:41:06

蓝桥杯嵌入式真题源码:STM32驱动封装与训练环境搭建实战

简介&#xff1a;这是蓝桥杯嵌入式竞赛的历年真题源码与项目说明合集&#xff0c;面向准备参加蓝桥杯嵌入式设计赛项的高校学生、竞赛选手&#xff0c;也适合作为电子信息、计算机等专业课程设计或毕业设计的参考资料。压缩包共816个文件&#xff0c;以C源文件&#xff08;238个…

作者头像 李华