ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AutoRAG Generator 节点完全指南:在 RAG 流程中配置、调用与评估大语言模型

AutoRAG Generator 节点完全指南:在 RAG 流程中配置、调用与评估大语言模型 AutoRAG Generator 节点完全指南在 RAG 流程中配置、调用与评估大语言模型【免费下载链接】AutoRAGAutoRAG: Now your agent can find anything in your computer. It gets smarter if you are using it frequently.项目地址: https://gitcode.com/GitHub_Trending/au/AutoRAGGenerator 节点是 AutoRAG 中用于接入大语言模型LLM的核心节点它接收上游 Prompt Maker 生成的 prompts调用一个或多个 LLM 模块生成最终回答并通过 BLEU、METEOR、ROUGE、SemScore、G-Eval、BERTScore 等指标自动评估各模型组合的生成质量。读完本文你将掌握 Generator 节点的完整配置语法strategy 与 modules、五种内置 LLM 模块llama_index_llm、openai_llm、vllm、vllm_api、minimax_llm的选型与参数细节以及 AutoRAG 底层如何完成速度/Token 阈值过滤与最优模块挑选。Generator 节点是什么根据 Generator 节点文档Generator 节点是一个允许对各种大语言模型进行实验的节点其设计目的是便于在特定任务或数据集上测试和评估不同 LLM从而选出最有效的模型。在 AutoRAG 的流程node line中Generator 通常位于后检索阶段如post_retrieve_node_line的末端检索模块从向量库取回相关段落Prompt Maker 把这些段落与用户查询拼装成 prompt最后 Generator 把 prompt 送入 LLM 生成答案。从源码看这种拼接关系是强约束的。base.py 中cast_to_run方法会断言previous_result必须包含prompts列assert prompts in previous_result.columns, ( previous_result must contain prompts column. ) prompts previous_result[prompts].tolist()也就是说Generator 节点本身没有独立输入它完全依赖上游 Prompt Maker 节点如fstring、chat_fstring产出的prompts列。节点参数None与多数节点不同Generator 节点没有专属的节点参数Node Parameters。所有可调项都落在策略参数Strategy Parameters与各模块参数Module Parameters两层策略参数作用于如何评估、如何过滤、如何选优模块参数作用于调用哪个模型、以什么温度/最大 Token 生成。策略参数详解评估指标MetricsGenerator 节点支持以下指标类型指标说明bleu基于 n-gram 精确匹配的生成质量指标meteor结合词形/词序的召回加权指标rouge面向摘要/生成任务的召回类指标sem_score用嵌入模型计算生成文本与 ground truth 的语义相似度g_eval用高性能 LLM默认 gpt-4对生成结果打分bert_score基于 BERT 嵌入的生成质量指标这些指标通过将模型生成文本与 ground truth 文本对比来评估生成性能。在 generation.py 的GENERATION_METRIC_FUNC_DICT中可以看到 AutoRAG 注册的全部生成指标除上述六种外还包含deepeval_faithfulness基于 DeepEval 的忠实度评估评估时若指标名不在字典中会被跳过并给出警告。sem_score 的用法官方文档特别说明了sem_score它计算 ground truth 与 LLM 生成之间的语义相似度实现简单但对评估 LLM 系统相当有效。因为它依赖嵌入模型所以你可以在 config YAML 中指定嵌入模型名称- metric_name: sem_score embedding_model: openai自 AutoRAG v0.0.6 起strategy 支持字典形式因此可以为每个指标单独传参见下文完整示例。从 sem_score 的实现看默认嵌入模型为huggingface_all_mpnet_base_v2通过batch参数控制批大小默认 128对每个 ground truth 候选计算与生成的余弦相似度取最大值作为得分当使用 OpenAI 嵌入模型时会对超过 8000 token 的文本自动截断。g_eval 的用法g_eval使用高性能 LLM 评估生成质量支持四个维度consistency一致性、fluency流畅度、relevance相关性、coherence连贯性并通过model参数指定评估用的 OpenAI 模型默认gpt-4-0125-preview。从 g_eval 实现看它会从g_eval_prompts目录加载各维度的详细评分 prompt 模板并支持用batch_size默认 8控制并发。- metric_name: g_eval metrics: [consistency, fluency, relevance, coherence] model: gpt-4bert_score 的用法bert_score需要指定语言与批大小- metric_name: bert_score lang: en batch: 64速度阈值Speed Threshold可选参数可应用于所有节点用于保证某个方法的处理时间不超过预设阈值秒。当某模块的执行时间超过阈值时该模块会被淘汰。Token 阈值Token Threshold可选参数用于保证输出的平均 Token 长度不超过阈值。它以每个样本生成 Token 数的均值为基准进行过滤。在 run.py 中可以找到这两个阈值的执行逻辑先通过measure_speed统计每个模块的执行时间再计算generated_tokens列的平均长度随后依次调用filter_by_threshold过滤超限模块if strategies.get(speed_threshold) is not None: results, filenames filter_by_threshold( results, average_times, strategies[speed_threshold], filenames ) if strategies.get(token_threshold) is not None: results, filenames filter_by_threshold( results, token_usages, strategies[token_threshold], filenames )此外从 run.py 的 select_best 调用可以推断strategy 中还支持strategy键默认值为mean用于指定多个指标间的聚合选优方式。注意当使用llama_index模块时tokenizer 会被自动设置为 gpt2。若你的 prompt 使用非英文语言Token 计数可能与实际模型 tokenizer 不一致请留意该已知限制。完整示例 config.yaml以下示例完整来自 Generator 节点文档组合了多种指标与多组模型超参可直接放入 AutoRAG 的 trial YAML 中使用- node_line_name: post_retrieve_node_line # Arbitrary node line name nodes: - node_type: generator strategy: metrics: - metric_name: bleu - metric_name: meteor - metric_name: sem_score embedding_model: openai - metric_name: g_eval metrics: [consistency, fluency, relevance, coherence] model: gpt-4 - metric_name: bert_score lang: en batch: 64 speed_threshold: 10 token_threshold: 4000 modules: - module_type: llama_index_llm llm: [openai] model: [gpt-3.5-turbo-16k, gpt-3.5-turbo-1106] temperature: [0.5, 1.0, 1.5]要点说明llm、model、temperature均可用列表形式声明多组取值AutoRAG 会自动组合成多个 trial 模块并逐一评估metrics列表中的每个指标也可带各自的字典参数如sem_score的embedding_model、g_eval的metrics/model、bert_score的lang/batch评估结果会按模块分别保存为0.parquet、1.parquet…并汇总到generator/summary.csv含module_name、module_params、execution_time、average_output_token与各指标均值列最优模块的结果还会额外保存为best_*.parquet。运行 Generator 节点还有一个数据前提项目data/qa.parquet中必须存在generation_gt列否则 run.py 会直接抛出ValueError。五种内置 Generator 模块Generator 节点目前支持五个模块分别面向云端 API、本地推理与 OpenAI 兼容服务等不同场景。以下内容结合各模块官方文档与源码展开。llama_index_llm通用 LLM 桥接llama_index_llm 模块文档 说明该模块基于 LlamaIndex 的 LLM 抽象从 LlamaIndex 获取 LLM 实例并根据输入 prompt 返回生成文本不返回 log probs。llmLLM 提供商如openai也可传列表[openai, huggingfacellm]。若只写openai而未指定模型将使用 LlamaIndex 的默认模型gpt-3.5-turbo支持的模型范围可参考 支持的 LLM 模型。batch一次并发调用数默认 16。其他 LLM 相关参数model、temperature、max_token等会以关键字参数透传给 LLM 对象。示例配置modules: - module_type: llama_index_llm llm: [openai] model: [gpt-3.5-turbo-16k, gpt-3.5-turbo-1106] temperature: [0.5, 1.0, 1.5]从 base.py 的 generator_node 装饰器可以看出llama_index_llm模块会先从autorag.generator_models注册表中取出 LLM 实例若llm名称不在注册表中直接抛错并支持batch参数默认 16若使用huggingfacellm则必须提供model或model_name且 tokenizer 名默认跟随模型名。自 v0.3.19 起该模块支持 chat prompt——前提是上游 Prompt Maker 使用chat_fstring模块。openai_llm为 AutoRAG 优化的 OpenAI 模块openai_llm 模块文档 说明该模块是针对 AutoRAG 优化的 OpenAI 专用模块主要有三大优势自动截断 prompt当 prompt 超过模型 Token 上限时服务端会报错并导致全部回答结果丢失。openai_llm模块会在调用前将 prompt 截断到对应 GPT 模型的最大长度。准确的 Token 输出llama_index_llm只用 GPT2 tokenizer 生成伪 Tokenopenai_llm返回 GPT 模型实际使用的真实 Token。准确的 log probs 输出LlamaIndex 不支持 log probsopenai_llm能为生成答案的每个 Token 返回真实对数概率。未来基于 log prob 的模块如答案过滤器将依赖这一能力。模块参数llm直接填写模型名如gpt-4-turbo-2024-04-09或gpt-3.5-turbo-16kbatchOpenAI API 调用的批大小遇到 token limit 错误时应调小truncate是否将输入 prompt 截断到模型最大长度默认True官方建议保持开启api_keyOpenAI API Key也可通过环境变量OPENAI_API_KEY设置其余参数支持 OpenAI Chat Completion 中的全部参数n、logprobs、stream、top_logprobs除外。示例配置modules: - module_type: openai_llm llm: [ gpt-3.5-turbo, gpt-4-turbo-2024-04-09 ] temperature: [ 0.1, 1.0 ] max_tokens: 512从 openai_llm.py 源码可进一步确认实现细节模型上下文窗口保存在MAX_TOKEN_DICT中如gpt-4o为 128,000、gpt-4.1为 1,000,000、gpt-5.4/5.5/5.6 系列共享 1.05M 上下文窗口模型名不在字典中且无法匹配快照规则时会在初始化阶段直接抛出ValueError实际可用的最大 Token 数取上下文窗口 - 7为 chat 格式预留;底层分别调用chat.completions.create普通模型、responses.creategpt-5前缀模型、并针对o1/o3/o4推理模型剥离temperature、top_p、logit_bias等不支持参数logprobs始终强制为Truen始终为 1传入也会被忽略并告警。GPT-5 支持自 v0.3.22 起支持 GPT-5 系列模型可通过reasoning.effortnone到maxnone/low/medium/high/xhigh/max与reasoning.verbosity控制推理强度modules: - module_type: openai_llm llm: [ gpt-5.6-sol ] max_tokens: 512 reasoning: effort: high verbosity: low已退役模型官方已退役的 OpenAI 模型不会被支持并在模块初始化时直接报错例如gpt-5、gpt-5.1、gpt-5-mini、gpt-5-nano、chatgpt-4o-latest、o1-preview、o1-mini、gpt-4-32k、gpt-4 vision/turbo preview 快照及gpt-3.5-turbo-0613/16k快照等应迁移到 gpt-5.4/5.5/5.6 系列如用gpt-5.6-terra平替gpt-5/gpt-5.1用gpt-5.4-mini平替gpt-5-mini。vllm本地 GPU 高速推理vllm 模块文档 说明该模块基于 vLLM 实现核心卖点是生成速度显著快于 HuggingFace Transformers文档称快 10 倍以上。虽然也可以用llama_index_llm加载 vLLM 模型但 LlamaIndex 不擅长批量处理大量 prompt因此 AutoRAG 专门提供了独立模块。模块参数llm模型名如facebook/opt-125m或mistralai/Mistral-7B-Instruct-v0.2max_tokens最大生成 Token 数temperature采样温度越高随机性越大top_p控制累积概率取值 (0, 1]设为 1 表示考虑全部 Token其余支持 vLLM 的LLM初始化参数、SamplingParams与EngineArgs全部参数。基础示例modules: - module_type: vllm llm: mistralai/Mistral-7B-Instruct-v0.2 temperature: [ 0.1, 1.0 ] max_tokens: 512安装前提需要安装 vLLM 可选依赖pippip install AutoRAG[vllm]uvuv pip install AutoRAG[vllm]从源码开发时可安装全部扩展uv pip install -e .[all]推理reasoning支持自 v0.3.18 起将thinking设为True即可启用需配合推理模型否则可能报错modules: - module_type: vllm llm: mistralai/Mistral-7B-Instruct-v0.2 temperature: [ 0.1, 1.0 ] max_tokens: 512 thinking: True多 GPU 支持多卡环境下可设置tensor_parallel_sizemodules: - module_type: vllm llm: mistralai/Mistral-7B-Instruct-v0.2 tensor_parallel_size: 2 # If the gpu is two. temperature: [ 0.1, 1.0 ] max_tokens: 512注意事项使用 vLLM 模块时视 PyTorch 配置可能报错官方建议① 将 vllm 模块定义为单 case 模式运行② 在 evaluator 的start_trial中将skip_validation设为Truechat prompt 自 v0.3.18 起支持需配合chat_fstringPrompt Maker。vllm_apiOpenAI 兼容 API 模式vllm_api 模块文档 说明为了省去重复初始化模型的时间推荐使用 vLLM API 而不是直接集成 vLLM。既可以对接 OpenAI 风格的 API server也可以对接 vLLM API server 以使用 vLLM 的全部特性。启动 vLLM API server在已安装 vLLM 的机器上vllm serve Qwen/Qwen2.5-14B-Instruct-AWQ -q awq --port 8012模块参数llm模型名如facebook/opt-125m或mistralai/Mistral-7B-Instruct-v0.2urivLLM API server 地址max_tokens最大 Token 数默认 4096长 prompt 场景建议调大temperature采样温度其余支持 vLLM API 的全部参数。示例配置- module_type: vllm_api uri: http://localhost:8012 llm: Qwen/Qwen2.5-14B-Instruct-AWQ temperature: [0, 0.5] max_tokens: 400chat prompt 自 v0.3.19 起支持需配合chat_fstring。minimax_llmMiniMax 模型集成minimax_llm 模块文档 说明该模块通过 OpenAI 兼容 API 将 MiniMax 模型接入 AutoRAG。支持以下模型模型上下文窗口MiniMax-M31,000,000 tokensMiniMax-M2.7204,800 tokensMiniMax-M2.7-highspeed204,800 tokensMiniMax-M2.5 (legacy)204,800 tokensMiniMax-M2.5-highspeed (legacy)204,800 tokensMiniMax-M3为推荐默认模型M2.7 仍受支持M2.5 旧名称被保留以避免已有配置失效。模块特性自动截断 prompt超过模型 Token 上限的 prompt 自动截断防止 API 报错温度钳制MiniMax 模型只接受 0~1 的温度高于 1.0 会自动钳制为 1.0think-tag 剥离M2.7 模型可能在输出中包含think.../think推理标签模块会自动将其从生成文本中剥离。模块参数llmMiniMax 模型名如MiniMax-M3或MiniMax-M2.7-highspeedbatchAPI 调用批大小默认 16truncate是否将输入 prompt 截断到模型最大长度默认Trueapi_keyMiniMax API Key也可通过环境变量MINIMAX_API_KEY设置其余支持 OpenAI Chat Completion API 的全部参数MiniMax 使用 OpenAI 兼容端点。示例配置modules: - module_type: minimax_llm llm: [MiniMax-M3, MiniMax-M2.7] temperature: [0.1, 0.5] max_tokens: 512 api_key: ${MINIMAX_API_KEY}底层运行原理模块到节点的转换每个 Generator 模块通过 base.py 的generator_node装饰器升级为可运行的节点装饰器自动从previous_result提取prompts列、按模块名从generator_models注册表构造 LLM 实例llama_index_llm路径并统一把输出转换为包含generated_texts、generated_tokens、generated_log_probs三列的 DataFrame。节点级评估与选优流程run.py 的run_generator_node完整呈现了 Generator 节点的执行流水线读取项目data/qa.parquet校验generation_gt列存在对每个候选模块执行measure_speed计时评估得到生成结果与平均耗时计算每模块的平均输出 Token 数构造MetricInput含generation_gt与query通过evaluate_generator_node逐一跑配置的指标每个模块的结果保存为{index}.parquet汇总信息写入summary.csv依次按speed_threshold、token_threshold过滤按strategy默认mean聚合指标并调用select_best选出最优模块将previous_result与最优结果横向拼接为best_*.parquet输出给下一节点。截断机制openai_llm与minimax_llm的 prompt 截断底层复用 chat.py 的truncate_prompt_by_token/truncate_messages_by_token对于字符串 prompt 按 Token 预算二分截断对于 chat 消息列表会在保留消息角色结构的前提下逐条二分压缩各条消息内容并用|im_start|/|im_end|格式渲染消息以准确计数确保截断后 prompt 仍是合法的多轮对话格式。常见问题与注意事项为什么用了llama_index模块后 Token 统计不准该路径默认使用 gpt2 tokenizer 生成伪 Token与模型实际 tokenizer 存在差异尤其非英文内容需要精确 Token/log probs 时建议改用openai_llm或minimax_llm。openai_llm初始化报错模型名必须存在于MAX_TOKEN_DICT或能通过日期快照规则、gpt-5 系列前缀回退匹配退役模型会快速失败并给出明确错误。vllm 模块环境问题需安装AutoRAG[vllm]可选依赖遇到 PyTorch 配置导致的错误时参考上文单 case 模式 skip_validation: True的官方建议。评估必需字段qa.parquet必须包含generation_gt列且metrics列表不能为空否则节点运行会报错。chat prompt 前提若使用多轮对话Prompt Maker 必须使用chat_fstring模块vllm 自 v0.3.18、llama_index_llm/openai_llm/vllm_api 自 v0.3.19 起支持。Generator 节点把模型选型从拍脑袋变成了可量化的自动优化声明多组模型与超参、挂上合适的评估指标、设定速度与 Token 预算AutoRAG 就会自动完成评估、过滤、选优并产出summary.csv供你复盘。搭配 AutoRAG 节点与节点线文档 中其他节点使用即可拼出完整、可优化的 RAG 流水线。【免费下载链接】AutoRAGAutoRAG: Now your agent can find anything in your computer. It gets smarter if you are using it frequently.项目地址: https://gitcode.com/GitHub_Trending/au/AutoRAG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表