FlexRAG 入口点#
FlexRAG 入口点指一系列由 FlexRAG 提供的可通过命令行启动的程序。这些程序可以帮助您构建索引、评估 RAG 助手、管理检索缓存、启动GUI应用程序等。每个入口点均可以通过命令行或配置文件的方式传入参数。本教程将向您展示如何使用这些入口点并利用参数定制您的工作流程。
FlexRAG 内置入口点#
在这一小节中,我们将向您展示 FlexRAG 的内置入口点及其配置结构。
向检索器中添加文档#
该入口点用于向检索器中添加段落。你可以通过运行命令 python -m flexrag.entrypoints.prepare_retriever来使用该入口点。prepare_retriever 入口点的配置结构定义如下:
向 FlexRetriever 中添加索引#
此入口用于为 FlexRetriever 添加索引。你可以通过运行 python -m flexrag.entrypoints.add_index 来使用此入口。add_index 入口的配置结构定义如下:
评估 RAG 助手#
该入口点可用于评估您的 RAG 助手,您可以通过执行 python -m flexrag.entrypoints.eval_assistant 来运行该入口点。该入口点的配置结构如下所示:
通过图形界面运行 RAG 助手#
FlexRAG 提供了一个简易的图形界面来帮助您展示或调试您的 RAG 助手,该图形界面由 Gradio 编写,您可以通过执行 python -m flexrag.entrypoints.run_interactive 来运行该入口点。该入口点的配置结构如下所示:
缓存管理#
在 FlexRAG 内置的检索器中均应用了缓存功能,用于减少检索相同查询时的开销。这个入口点就可以用于管理已经被持久化的缓存。您可以执行 python -m flexrag.entrypoints.cache 来运行该入口点。该入口点的配置结构如下所示:
小技巧
如果您希望在使用 FlexRAG 检索器时不使用缓存,您可以在环境变量中设置 DISABLE_CACHE=True。
部署检索器#
FlexRAG 还提供了一个入口点,用于将检索器部署为服务。当你想使用检索器来微调你自己的 RAG 助手,或者想在生产演示中使用检索器时,这非常有帮助。你可以通过运行以下命令来使用这个入口点: python -m flexrag.entrypoints.serve_retriever 。该入口点的配置结构如下所示:
配置管理#
FlexRAG 使用 dataclass 和 hydra-core 进行配置管理,这使得 RAG 流水线中复杂的配置变得非常清晰。同时您既可以通过命令行,也可以通过配置文件来向 FlexRAG 入口点传入相关参数。本节将会向您展示如何使用这两种参数向 FlexRAG 入口点传递参数。
通过命令行传入参数#
配置信息可以通过在命令行中使用 <config_key>=<config_value> 的格式来传入。教程中大多数的例子都使用了这样的方式,该方式的优势是简单和直接。举例来说,您可以通过下面的命令来指定 FlexRAG 通过图形界面运行一个 ModularAssistant ,同时指定该助手使用 FlexRetriever 和 OpenAIGenerator 。
RETRIEVER_PATH=<path_to_retriever>
python -m flexrag.entrypoints.run_interactive \
assistant_type=modular \
modular_config.used_fields=[title,text] \
modular_config.retriever_type=flex \
modular_config.flex_config.top_k=5 \
modular_config.flex_config.retriever_path=${RETRIEVER_PATH} \
modular_config.flex_config.used_indexes=[bm25] \
modular_config.response_type=original \
modular_config.generator_type=openai \
modular_config.openai_config.model_name='gpt-4o-mini' \
modular_config.openai_config.api_key=${OPENAI_KEY} \
modular_config.do_sample=False
通过配置文件传入参数#
配置信息也可以通过 YAML 文件进行传入,这种方式会使得您的配置更容易管理。举例来说,您可以创建一个名为 config.yaml 的文件,并在文件中写入下述内容:
# The `defaults` option specifies the default configuration to be used.
# This three lines cannot be omitted.
defaults:
- default
- _self_
# The configuration passed to the entrypoint.
assistant_type: modular
modular_config:
used_fields: [title, text]
retriever_type: flex
flex_config:
top_k: 5
retriever_path: <path_to_retriever>
used_indexes: [bm25]
response_type: original
generator_type: openai
openai_config:
model_name: "gpt-4o-mini"
api_key: <your_openai_key>
do_sample: False
随后您就可以通过运行下面的命令来将这个配置文件中的配置传入 FlexRAG 入口点程序中。
python -m flexrag.entrypoints.eval_assistant \
--config-path '<parent_path_of_your_config_file>' \
--config-name config
小技巧
您可以访问 Hydra 文档以获取更多有关如何传递配置信息的方式。