SearchAgent-X 是一个高效的推理搜索大型语言模型(LLM)代理系统,相较于流行的 LLM 推理框架 vLLM 和基于 HNSW 的检索方法,SearchAgent-X 实现了 1.3–3.4 倍的更高吞吐量,延迟仅为 0.2–0.6 倍。
SearchAgent-X 可用于期望低延迟和高吞吐量的 LLM 搜索代理场景,训练后处理可缓解耗时的多轮 LLM 推演问题,例如强化学习场景。
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
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>
•
•
•
使用 build_hnsw.py 创建用于检索的 HNSW 索引,需在脚本中根据生成的嵌入指定 num_elements 和 data_dim:
python ./datasets/build_hnsw.py <embeddings_data_path> <hnsw_index_path>
•
•
通过编辑 config.py 集成不同推理模型,具体需:
• 将 MODEL 路径设置为所需推理模型。
• 在 config.py 中为该模型配置合适的提示模板。
适用于批处理或无需速率限制的场景,在 config.py 中设置 REQUEST_RATE = 'inf'。
专为需要管理请求速率的实时应用设计,在 config.py 中将 REQUEST_RATE(每秒请求数)设置为特定数值(如 5),然后执行 SearchAgent-X 即可。