科学工具
科学工具让世界更美好
让世界更美好

高效推理搜索LLM代理系统 SearchAgent-X 部署和使用指南高效推理搜索LLM代理系统 SearchAgent-X 部署和使用指南

SearchAgent-X 是一个高效的推理搜索大型语言模型(LLM)代理系统,相较于流行的 LLM 推理框架 vLLM 和基于 HNSW 的检索方法,SearchAgent-X 实现了 1.3–3.4 倍的更高吞吐量,延迟仅为 0.2–0.6 倍。

SearchAgent-X 可用于期望低延迟和高吞吐量的 LLM 搜索代理场景,训练后处理可缓解耗时的多轮 LLM 推演问题,例如强化学习场景。

SearchAgent-X 快速上手

环境配置

检索器(和编码器)

conda create -n retriever_env python=3.12.9
pip install -r retriever_requirements.txt

生成器

conda create -n SearchAgent-X python=3.9
pip install -r generator_requirements.txt

数据集和模型

SearchAgent-X 运行推理搜索交错需要以下数据集和模型,可根据自身需求替换为自定义数据集/模型,注意保存路径以便后续配置:

• 语料库:wiki-18-corpus

• 嵌入模型:all-MiniLM-L6-v2

• ANN 索引:HNSW 索引

• LLM 推理模型:7B 模型、14B 模型

• 请求数据集:Musique

运行 SearchAgent-X

1、修改 config.py 中已下载的嵌入模型、HNSW 索引和语料库的路径。

2、启动检索器服务器

conda activate retriever_env
python vllm/entrypoints/emb_ret_server.py

3、再次修改 config.py 中已下载的数据集和模型的路径。

4、运行实验

conda activate SearchAgent-X
python vllm/entrypoints/searchagent-x.py

实验结果默认存储在 experiments/output/ 目录下。

开发者指南

如何编码和索引自有语料库

dataset 目录包含处理语料库的脚本:embedding.py 用于生成句子嵌入,build_hnsw.py 用于构建 HNSW 索引。

编码语料库

使用 embedding.py,通过指定的 Sentence Transformer 模型将语料库转换为嵌入:

python ./datasets/embedding.py <SentenceTransformer_model_path> <data_file_path> <embedding_save_path>

:指定的 Sentence Transformer 模型路径。

:输入数据文件路径(如 .jsonl 语料库)。

:生成的嵌入保存路径。

构建 HNSW 索引

使用 build_hnsw.py 创建用于检索的 HNSW 索引,需在脚本中根据生成的嵌入指定 num_elements 和 data_dim:

python ./datasets/build_hnsw.py <embeddings_data_path> <hnsw_index_path>

:前一步生成的嵌入文件路径。

:HNSW 索引文件保存路径。

如何使用其他推理模型

通过编辑 config.py 集成不同推理模型,具体需:

• 将 MODEL 路径设置为所需推理模型。

• 在 config.py 中为该模型配置合适的提示模板。

如何在离线/在线场景部署 SearchAgent-X

离线部署

适用于批处理或无需速率限制的场景,在 config.py 中设置 REQUEST_RATE = 'inf'。

在线部署

专为需要管理请求速率的实时应用设计,在 config.py 中将 REQUEST_RATE(每秒请求数)设置为特定数值(如 5),然后执行 SearchAgent-X 即可。