
如何运行 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.jsonUnified Search 依赖一个“项目目录 索引清单”的约定先按 docs/get_started.md 的 Getting Started 流程用 GraphRAG 对每个数据集完成索引再按下面的结构组织所有索引。结构来自 unified-search-app/README.mdprojects_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/communities、output/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_1、dataset_2的位置对应。设置数据源本地文件夹或 Blob Storage应用通过环境变量决定从哪里读取listing.json和各数据集文件见 default.py二选一主路径本地数据文件夹。用绝对路径设置DATA_ROOTexport 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_NAMEblob_storage_name export BLOB_CONTAINER_NAMEblob_container_with_projects # 可选默认使用 data 容器两个变量都要替换为你自己的值。如果DATA_ROOT和BLOB_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 startuv venv --python 3.11/source .venv/bin/activate创建并激活 Python 3.11 的虚拟环境uv sync安装应用的全部依赖依赖清单见 pyproject.toml固定了streamlit1.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_prod。start_prod对应streamlit run app/home_page.py --server.port8501 --server.address0.0.0.0用于对外部地址提供访问。在界面中提问并对比搜索结果应用启动后是左右两个面板。左侧配置面板可收起包含三项Datasetslisting.json中声明的所有数据集都会出现在下拉框中切换它即可在多个索引之间对比Number of suggested questions设置建议问题数量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 contextBasic RAGFixed number of text chunks of raw documentsLocal SearchGraph index query results with relevant document text chunksGlobal SearchAI-generated network reports covering all input documentsDrift SearchIncludes community informationCommunity Explorer 标签页分为 Community Reports List 和 Selected Report 两栏用于浏览所选数据集的社区报告文档配图结果判断与限制启动配置是否正确数据集出现在左侧下拉框且右上方显示该数据集的 name 和 description说明listing.json、path和DATA_ROOT或 Blob 配置都指向了正确位置下拉框为空时先检查环境变量和listing.json所在目录。任务完成标志输入问题后启用的每种搜索方式都输出了带引用的答案即可在同一页面横向对比多个索引、多种搜索方式的结果。限制README 明确声明该应用仅为 demo/experimental 用途、不受支持相关 issue 可能不会被处理它只使用listing.json中声明的数据集未声明的目录一律忽略数据集目录中的settings.yaml、output、prompts是应用读取索引所需的部分缺表时 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),仅供参考