2024-04-04 01:23:24 +00:00
<!doctype html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Question Generation ❔< / title >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css" >
< link href = "https://unpkg.com/prismjs@1.20.0/themes/prism-okaidia.css" rel = "stylesheet" >
< link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/Primer/19.1.1/tooltips.min.css" crossorigin = "anonymous" referrerpolicy = "no-referrer" / >
< style >
html {
padding: 0;
margin: 0;
}
body{
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
padding: 0;
margin: 0;
}
footer{
width: 100%;
height: 32px;
font-size: 12px;
display: flex;
flex-direction: row;
justify-content: center;
gap: 18px;
align-items: center;
color: #5d5d5d;
background: #e9eaeb;
border-top: 1px solid #c4c5c6;
}
#cookiesManager{
cursor: pointer;
color: #485fc7;
}
.page-content {
display: flex;
flex-direction: row;
margin: 0;
padding: 0;
overflow: scroll;
padding: 0;
margin: 0;
}
header {
background-color: lightgrey;
height: 2%;
padding: 10px;
}
nav {
padding: 1em;
min-width: 200px;
}
main {
flex: 1;
padding: 0 5em 0 5em;
}
.logotitle {
font-size: 1.5em;
font-weight: bold;
margin: 5px;
}
.number {
all: unset;
}
.tag.token {
all: unset;
}
main ul {
list-style-type: disc;
padding-left: 30px;
margin-top: 10px;
}
h1 {
font-size: 2rem;
margin-top: 10px;
}
h2 {
font-size: 1.5rem;
margin-top: 10px;
font-weight: 500;
}
h3 {
font-size: 1rem;
margin-top: 10px;
font-weight: 500;
}
p {
margin-top: 10px;
}
< / style >
< script type = "module" async > import mermaid from "https://unpkg.com/mermaid@10/dist/mermaid.esm.min.mjs" ; document . addEventListener ( 'DOMContentLoaded' , mermaid . initialize ( { "loadOnSave" : true } ) ) ; < / script >
< script > function showTooltip ( o , e ) { o . trigger . className . includes ( "tooltipped" ) || ( o . trigger . children [ 0 ] . className = "tooltipped tooltipped-s" , o . trigger . children [ 0 ] . ariaLabel = e ) } window . addEventListener ( "load" , ( ) => { var o = new ClipboardJS ( ".code-copy" ) ; o . on ( "success" , o => showTooltip ( o , "Copied!" ) ) , o . on ( "error" , o => showTooltip ( o , "Failed..." ) ) } ) ; < / script >
< script async src = "https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" > < / script >
< script src = "https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js" type = "text/javascript" > < / script >
< script >
function onConsentChanged(categoryPreferences) {
console.log("onConsentChanged", categoryPreferences);
}
var siteConsent
function initialize(){
var currentYear = new Date().getFullYear()
document.getElementById("copyright").innerHTML = `©️ ${currentYear} Microsoft`;
window.WcpConsent & & WcpConsent.init("en-US", "cookie-banner", function (err, _siteConsent) {
if (!err) {
siteConsent = _siteConsent; //siteConsent is used to get the current consent
} else {
console.log("Error initializing WcpConsent: "+ err);
}
}, onConsentChanged, WcpConsent.themes.light);
}
addEventListener("DOMContentLoaded", initialize)
function manageConsent() {
if(siteConsent.isConsentRequired){
siteConsent.manageConsent();
}
}
< / script >
< / head >
< body >
< header >
< div id = "cookie-banner" > < / div >
< a href = "/" > < span class = "logotitle" > GraphRAG< / span > < / a >
< / header >
< div class = "page-content" >
<!-- Sidebar -->
< aside class = "menu" >
< ul class = "menu-list" >
< li >
< a href = "/" > Welcome< / a >
< / li >
<!-- Get Started Links -->
< li >
< a href = "/_posts/get_started/" > Get Started< / a >
< a href = "/_posts/developing/" > Developing< / a >
< / li >
<!-- Indexing Links -->
< li >
< a href = "/_posts/_index/overview/" > Indexing< / a >
< ul > < li >
< a href = "/_posts/_index/0-architecture/" > Architecture< / a >
< / li > < li >
< a href = "/_posts/_index/1-default_dataflow/" > Dataflow< / a >
< / li > < li >
< a href = "/_posts/_index/2-cli/" > CLI< / a >
< / li > < li >
< a href = "/_posts/_index/_workflows/overview/" > Workflows< / a >
< ul hidden > < li >
< a href = "/_posts/_indexing/_workflows/create_base_document_graph/" > create_base_document_graph< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_base_document_nodes/" > create_base_document_nodes< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_base_documents/" > create_base_documents< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_base_entity_graph/" > create_base_entity_graph< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_base_entity_nodes/" > create_base_entity_nodes< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_base_extracted_entities/" > create_base_extracted_entities< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_base_text_units/" > create_base_text_units< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_final_communities/" > create_final_communities< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_final_community_reports/" > create_final_community_reports< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_final_covariates/" > create_final_covariates< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_final_documents/" > create_final_documents< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_final_entities/" > create_final_entities< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_final_nodes/" > create_final_nodes< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_final_relationships/" > create_final_relationships< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_final_text_units/" > create_final_text_units< / a >
< / li > < li >
< a href = "/_posts/_indexing/_workflows/create_summarized_entities/" > create_summarized_entities< / a >
< / li > < li >
2024-04-04 01:50:39 +00:00
< a href = "/_posts/_index/_workflows/create_final_community_reports/" > create_final_community_reports< / a >
2024-04-04 01:23:24 +00:00
< / li > < li >
2024-04-04 01:50:39 +00:00
< a href = "/_posts/_index/_workflows/create_final_relationships/" > create_final_relationships< / a >
< / li > < li >
< a href = "/_posts/_index/_workflows/create_summarized_entities/" > create_summarized_entities< / a >
< / li > < li >
2024-04-04 03:39:20 +00:00
< a href = "/_posts/_index/_workflows/create_base_documents/" > create_base_documents< / a >
2024-04-04 01:38:33 +00:00
< / li > < li >
2024-04-04 03:39:20 +00:00
< a href = "/_posts/_index/_workflows/create_base_entity_graph/" > create_base_entity_graph< / a >
2024-04-04 02:26:49 +00:00
< / li > < li >
2024-04-04 03:39:20 +00:00
< a href = "/_posts/_index/_workflows/create_final_communities/" > create_final_communities< / a >
2024-04-04 01:38:33 +00:00
< / li > < li >
2024-04-04 01:50:39 +00:00
< a href = "/_posts/_index/_workflows/create_final_covariates/" > create_final_covariates< / a >
2024-04-04 01:42:23 +00:00
< / li > < li >
< a href = "/_posts/_index/_workflows/create_final_documents/" > create_final_documents< / a >
< / li > < li >
2024-04-04 02:27:06 +00:00
< a href = "/_posts/_index/_workflows/create_final_entities/" > create_final_entities< / a >
< / li > < li >
< a href = "/_posts/_index/_workflows/create_final_nodes/" > create_final_nodes< / a >
< / li > < li >
2024-04-04 03:39:20 +00:00
< a href = "/_posts/_index/_workflows/create_base_extracted_entities/" > create_base_extracted_entities< / a >
< / li > < li >
< a href = "/_posts/_index/_workflows/create_base_text_units/" > create_base_text_units< / a >
< / li > < li >
2024-04-04 01:50:39 +00:00
< a href = "/_posts/_index/_workflows/create_final_text_units/" > create_final_text_units< / a >
2024-04-04 01:23:24 +00:00
< / li > < / ul >
< / li >
< li >
< a href = "/_posts/_index/_verbs/overview/" > Verbs< / a >
< ul hidden > < li >
< a href = "/_posts/_indexing/_verbs/aggregate/" > aggregate< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/chunk/" > chunk< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/cluster_graph/" > cluster_graph< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/concat/" > concat< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/create_graph/" > create_graph< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/genid/" > genid< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/layout_graph/" > layout_graph< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/merge/" > merge< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/merge_graphs/" > merge_graphs< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/noop/" > noop< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/spread_json/" > spread_json< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/text_replace/" > text_replace< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/text_split/" > text_split< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/unpack_graph/" > unpack_graph< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/unzip/" > unzip< / a >
< / li > < li >
< a href = "/_posts/_indexing/_verbs/zip/" > zip< / a >
< / li > < li >
2024-04-04 01:38:33 +00:00
< a href = "/_posts/_index/_verbs/genid/" > genid< / a >
< / li > < li >
2024-04-04 01:23:24 +00:00
< a href = "/_posts/_index/_verbs/spread_json/" > spread_json< / a >
< / li > < li >
2024-04-04 02:27:06 +00:00
< a href = "/_posts/_index/_verbs/unzip/" > unzip< / a >
< / li > < li >
2024-04-04 01:23:24 +00:00
< a href = "/_posts/_index/_verbs/zip/" > zip< / a >
< / li > < li >
< a href = "/_posts/_index/_verbs/aggregate/" > aggregate< / a >
< / li > < li >
< a href = "/_posts/_index/_verbs/concat/" > concat< / a >
< / li > < li >
< a href = "/_posts/_index/_verbs/merge/" > merge< / a >
< / li > < li >
2024-04-04 02:27:49 +00:00
< a href = "/_posts/_index/_verbs/text_replace/" > text_replace< / a >
< / li > < li >
2024-04-04 01:23:24 +00:00
< a href = "/_posts/_index/_verbs/text_split/" > text_split< / a >
< / li > < li >
2024-04-04 02:27:06 +00:00
< a href = "/_posts/_index/_verbs/chunk/" > chunk< / a >
< / li > < li >
2024-04-04 02:27:49 +00:00
< a href = "/_posts/_index/_verbs/create_graph/" > create_graph< / a >
2024-04-04 02:27:06 +00:00
< / li > < li >
2024-04-04 02:26:49 +00:00
< a href = "/_posts/_index/_verbs/unpack_graph/" > unpack_graph< / a >
< / li > < li >
2024-04-04 02:27:49 +00:00
< a href = "/_posts/_index/_verbs/layout_graph/" > layout_graph< / a >
2024-04-04 01:23:24 +00:00
< / li > < li >
2024-04-04 02:26:15 +00:00
< a href = "/_posts/_index/_verbs/merge_graphs/" > merge_graphs< / a >
< / li > < li >
2024-04-04 01:23:24 +00:00
< a href = "/_posts/_index/_verbs/cluster_graph/" > cluster_graph< / a >
< / li > < / ul >
< / li >
< li >
< a href = "/_posts/_config/overview/" > Configuration< / a >
< ul >
< li >
< a href = "/_posts/_config/env_vars" > Using Env Vars< / a >
< / li >
< li >
< a href = "/_posts/_config/json_yaml" > Using JSON or YAML< / a >
< / li >
< li >
< a href = "/_posts/_config/custom" > Fully Custom< / a >
< / li >
< / ul >
< / li >
< / ul >
< / li >
<!-- Query Links -->
< li >
< a href = "/_posts/_query/overview/" > Query< / a >
< ul > < li >
< a href = "/_posts/_query/0-global_search/" > Global Search< / a >
< / li > < li >
< a href = "/_posts/_query/1-local_search/" > Local Search< / a >
< / li > < li >
< a href = "/_posts/_query/2-question_generation/" class = "is-active" aria-current = "page" > Question Generation< / a >
< / li > < li >
< a href = "/_posts/_query/3-cli/" > CLI< / a >
< / li > < li >
< a href = "/_posts/_query/notebooks/overview/" > Notebooks< / a >
< ul >
< li >
< a href = "/_posts/_query/notebooks/global_search_nb" > Global Search< / a >
< / li >
< li >
< a href = "/_posts/_query/notebooks/local_search_nb" > Local Search< / a >
< / li >
< / ul >
< / li >
< / ul >
< / li >
< / ul >
< / aside >
<!-- Main Content -->
< main >
< h1 > Question Generation ❔< / h1 >
< h2 > Entity-based Question Generation< / h2 >
< p > The < a href = "../../../../python/graphrag/graphrag/query/question_gen/" > question generation< / a > method combines structured data from the knowledge graph with unstructured data from the input documents to generate candidate questions related to specific entities.< / p >
< h2 > Methodology< / h2 >
< p > Given a list of prior user questions, the question generation method uses the same context-building approach employed in < a href = "1-local_search.md" > local search< / a > to extract and prioritize relevant structured and unstructured data, including entities, relationships, covariates, community reports and raw text chunks. These data records are then fitted into a single LLM prompt to generate candidate follow-up questions that represent the most important or urgent information content or themes in the data.< / p >
< h2 > Configuration< / h2 >
< p > Below are the key parameters of the < a href = "../../../../python/graphrag/graphrag/query/question_gen/local_gen.py" > Question Generation class< / a > :< / p >
< ul >
< li > < code > llm< / code > : OpenAI model object to be used for response generation< / li >
< li > < code > context_builder< / code > : < a href = "../../../../python/graphrag/graphrag/query/structured_search/local_search/mixed_context.py" > context builder< / a > object to be used for preparing context data from collections of knowledge model objects, using the same context builder class as in local search< / li >
< li > < code > system_prompt< / code > : prompt template used to generate candidate questions. Default template can be found at < a href = "../../../../python/graphrag/graphrag/query/question_gen/system_prompt.py" > system_prompt< / a > < / li >
< li > < code > llm_params< / code > : a dictionary of additional parameters (e.g., temperature, max_tokens) to be passed to the LLM call< / li >
< li > < code > context_builder_params< / code > : a dictionary of additional parameters to be passed to the < a href = "../../../../python/graphrag/graphrag/query/structured_search/local_search/mixed_context.py" > < code > context_builder< / code > < / a > object when building context for the question generation prompt< / li >
< li > < code > callbacks< / code > : optional callback functions, can be used to provide custom event handlers for LLM's completion streaming events< / li >
< / ul >
< h2 > How to Use< / h2 >
< p > An example of the question generation function can be found in the following < a href = "../notebooks/local_search_nb" > notebook< / a > .< / p >
< / main >
< / div >
< footer >
< a href = "https://go.microsoft.com/fwlink/?LinkId=521839" > Privacy< / a >
|
< a href = "https://go.microsoft.com/fwlink/?LinkId=2259814" > Consumer Health Privacy< / a >
|
< span id = "cookiesManager" onClick = "manageConsent();" > Cookies< / span >
|
< a href = "https://go.microsoft.com/fwlink/?LinkID=206977" > Terms of Use< / a >
|
< a href = "https://www.microsoft.com/trademarks" > Trademarks< / a >
|
< a href = "https://www.microsoft.com" id = "copyright" > < / a >
|
< a href = "https://github.com/microsoft/graphrag" > GitHub< / a >
< / footer >
< / body >
< / html >