Sub Question Query Engine

pydantic model llama_index.query_engine.sub_question_query_engine.SubQuestionAnswerPair

Pair of the sub question and optionally its answer (if its been answered yet).

Show JSON schema
{
   "title": "SubQuestionAnswerPair",
   "description": "Pair of the sub question and optionally its answer (if its been answered yet).",
   "type": "object",
   "properties": {
      "sub_q": {
         "$ref": "#/definitions/SubQuestion"
      },
      "answer": {
         "title": "Answer",
         "type": "string"
      },
      "sources": {
         "title": "Sources",
         "type": "array",
         "items": {
            "$ref": "#/definitions/NodeWithScore"
         }
      }
   },
   "required": [
      "sub_q"
   ],
   "definitions": {
      "SubQuestion": {
         "title": "SubQuestion",
         "type": "object",
         "properties": {
            "sub_question": {
               "title": "Sub Question",
               "type": "string"
            },
            "tool_name": {
               "title": "Tool Name",
               "type": "string"
            }
         },
         "required": [
            "sub_question",
            "tool_name"
         ]
      },
      "ObjectType": {
         "title": "ObjectType",
         "description": "An enumeration.",
         "enum": [
            "1",
            "2",
            "3",
            "4"
         ],
         "type": "string"
      },
      "RelatedNodeInfo": {
         "title": "RelatedNodeInfo",
         "description": "Base component object to capture class names.",
         "type": "object",
         "properties": {
            "node_id": {
               "title": "Node Id",
               "type": "string"
            },
            "node_type": {
               "$ref": "#/definitions/ObjectType"
            },
            "metadata": {
               "title": "Metadata",
               "type": "object"
            },
            "hash": {
               "title": "Hash",
               "type": "string"
            },
            "class_name": {
               "title": "Class Name",
               "type": "string",
               "default": "RelatedNodeInfo"
            }
         },
         "required": [
            "node_id"
         ]
      },
      "BaseNode": {
         "title": "BaseNode",
         "description": "Base node Object.\n\nGeneric abstract interface for retrievable nodes",
         "type": "object",
         "properties": {
            "id_": {
               "title": "Id ",
               "description": "Unique ID of the node.",
               "type": "string"
            },
            "embedding": {
               "title": "Embedding",
               "description": "Embedding of the node.",
               "type": "array",
               "items": {
                  "type": "number"
               }
            },
            "extra_info": {
               "title": "Extra Info",
               "description": "A flat dictionary of metadata fields",
               "type": "object"
            },
            "excluded_embed_metadata_keys": {
               "title": "Excluded Embed Metadata Keys",
               "description": "Metadata keys that are excluded from text for the embed model.",
               "type": "array",
               "items": {
                  "type": "string"
               }
            },
            "excluded_llm_metadata_keys": {
               "title": "Excluded Llm Metadata Keys",
               "description": "Metadata keys that are excluded from text for the LLM.",
               "type": "array",
               "items": {
                  "type": "string"
               }
            },
            "relationships": {
               "title": "Relationships",
               "description": "A mapping of relationships to other node information.",
               "type": "object",
               "additionalProperties": {
                  "anyOf": [
                     {
                        "$ref": "#/definitions/RelatedNodeInfo"
                     },
                     {
                        "type": "array",
                        "items": {
                           "$ref": "#/definitions/RelatedNodeInfo"
                        }
                     }
                  ]
               }
            },
            "hash": {
               "title": "Hash",
               "description": "Hash of the node content.",
               "default": "",
               "type": "string"
            },
            "class_name": {
               "title": "Class Name",
               "type": "string",
               "default": "base_component"
            }
         }
      },
      "NodeWithScore": {
         "title": "NodeWithScore",
         "description": "Base component object to capture class names.",
         "type": "object",
         "properties": {
            "node": {
               "$ref": "#/definitions/BaseNode"
            },
            "score": {
               "title": "Score",
               "type": "number"
            },
            "class_name": {
               "title": "Class Name",
               "type": "string",
               "default": "NodeWithScore"
            }
         },
         "required": [
            "node"
         ]
      }
   }
}

Fields
field answer: Optional[str] = None
field sources: List[NodeWithScore] [Optional]
field sub_q: SubQuestion [Required]
classmethod construct(_fields_set: Optional[SetStr] = None, **values: Any) Model

Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed. Behaves as if Config.extra = ‘allow’ was set since it adds all passed values

copy(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, update: Optional[DictStrAny] = None, deep: bool = False) Model

Duplicate a model, optionally choose which fields to include, exclude and change.

Parameters
  • include – fields to include in new model

  • exclude – fields to exclude from new model, as with values this takes precedence over include

  • update – values to change/add in the new model. Note: the data is not validated before creating the new model: you should trust this data

  • deep – set to True to make a deep copy of the model

Returns

new model instance

dict(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False) DictStrAny

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

classmethod from_orm(obj: Any) Model
json(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, encoder: Optional[Callable[[Any], Any]] = None, models_as_dict: bool = True, **dumps_kwargs: Any) unicode

Generate a JSON representation of the model, include and exclude arguments as per dict().

encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps().

classmethod parse_file(path: Union[str, Path], *, content_type: unicode = None, encoding: unicode = 'utf8', proto: Protocol = None, allow_pickle: bool = False) Model
classmethod parse_obj(obj: Any) Model
classmethod parse_raw(b: Union[str, bytes], *, content_type: unicode = None, encoding: unicode = 'utf8', proto: Protocol = None, allow_pickle: bool = False) Model
classmethod schema(by_alias: bool = True, ref_template: unicode = '#/definitions/{model}') DictStrAny
classmethod schema_json(*, by_alias: bool = True, ref_template: unicode = '#/definitions/{model}', **dumps_kwargs: Any) unicode
classmethod update_forward_refs(**localns: Any) None

Try to update ForwardRefs on fields based on this Model, globalns and localns.

classmethod validate(value: Any) Model
class llama_index.query_engine.sub_question_query_engine.SubQuestionQueryEngine(question_gen: BaseQuestionGenerator, response_synthesizer: BaseSynthesizer, query_engine_tools: Sequence[QueryEngineTool], callback_manager: Optional[CallbackManager] = None, verbose: bool = True, use_async: bool = False)

Sub question query engine.

A query engine that breaks down a complex query (e.g. compare and contrast) into

many sub questions and their target query engine for execution. After executing all sub questions, all responses are gathered and sent to response synthesizer to produce the final response.

Parameters
  • question_gen (BaseQuestionGenerator) – A module for generating sub questions given a complex question and tools.

  • response_synthesizer (BaseSynthesizer) – A response synthesizer for generating the final response

  • query_engine_tools (Sequence[QueryEngineTool]) – Tools to answer the sub questions.

  • verbose (bool) – whether to print intermediate questions and answers. Defaults to True

  • use_async (bool) – whether to execute the sub questions with asyncio. Defaults to True

get_prompts() Dict[str, BasePromptTemplate]

Get a prompt.

update_prompts(prompts_dict: Dict[str, BasePromptTemplate]) None

Update prompts.

Other prompts will remain in place.