diff --git a/CHANGELOG.md b/CHANGELOG.md index 5df09964a..ebb1a78f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,7 +52,7 @@ Note: version releases in the 0.x.y range may introduce breaking changes. - patch: Add filtering, timestamp explosion, insert/count/remove/update operations to vector store API. Add top-level vector_size config to VectorStoreConfig. - patch: add csv table smoke tests - patch: add manual release instructions -- patch: add streamming to the two first workflows +- patch: add streaming to the two first workflows - patch: add support for cosmosdb output - patch: create_communities streaming - patch: create_final_documents streaming @@ -138,7 +138,7 @@ Note: version releases in the 0.x.y range may introduce breaking changes. - minor: Remove Dynamic Max Retries support. Refactor typer typing in cli interface - minor: Update fnllm to latest. Update default graphrag configuration - patch: A few fixes and enhancements for better reuse and flow. -- patch: Add full llm response to LLM PRovider output +- patch: Add full llm response to LLM Provider output - patch: Fix Drift Reduce Response for non streaming calls - patch: Fix global search prompt to include missing formatting key - patch: Upgrade pyarrow dependency to >=17.0.0 to fix CVE-2024-52338 @@ -165,7 +165,7 @@ Note: version releases in the 0.x.y range may introduce breaking changes. ## 2.1.0 - minor: Add support for JSON input files. -- minor: Updated the prompt tunning client to support csv-metadata injection and updated output file types to match the new naming convention. +- minor: Updated the prompt tuning client to support csv-metadata injection and updated output file types to match the new naming convention. - patch: Add check for custom model types while config loading - patch: Adds general-purpose pipeline run state object. @@ -271,7 +271,7 @@ Note: version releases in the 0.x.y range may introduce breaking changes. ## 0.5.0 - minor: Data model changes. -- patch: Add Parquet as part of the default emitters when not pressent +- patch: Add Parquet as part of the default emitters when not present - patch: Centralized prompts and export all for easier injection. - patch: Cleanup of artifact outputs/schemas. - patch: Config and docs updates. @@ -331,7 +331,7 @@ Note: version releases in the 0.x.y range may introduce breaking changes. - patch: Optimize Create Base Documents subflow - patch: Optimize text unit relationship count - patch: Perf optimizations in map_query_to_entities() -- patch: Remove aggregate_df from final coomunities and final text units +- patch: Remove aggregate_df from final communities and final text units - patch: Remove duplicated relationships and nodes - patch: Remove unused column from final entities - patch: Reorganized api,reporter,callback code into separate components. Defined debug profiles. @@ -422,7 +422,7 @@ Note: version releases in the 0.x.y range may introduce breaking changes. ## 0.2.2 - patch: Add a check if there is no community record added in local search context -- patch: Add sepparate workflow for Python Tests +- patch: Add separate workflow for Python Tests - patch: Docs updates - patch: Run smoke tests on 4o diff --git a/DEVELOPING.md b/DEVELOPING.md index 63bfa9cf9..462ce2569 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -80,7 +80,7 @@ or by simply running `azurite` in the terminal if already installed globally. Se # Lifecycle Scripts -Our Python package utilizes uv to manage dependencies and [poethepoet](https://pypi.org/project/poethepoet/) to manage custom build scripts. +Our Python package uses uv to manage dependencies and [poethepoet](https://pypi.org/project/poethepoet/) to manage custom build scripts. Available scripts are: - `uv run poe index` - Run the Indexing CLI diff --git a/RAI_TRANSPARENCY.md b/RAI_TRANSPARENCY.md index 1a789aede..99b91cd25 100644 --- a/RAI_TRANSPARENCY.md +++ b/RAI_TRANSPARENCY.md @@ -1,41 +1,41 @@ -# GraphRAG: Responsible AI FAQ +# GraphRAG: Responsible AI FAQ -## What is GraphRAG? +## What is GraphRAG? -GraphRAG is an AI-based content interpretation and search capability. Using LLMs, it parses data to create a knowledge graph and answer user questions about a user-provided private dataset. +GraphRAG is an AI-based content interpretation and search capability. Using LLMs, it parses data to create a knowledge graph and answer user questions about a user-provided private dataset. -## What can GraphRAG do? +## What can GraphRAG do? -GraphRAG is able to connect information across large volumes of information and use these connections to answer questions that are difficult or impossible to answer using keyword and vector-based search mechanisms. Building on the previous question, provide semi-technical, high-level information on how the system offers functionality for various uses. This lets a system using GraphRAG to answer questions where the answers span many documents as well as thematic questions such as “what are the top themes in this dataset?.” +GraphRAG can connect information across large volumes of data and use these connections to answer questions that are difficult or impossible to answer using keyword- and vector-based search mechanisms. This enables a system using GraphRAG to answer questions whose answers span many documents, as well as thematic questions such as “What are the top themes in this dataset?” -## What are GraphRAG’s intended use(s)? +## What are GraphRAG’s intended use(s)? -* GraphRAG is intended to support critical information discovery and analysis use cases where the information required to arrive at a useful insight spans many documents, is noisy, is mixed with mis and/or dis-information, or when the questions users aim to answer are more abstract or thematic than the underlying data can directly answer. -* GraphRAG is designed to be used in settings where users are already trained on responsible analytic approaches and critical reasoning is expected. GraphRAG is capable of providing high degrees of insight on complex information topics, however human analysis by a domain expert of the answers is needed in order to verify and augment GraphRAG’s generated responses. -* GraphRAG is intended to be deployed and used with a domain specific corpus of text data. GraphRAG itself does not collect user data, but users are encouraged to verify data privacy policies of the chosen LLM used to configure GraphRAG. +* GraphRAG is intended to support critical information discovery and analysis use cases where the information required to arrive at a useful insight spans many documents, is noisy, is mixed with misinformation or disinformation, or involves questions that are more abstract or thematic than the underlying data can directly answer. +* GraphRAG is designed for settings where users are trained in responsible analytic approaches and expected to apply critical reasoning. GraphRAG can provide deep insight into complex information topics; however, a domain expert should analyze its answers to verify and augment the generated responses. +* GraphRAG is intended to be deployed and used with a domain-specific corpus of text data. GraphRAG itself does not collect user data, but users are encouraged to verify the data privacy policies of the LLM used to configure GraphRAG. -## How was GraphRAG evaluated? What metrics are used to measure performance? +## How was GraphRAG evaluated? What metrics are used to measure performance? -GraphRAG has been evaluated in multiple ways. The primary concerns are 1) accurate representation of the data set, 2) providing transparency and groundedness of responses, 3) resilience to prompt and data corpus injection attacks, and 4) low hallucination rates. Details on how each of these has been evaluated is outlined below by number. +GraphRAG has been evaluated in multiple ways. The primary concerns are 1) accurate representation of the dataset, 2) transparency and groundedness of responses, 3) resilience to prompt and data corpus injection attacks, and 4) low hallucination rates. Details on how each concern was evaluated are outlined below. -1) Accurate representation of the dataset has been tested by both manual inspection and automated testing against a “gold answer” that is created from randomly selected subsets of a test corpus. +1) Accurate representation of the dataset has been tested through both manual inspection and automated testing against a “gold answer” created from randomly selected subsets of a test corpus. -2) Transparency and groundedness of responses is tested via automated answer coverage evaluation and human inspection of the underlying context returned. +2) Transparency and groundedness of responses are tested through automated answer coverage evaluation and human inspection of the returned context. -3) We test both user prompt injection attacks (“jailbreaks”) and cross prompt injection attacks (“data attacks”) using manual and semi-automated techniques. +3) We test both user prompt injection attacks (“jailbreaks”) and cross-prompt injection attacks (“data attacks”) using manual and semi-automated techniques. -4) Hallucination rates are evaluated using claim coverage metrics, manual inspection of answer and source, and adversarial attacks to attempt a forced hallucination through adversarial and exceptionally challenging datasets. +4) Hallucination rates are evaluated using claim coverage metrics, manual inspection of answers and sources, and attempts to force hallucinations through adversarial and exceptionally challenging datasets. -## What are the limitations of GraphRAG? How can users minimize the impact of GraphRAG’s limitations when using the system? +## What are the limitations of GraphRAG? How can users minimize the impact of GraphRAG’s limitations when using the system? -GraphRAG depends on a well-constructed indexing examples. For general applications (e.g. content oriented around people, places, organizations, things, etc.) we provide example indexing prompts. For unique datasets effective indexing can depend on proper identification of domain-specific concepts. +GraphRAG depends on well-constructed indexing prompts. For general applications (for example, content about people, places, organizations, or things), we provide example prompts. For unique datasets, effective indexing can depend on properly identifying domain-specific concepts. -Indexing is a relatively expensive operation; a best practice to mitigate indexing is to create a small test dataset in the target domain to ensure indexer performance prior to large indexing operations. +Indexing is a relatively expensive operation. To mitigate its cost, create a small test dataset in the target domain to evaluate indexer performance before running large indexing operations. -## What operational factors and settings allow for effective and responsible use of GraphRAG? +## What operational factors and settings allow for effective and responsible use of GraphRAG? -GraphRAG is designed for use by users with domain sophistication and experience working through difficult information challenges. While the approach is generally robust to injection attacks and identifying conflicting sources of information, the system is designed for trusted users. Proper human analysis of responses is important to generate reliable insights, and the provenance of information should be traced to ensure human agreement with the inferences made as part of the answer generation. +GraphRAG is designed for users with domain expertise and experience working through difficult information challenges. While the approach is generally robust to injection attacks and can identify conflicting sources of information, the system is designed for trusted users. Human analysis of responses is important for generating reliable insights, and information provenance should be traced to verify the inferences made during answer generation. -GraphRAG yields the most effective results on natural language text data that is collectively focused on an overall topic or theme, and that is entity rich – entities being people, places, things, or objects that can be uniquely identified. +GraphRAG yields the most effective results on natural-language text data focused on an overall topic or theme and rich in identifiable entities such as people, places, or objects. -While GraphRAG has been evaluated for its resilience to prompt and data corpus injection attacks, and has been probed for specific types of harms, the LLM that the user configures with GraphRAG may produce inappropriate or offensive content, which may make it inappropriate to deploy for sensitive contexts without additional mitigations that are specific to the use case and model. Developers should assess outputs for their context and use available safety classifiers, model specific safety filters and features (such as https://azure.microsoft.com/en-us/products/ai-services/ai-content-safety), or custom solutions appropriate for their use case. \ No newline at end of file +While GraphRAG has been evaluated for resilience to prompt and data corpus injection attacks and probed for specific types of harm, the configured LLM may produce inappropriate or offensive content. This may make GraphRAG unsuitable for sensitive contexts without additional mitigations specific to the use case and model. Developers should assess outputs for their context and use available safety classifiers, model-specific safety filters and features (such as [Azure AI Content Safety](https://azure.microsoft.com/en-us/products/ai-services/ai-content-safety)), or custom solutions appropriate for their use case. \ No newline at end of file diff --git a/README.md b/README.md index b17d46fda..f4bae1dd5 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ We strongly recommend to fine-tune your prompts following the [Prompt Tuning Gui Please see the [breaking changes](./breaking-changes.md) document for notes on our approach to versioning the project. -*Always run `graphrag init --root [path] --force` between minor version bumps to ensure you have the latest config format. Run the provided migration notebook between major version bumps if you want to avoid re-indexing prior datasets. Note that this will overwrite your configuration and prompts, so backup if necessary.* +*Always run `graphrag init --root [path] --force` between minor version bumps to ensure you have the latest config format. Run the provided migration notebook between major version bumps if you want to avoid re-indexing prior datasets. Note that this will overwrite your configuration and prompts, so back them up if necessary.* ## Responsible AI FAQ diff --git a/breaking-changes.md b/breaking-changes.md index 93430cbfe..013e65869 100644 --- a/breaking-changes.md +++ b/breaking-changes.md @@ -7,10 +7,10 @@ There are five surface areas that may be impacted on any given release. They are - [CLI](https://microsoft.github.io/graphrag/cli/) - The CLI is the interface most project consumers are using. **Changes to the CLI will conform to standard semver.** - [API](https://github.com/microsoft/graphrag/tree/main/graphrag/api) - The API layer is the primary interface we expect developers to use if they are consuming the project as a library in their own codebases. **Changes to the API layer modules will conform to standard semver.** - Internals - Any code modules behind the CLI and API layers are considered "internal" and may change at any time without conforming to strict semver. This is intended to give the research team high flexibility to change our underlying implementation rapidly. We are not enforcing access via tightly controlled `__init__.py` files, so please understand that if you utilize modules other than the index or query API, they may break between releases in a non-semver-compliant manner. -- [settings.yaml](https://microsoft.github.io/graphrag/config/yaml/) - The settings.yaml file may have changes made to it as we adjust configurability. **Changes that affect the settings.yml will result in a minor version bump**. `graphrag init` will always emit compatible starter config, so we recommend always running the command when updating GraphRAG between minor versions, and copying your endpoint information or other customizations over to the new file. +- [settings.yaml](https://microsoft.github.io/graphrag/config/yaml/) - The settings.yaml file may have changes made to it as we adjust configurability. **Changes that affect settings.yaml will result in a minor version bump**. `graphrag init` will always emit a compatible starter config, so we recommend running the command when updating GraphRAG between minor versions and copying your endpoint information or other customizations to the new file. - [Data model](https://microsoft.github.io/graphrag/index/outputs/) - The output data model may change over time as we adjust our approach. **Changes to the data model will conform to standard semver.** Any changes to the output tables will be shimmed for backwards compatibility between major releases, and we'll provide a migration notebook for folks to upgrade without requiring a re-index. -> TL;DR: Always run `graphrag init --path [path] --force` between minor version bumps to ensure you have the latest config format. Run the provided migration notebook between major version bumps if you want to avoid re-indexing prior datasets. Note that this will overwrite your configuration and prompts, so backup if necessary. +> TL;DR: Always run `graphrag init --path [path] --force` between minor version bumps to ensure you have the latest config format. Run the provided migration notebook between major version bumps if you want to avoid re-indexing prior datasets. Note that this will overwrite your configuration and prompts, so back them up if necessary. # v3 Run the [migration notebook](./docs/examples_notebooks/index_migration_to_v3.ipynb) to convert older tables to the v3 format. Our main goals with v3 were to slim down the core library to minimize long-term maintenance of features that are either largely unused or should have been out of scope for a long time anyway. diff --git a/cspell.config.yaml b/cspell.config.yaml index 84768e7fa..7ab205cd6 100644 --- a/cspell.config.yaml +++ b/cspell.config.yaml @@ -11,6 +11,7 @@ ignorePaths: - cspell.config.yaml - node_modules - _site + - site/ - /project-words.txt - default_pipeline.yml - .turbo diff --git a/docs/developing.md b/docs/developing.md index eea14d00b..1009cce9a 100644 --- a/docs/developing.md +++ b/docs/developing.md @@ -40,7 +40,7 @@ or by simply running `azurite` in the terminal if already installed globally. Se # Lifecycle Scripts -Our Python package utilize uv to manage dependencies and [poethepoet](https://pypi.org/project/poethepoet/) to manage build scripts. +Our Python package uses uv to manage dependencies and [poethepoet](https://pypi.org/project/poethepoet/) to manage build scripts. Available scripts are: diff --git a/docs/examples_notebooks/api_overview.ipynb b/docs/examples_notebooks/api_overview.ipynb index 2a0c0f15d..68367d36e 100644 --- a/docs/examples_notebooks/api_overview.ipynb +++ b/docs/examples_notebooks/api_overview.ipynb @@ -139,7 +139,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The response object is the official reponse from graphrag while the context object holds various metadata regarding the querying process used to obtain the final response.\n" + "The response object contains GraphRAG's response, while the context object holds metadata about the querying process used to obtain the final response." ] }, { diff --git a/docs/examples_notebooks/global_search_with_dynamic_community_selection.ipynb b/docs/examples_notebooks/global_search_with_dynamic_community_selection.ipynb index 13464438c..5bbc45928 100644 --- a/docs/examples_notebooks/global_search_with_dynamic_community_selection.ipynb +++ b/docs/examples_notebooks/global_search_with_dynamic_community_selection.ipynb @@ -132,11 +132,11 @@ "source": [ "#### Build global context with dynamic community selection\n", "\n", - "The goal of dynamic community selection reduce the number of community reports that need to be processed in the map-reduce operation. To that end, we take advantage of the hierachical structure of the indexed dataset. We first ask the LLM to rate how relevant each level 0 community is with respect to the user query, we then traverse down the child node(s) if the current community report is deemed relevant.\n", + "The goal of dynamic community selection is to reduce the number of community reports processed in the map-reduce operation. To do this, we take advantage of the hierarchical structure of the indexed dataset. We first ask the LLM to rate the relevance of each level 0 community to the user query, then traverse to its child nodes if the current community report is relevant.\n", "\n", - "You can still set a `COMMUNITY_LEVEL` to filter out lower level community reports and apply dynamic community selection on the filtered reports.\n", + "You can still set a `COMMUNITY_LEVEL` to filter out lower-level community reports and apply dynamic community selection to the remaining reports.\n", "\n", - "Note that the dataset is quite small, with only consist of 20 communities from 2 levels (level 0 and 1). Dynamic community selection is more effective when there are large amount of content to be filtered out." + "Note that the dataset is quite small, consisting of only 20 communities across two levels (0 and 1). Dynamic community selection is more effective when there is a large amount of content to filter out." ] }, { @@ -266,7 +266,7 @@ ], "metadata": { "kernelspec": { - "display_name": "graphrag", + "display_name": "graphrag-monorepo (3.12.10)", "language": "python", "name": "python3" }, diff --git a/docs/examples_notebooks/input_documents.ipynb b/docs/examples_notebooks/input_documents.ipynb index 5657770ea..2652e4a36 100644 --- a/docs/examples_notebooks/input_documents.ipynb +++ b/docs/examples_notebooks/input_documents.ipynb @@ -140,7 +140,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The response object is the official reponse from graphrag while the context object holds various metadata regarding the querying process used to obtain the final response.\n" + "The response object contains GraphRAG's response, while the context object holds metadata about the querying process used to obtain the final response." ] }, { diff --git a/docs/get_started.md b/docs/get_started.md index c6aa84b50..786ea29bd 100644 --- a/docs/get_started.md +++ b/docs/get_started.md @@ -89,10 +89,10 @@ api_version: 2024-02-15-preview # You can customize this for other versions To use managed auth, edit the auth_method in your model config and remove the api_key line: ```yaml -auth_method: azure_managed_identity # Default auth_method is is api_key +auth_method: azure_managed_identity # Default auth_method is api_key ``` -You will also need to login with [az login](https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli) and select the subscription with your endpoint. +You will also need to log in with [az login](https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli) and select the subscription with your endpoint. ## Index diff --git a/docs/index.md b/docs/index.md index f3ecb31e7..ea6904252 100644 --- a/docs/index.md +++ b/docs/index.md @@ -59,4 +59,4 @@ We strongly recommend to fine-tune your prompts following the [Prompt Tuning Gui Please see the [breaking changes](https://github.com/microsoft/graphrag/blob/main/breaking-changes.md) document for notes on our approach to versioning the project. -*Always run `graphrag init --root [path] --force` between minor version bumps to ensure you have the latest config format. Run the provided migration notebook between major version bumps if you want to avoid re-indexing prior datasets. Note that this will overwrite your configuration and prompts, so backup if necessary.* \ No newline at end of file +*Always run `graphrag init --root [path] --force` between minor version bumps to ensure you have the latest config format. Run the provided migration notebook between major version bumps if you want to avoid re-indexing prior datasets. Note that this will overwrite your configuration and prompts, so back them up if necessary.* \ No newline at end of file diff --git a/docs/index/default_dataflow.md b/docs/index/default_dataflow.md index 051c06e6e..777352ede 100644 --- a/docs/index/default_dataflow.md +++ b/docs/index/default_dataflow.md @@ -53,9 +53,9 @@ flowchart TB ## Phase 1: Compose TextUnits -The first phase of the default-configuration workflow is to transform input documents into _TextUnits_. A _TextUnit_ is a chunk of text that is used for our graph extraction techniques. They are also used as source-references by extracted knowledge items in order to empower breadcrumbs and provenance by concepts back to their original source text. +The first phase of the default-configuration workflow is to transform input documents into _TextUnits_. A _TextUnit_ is a chunk of text used by our graph extraction techniques. TextUnits are also referenced by extracted knowledge items, providing provenance back to the original source text. -The chunk size (counted in tokens), is user-configurable. By default this is set to 1200 tokens. Larger chunks result in lower-fidelity output and less meaningful reference texts; however, using larger chunks can result in much faster processing time. +The chunk size (counted in tokens) is user-configurable. By default, it is set to 1200 tokens. Larger chunks result in lower-fidelity output and less meaningful reference texts; however, they can result in much faster processing. ```mermaid --- diff --git a/docs/query/drift_search.md b/docs/query/drift_search.md index 1a4c1ef3b..f0b48dee6 100644 --- a/docs/query/drift_search.md +++ b/docs/query/drift_search.md @@ -25,7 +25,7 @@ Below are the key parameters of the [DRIFTSearch class](https://github.com/micro - `context_builder`: [context builder](https://github.com/microsoft/graphrag/blob/main/packages/graphrag/graphrag/query/structured_search/drift_search/drift_context.py) object to be used for preparing context data from community reports and query information - `config`: model to define the DRIFT Search hyperparameters. [DRIFT Config model](https://github.com/microsoft/graphrag/blob/main/packages/graphrag/graphrag/config/models/drift_search_config.py) - `tokenizer`: token encoder for tracking the budget for the algorithm. -- `query_state`: a state object as defined in [Query State](https://github.com/microsoft/graphrag/blob/main/packages/graphrag/graphrag/query/structured_search/drift_search/state.py) that allows to track execution of a DRIFT Search instance, alongside follow ups and [DRIFT actions](https://github.com/microsoft/graphrag/blob/main/packages/graphrag/graphrag/query/structured_search/drift_search/action.py). +- `query_state`: a state object as defined in [Query State](https://github.com/microsoft/graphrag/blob/main/packages/graphrag/graphrag/query/structured_search/drift_search/state.py) that tracks the execution of a DRIFT Search instance, including follow-up questions and [DRIFT actions](https://github.com/microsoft/graphrag/blob/main/packages/graphrag/graphrag/query/structured_search/drift_search/action.py). ## How to Use diff --git a/packages/graphrag/README.md b/packages/graphrag/README.md index 2de7d4d0f..23748b176 100644 --- a/packages/graphrag/README.md +++ b/packages/graphrag/README.md @@ -50,7 +50,7 @@ We strongly recommend to fine-tune your prompts following the [Prompt Tuning Gui Please see the [breaking changes](./breaking-changes.md) document for notes on our approach to versioning the project. -*Always run `uv run poe init --root [path] --force` between minor version bumps to ensure you have the latest config format. Run the provided migration notebook between major version bumps if you want to avoid re-indexing prior datasets. Note that this will overwrite your configuration and prompts, so backup if necessary.* +*Always run `uv run poe init --root [path] --force` between minor version bumps to ensure you have the latest config format. Run the provided migration notebook between major version bumps if you want to avoid re-indexing prior datasets. Note that this will overwrite your configuration and prompts, so back them up if necessary.* ## Responsible AI FAQ diff --git a/unified-search-app/README.md b/unified-search-app/README.md index 6e7ccc82f..a401f1d80 100644 --- a/unified-search-app/README.md +++ b/unified-search-app/README.md @@ -93,19 +93,19 @@ Run the project using streamlit: `uv run poe start` ![Initial page](images/image-1.png) ## Configuration panel (left panel) -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: -1. **Datasets**: Here all the datasets you defined inside the listing.json file are shown in order inside the dropdown. -2. **Number of suggested questions**: this option let the user to choose how many suggested question can be generated. -3. **Search options**: This section allows to choose which searches to use in the app. At least one search should be enabled to use the app. +When you run the app, you will see two main panels. The left panel provides several configuration options and can be closed: +1. **Datasets**: All datasets defined in the listing.json file are shown in the dropdown. +2. **Number of suggested questions**: This option lets you choose how many suggested questions to generate. +3. **Search options**: This section lets you choose which searches to use in the app. At least one search must be enabled. ## Searches panel (right panel) -In the right panel you have several functionalities. +The right panel provides several functions. 1. At the top you can see general information related to the chosen dataset (name and description). -2. Below the dataset information there is a button labeled "Suggest some questions" which analyzes the dataset using global search and generates the most important questions (the number of questions generated is the amount set in the configuration panel). If you want to select a question generated you have to click the checkbox at the left side of the question to select it. -3. A textbox that it is labeled as "Ask a question to compare the results" where you can type the question that you want to send. +2. Below the dataset information, a button labeled "Suggest some questions" analyzes the dataset using global search and generates the number of questions set in the configuration panel. To select a generated question, click the checkbox to its left. +3. A text box labeled "Ask a question to compare the results" lets you type the question that you want to send. 4. Two tabs called Search and Community Explorer: - 1. Search: Here all the searches results are displayed with their citations. - 2. Community Explorer: This tab is divided in two sections: Community Reports List, and Selected Report. + 1. Search: All search results are displayed with their citations. + 2. Community Explorer: This tab is divided into two sections: Community Reports List and Selected Report. ##### Suggest some question clicked ![Suggest some question clicked](images/image-2.png)