From a2e03a5ddad5949581768e17fd834099f8d94ff2 Mon Sep 17 00:00:00 2001 From: Jerry Liu <jerryjliu98@gmail.com> Date: Mon, 21 Nov 2022 22:05:08 -0800 Subject: [PATCH] add keyword lookup to GPTListIndex (#30) --- gpt_index/indices/list/base.py | 3 ++- gpt_index/indices/list/query.py | 6 ++++++ requirements.txt | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gpt_index/indices/list/base.py b/gpt_index/indices/list/base.py index a994ab56c2..1f763cf1f6 100644 --- a/gpt_index/indices/list/base.py +++ b/gpt_index/indices/list/base.py @@ -14,6 +14,7 @@ from gpt_index.indices.data_structs import IndexList from gpt_index.indices.list.query import GPTListIndexQuery from gpt_index.indices.utils import get_chunk_size_given_prompt, truncate_text from gpt_index.langchain_helpers.text_splitter import TokenTextSplitter +from gpt_index.prompts.base import Prompt from gpt_index.prompts.default_prompts import DEFAULT_TEXT_QA_PROMPT from gpt_index.schema import Document @@ -25,7 +26,7 @@ class GPTListIndex(BaseGPTIndex[IndexList]): self, documents: Optional[List[Document]] = None, index_struct: Optional[IndexList] = None, - text_qa_template: str = DEFAULT_TEXT_QA_PROMPT, + text_qa_template: Prompt = DEFAULT_TEXT_QA_PROMPT, ) -> None: """Initialize params.""" self.text_qa_template = text_qa_template diff --git a/gpt_index/indices/list/query.py b/gpt_index/indices/list/query.py index 5bb7bbc5d9..b38a47ae33 100644 --- a/gpt_index/indices/list/query.py +++ b/gpt_index/indices/list/query.py @@ -1,4 +1,6 @@ """Default query for GPTListIndex.""" +from typing import Optional + from gpt_index.indices.base import BaseGPTIndexQuery from gpt_index.indices.data_structs import IndexList from gpt_index.indices.response_utils import give_response, refine_response @@ -18,17 +20,21 @@ class GPTListIndexQuery(BaseGPTIndexQuery[IndexList]): index_struct: IndexList, text_qa_template: Prompt = DEFAULT_TEXT_QA_PROMPT, refine_template: Prompt = DEFAULT_REFINE_PROMPT, + keyword: Optional[str] = None, ) -> None: """Initialize params.""" super().__init__(index_struct=index_struct) self.text_qa_template = text_qa_template self.refine_template = refine_template + self.keyword = keyword def query(self, query_str: str, verbose: bool = False) -> str: """Answer a query.""" print(f"> Starting query: {query_str}") response = None for node in self.index_struct.nodes: + if self.keyword is not None and self.keyword not in node.text: + continue fmt_text_chunk = truncate_text(node.text, 50) if verbose: print(f"> Searching in chunk: {fmt_text_chunk}") diff --git a/requirements.txt b/requirements.txt index a211e87c81..2c9695e47d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,6 @@ black isort mypy -# flake8 -# flake8-docstrings +flake8 +flake8-docstrings pylint -- GitLab