flexrag.entrypoints.add_index 源代码
from typing import Optional
import hydra
from hydra.core.config_store import ConfigStore
from flexrag.retriever import FlexRetriever
from flexrag.retriever.index import MultiFieldIndexConfig, RetrieverIndexConfig
from flexrag.utils import configure, extract_config
[文档]
@configure
class Config(RetrieverIndexConfig, MultiFieldIndexConfig):
index_name: Optional[str] = None
retriever_path: Optional[str] = None
rebuild: bool = False
cs = ConfigStore.instance()
cs.store(name="default", node=Config)
@hydra.main(version_base="1.3", config_path=None, config_name="default")
def main(cfg: Config):
cfg = extract_config(cfg, Config)
assert cfg.index_name is not None, "index_name must be provided"
assert cfg.retriever_path is not None, "retriever_path must be provided"
retriever: FlexRetriever = FlexRetriever.load_from_local(cfg.retriever_path)
# remove index
if cfg.rebuild:
retriever.remove_index(cfg.index_name)
# add index
retriever.add_index(
index_name=cfg.index_name,
index_config=cfg,
indexed_fields_config=cfg,
)
return
if __name__ == "__main__":
main()