unified-search-app/README.md
Unified demo for GraphRAG search comparisons.
⚠️ This app is maintained for demo/experimental purposes and is not supported. Issue filings on the GraphRAG repo may not be addressed.
This sample app is not published to pypi, so you'll need to clone the GraphRAG repo and run from this folder.
We recommend always using a virtual environment:
uv venv --python 3.11source .venv/bin/activateUse GraphRAG to index your dataset before running Unified Search. We recommend starting with the Getting Started guide.
Unified Search supports multiple GraphRAG indexes by using a directory listing file. Create a listing.json file in the root folder where all your datasets are stored (locally or in blob storage), with the following format (one entry per dataset):
[{
"key": "<key_to_identify_dataset_1>",
"path": "<path_to_dataset_1>",
"name": "<name_to_identify_dataset_1>",
"description": "<description_for_dataset_1>",
"community_level": "<integer for community level you want to filter>"
},{
"key": "<key_to_identify_dataset_2>",
"path": "<path_to_dataset_2>",
"name": "<name_to_identify_dataset_2>",
"description": "<description_for_dataset_2>",
"community_level": "<integer for community level you want to filter>"
}]
For example, if you have a folder of GraphRAG indexes called "projects" and inside that you ran the Getting Started instructions, your listing.json in the projects folder could look like:
[{
"key": "christmas-demo",
"path": "christmas",
"name": "A Christmas Carol",
"description": "Getting Started index of the novel A Christmas Carol",
"community_level": 2
}]
The expected format of the projects folder will be the following:
Note: Any other folder inside each dataset folder will be ignored but will not affect the app. Also, only the datasets declared inside listing.json will be used for Unified Search.
You can host Unified Search datasets locally or in a blob.
DATA_ROOT = <data_folder_absolute_path>az login and select an account that has read permissions on that storageBLOB_ACCOUNT_NAME = <blob_storage_name>data as mentioned in step one, but if you want to use something else you can set:BLOB_CONTAINER_NAME = <blob_container_with_projects>Install all the dependencies: uv sync
Run the project using streamlit: uv run poe start
When you run the app you will see two main panels at the beginning. The left panel provides several configuration options for the app and this panel can be closed:
In the right panel you have several functionalities.