Spaces:
Runtime error
Runtime error
"""Index registry.""" | |
from typing import Any, Dict, Type | |
from gpt_index.constants import DATA_KEY, TYPE_KEY | |
from gpt_index.data_structs.data_structs_v2 import ( | |
KG, | |
ChatGPTRetrievalPluginIndexDict, | |
ChromaIndexDict, | |
CompositeIndex, | |
EmptyIndex, | |
FaissIndexDict, | |
IndexDict, | |
IndexGraph, | |
IndexList, | |
KeywordTable, | |
MilvusIndexDict, | |
OpensearchIndexDict, | |
PineconeIndexDict, | |
QdrantIndexDict, | |
SimpleIndexDict, | |
V2IndexStruct, | |
WeaviateIndexDict, | |
) | |
from gpt_index.data_structs.struct_type import IndexStructType | |
from gpt_index.data_structs.table_v2 import PandasStructTable, SQLStructTable | |
from gpt_index.indices.base import BaseGPTIndex, QueryMap | |
from gpt_index.indices.empty.base import GPTEmptyIndex | |
from gpt_index.indices.keyword_table.base import GPTKeywordTableIndex | |
from gpt_index.indices.knowledge_graph.base import GPTKnowledgeGraphIndex | |
from gpt_index.indices.list.base import GPTListIndex | |
from gpt_index.indices.struct_store.pandas import GPTPandasIndex | |
from gpt_index.indices.struct_store.sql import GPTSQLStructStoreIndex | |
from gpt_index.indices.tree.base import GPTTreeIndex | |
from gpt_index.indices.vector_store.base import GPTVectorStoreIndex | |
from gpt_index.indices.vector_store.vector_indices import ( | |
ChatGPTRetrievalPluginIndex, | |
GPTChromaIndex, | |
GPTFaissIndex, | |
GPTMilvusIndex, | |
GPTOpensearchIndex, | |
GPTPineconeIndex, | |
GPTQdrantIndex, | |
GPTSimpleVectorIndex, | |
GPTWeaviateIndex, | |
) | |
INDEX_STRUCT_TYPE_TO_INDEX_STRUCT_CLASS: Dict[IndexStructType, Type[V2IndexStruct]] = { | |
IndexStructType.TREE: IndexGraph, | |
IndexStructType.LIST: IndexList, | |
IndexStructType.KEYWORD_TABLE: KeywordTable, | |
IndexStructType.SIMPLE_DICT: SimpleIndexDict, | |
IndexStructType.DICT: FaissIndexDict, | |
IndexStructType.WEAVIATE: WeaviateIndexDict, | |
IndexStructType.PINECONE: PineconeIndexDict, | |
IndexStructType.QDRANT: QdrantIndexDict, | |
IndexStructType.MILVUS: MilvusIndexDict, | |
IndexStructType.CHROMA: ChromaIndexDict, | |
IndexStructType.OPENSEARCH: OpensearchIndexDict, | |
IndexStructType.VECTOR_STORE: IndexDict, | |
IndexStructType.SQL: SQLStructTable, | |
IndexStructType.PANDAS: PandasStructTable, | |
IndexStructType.KG: KG, | |
IndexStructType.EMPTY: EmptyIndex, | |
IndexStructType.COMPOSITE: CompositeIndex, | |
IndexStructType.CHATGPT_RETRIEVAL_PLUGIN: ChatGPTRetrievalPluginIndexDict, | |
} | |
INDEX_STRUCT_TYPE_TO_INDEX_CLASS: Dict[IndexStructType, Type[BaseGPTIndex]] = { | |
IndexStructType.TREE: GPTTreeIndex, | |
IndexStructType.LIST: GPTListIndex, | |
IndexStructType.KEYWORD_TABLE: GPTKeywordTableIndex, | |
IndexStructType.SIMPLE_DICT: GPTSimpleVectorIndex, | |
IndexStructType.DICT: GPTFaissIndex, | |
IndexStructType.WEAVIATE: GPTWeaviateIndex, | |
IndexStructType.PINECONE: GPTPineconeIndex, | |
IndexStructType.QDRANT: GPTQdrantIndex, | |
IndexStructType.MILVUS: GPTMilvusIndex, | |
IndexStructType.CHROMA: GPTChromaIndex, | |
IndexStructType.VECTOR_STORE: GPTVectorStoreIndex, | |
IndexStructType.SQL: GPTSQLStructStoreIndex, | |
IndexStructType.PANDAS: GPTPandasIndex, | |
IndexStructType.KG: GPTKnowledgeGraphIndex, | |
IndexStructType.EMPTY: GPTEmptyIndex, | |
IndexStructType.CHATGPT_RETRIEVAL_PLUGIN: ChatGPTRetrievalPluginIndex, | |
IndexStructType.OPENSEARCH: GPTOpensearchIndex, | |
} | |
INDEX_STRUT_TYPE_TO_QUERY_MAP: Dict[IndexStructType, QueryMap] = { | |
index_type: index_cls.get_query_map() | |
for index_type, index_cls in INDEX_STRUCT_TYPE_TO_INDEX_CLASS.items() | |
} | |
def load_index_struct_from_dict(struct_dict: Dict[str, Any]) -> "V2IndexStruct": | |
type = struct_dict[TYPE_KEY] | |
data_dict = struct_dict[DATA_KEY] | |
cls = INDEX_STRUCT_TYPE_TO_INDEX_STRUCT_CLASS[type] | |
if type == IndexStructType.COMPOSITE: | |
struct_dicts: Dict[str, Any] = data_dict["all_index_structs"] | |
root_id = data_dict["root_id"] | |
all_index_structs = { | |
id_: load_index_struct_from_dict(struct_dict) | |
for id_, struct_dict in struct_dicts.items() | |
} | |
return CompositeIndex(all_index_structs=all_index_structs, root_id=root_id) | |
else: | |
return cls.from_dict(data_dict) | |