LightRAG 提供商生成参数完全参考:OPENAI_LLM_*、OLLAMA_LLM_*、GEMINI_LLM_* 与 BEDROCK_LLM_* 配置解析
本文是 LightRAG 中提供商专属生成参数(provider-specific generation options)的完整技术参考,覆盖 OPENAI_LLM_*、OLLAMA_LLM_*、GEMINI_LLM_*、BEDROCK_LLM_*、OLLAMA_EMBEDDING_* 与 GEMINI_EMBEDDING_* 六组参数家族,讲清它们如何控制采样、输出长度、思考/推理行为以及请求体透传。读完本篇,你将掌握:命名与解析规则、各 binding 的完整参数表、参数值的最终去向、与 LLM 缓存的交互关系,以及限制输出长度、按角色关闭 thinking 等常见运维任务的正确做法。
本文不覆盖 binding 选择与凭据(LLM_BINDING、LLM_MODEL、LLM_BINDING_HOST、LLM_BINDING_API_KEY、LLM_TIMEOUT、MAX_ASYNC_LLM——见 LightRAG Server and WebUI),也不覆盖角色级继承规则(见 Role-Specific LLM/VLM Configuration Guide)。
六组参数列表的唯一事实来源是 lightrag/llm/binding_options.py:--help 输出、自动生成的 .env 样例全部由该文件派生,因此文档与运行时行为永远一致。
1. 命名与解析规则
1.1 三种命名形态
每个选项在每个提供商、每个方向(LLM 与 embedding)下各有一个前缀,可用的三种形态如下:
| 作用域 | 形态 | 示例 |
|---|---|---|
基线,环境变量 / .env |
{PREFIX}_{FIELD} |
OPENAI_LLM_MAX_COMPLETION_TOKENS=9000 |
| 基线,命令行 | --{prefix-小写连字符}-{field} |
--openai-llm-max_completion_tokens 9000 |
角色级,仅环境变量 / .env |
{ROLE}_{PREFIX}_{FIELD} |
QUERY_OPENAI_LLM_MAX_COMPLETION_TOKENS=9000 |
注意 CLI 拼写:前缀用连字符,字段名保留下划线(是 --ollama-llm-num_ctx,不是 --ollama-llm-num-ctx)。这一规则由 binding_options.py 中 args_env_name_type_value() 的拼接逻辑直接产生:argname 取 f"{binding_name 下划线转连字符}-{field.name}",而 env_name 取 f"{BINDING_NAME}_{FIELD.upper()}"。
ROLE 取值为 EXTRACT、KEYWORD、QUERY、VLM 之一。角色级提供商选项没有命令行等价形式——只能从环境变量读取,其实现是 options_dict_for_role() 直接 os.getenv(role_env) 逐字段扫描。
优先级(高到低):基线命令行参数 > 基线环境变量 > 未设置。角色级环境变量会叠加在基线解析结果之上(同提供商角色),或叠加在空选项集上(跨提供商角色);继承细节见 RoleSpecificLLMConfiguration.md 的 inheritance rules 一节。
1.2 “未设置”意味着“不发送”
每个选项注册时的默认值都是 argparse.SUPPRESS(见 binding_options.py 中 get_env_value(f"{env_name}", argparse.SUPPRESS) 的调用)。你没有配置的选项会整体缺席于出站请求,由提供商应用自己的默认值。由此推出几条必须内化的结论:
- binding_options.py 里可见的字段默认值(以及 §12 生成的
.env样例中的值)是对提供商典型默认值的文档化,不是 LightRAG 实际发送的值。例如OllamaLLMOptions.think标注为True、OpenAILLMOptions.reasoning_effort标注为"medium",但只要你不设置,它们都不会被发送。源码注释也明确写着 “The True here is documentation, not a value that ships”。 - 因此
lightrag-server --llm-binding openai --help不会打印任何默认值。 - “删除一个选项”的正确做法是把该行注释掉,而不是设成空值(见 §1.4)。
1.3 基线层只读取当前所选 binding 的选项
基线层选项只为 LLM_BINDING / EMBEDDING_BINDING 实际选中的 binding 注册,判断逻辑在 lightrag/api/config.py:
# Add LLM binding options based on determined value
if llm_binding_value == "ollama":
OllamaLLMOptions.add_args(parser)
elif llm_binding_value in ["openai", "azure_openai"]:
OpenAILLMOptions.add_args(parser)
elif llm_binding_value == "gemini":
GeminiLLMOptions.add_args(parser)
elif llm_binding_value == "bedrock":
BedrockLLMOptions.add_args(parser)
也就是说,当 LLM_BINDING=ollama 时,.env 里所有 OPENAI_LLM_* 变量都会被静默忽略——因为它们从未被注册进 argparse,自然从未被读取。这是 “我明明配置了却不起作用” 这一类问题最常见的根源。
角色级变量则直接从环境读取,所以跨提供商角色也会读取自己提供商的 {ROLE}_{PREFIX}_*——但它不继承基线提供商的选项:跨提供商角色按设计从空选项集起步(对应 options_dict_for_role(is_cross_provider=True) 分支,基线直接置 {})。
1.4 取值语法
| 字段类型 | 接受的写法 | 备注 |
|---|---|---|
| bool | true/1/yes/t/on → true;其余一律 → false |
大小写不敏感。 |
bool-or-level(仅 OLLAMA_LLM_THINK) |
true/false/… 或 low/medium/high |
未识别的单词是启动错误,而非静默 false;空值表示 false,不是“未设置”。 |
| int / float | 纯数字 | 空值是启动错误:argument --openai-llm-max_tokens: invalid int value: ''。 |
| list | JSON 数组,如 '["</s>", "\n\n"]' |
在 .env / shell 中加引号。 |
| dict | JSON 对象,如 '{"reasoning": {"enabled": false}}' |
在 .env / shell 中加引号。 |
| str | 原样 | 空值也是一个值:OPENAI_LLM_SERVICE_TIER= 会把 service_tier: "" 发给提供商。应改为注释掉该行。 |
源码依据:bool 判定词表是 binding_options.py 的 _BOOL_TRUE_WORDS = ("true", "1", "yes", "t", "on");bool-or-level 解析器 _make_bool_or_literal_parser() 对未识别输入抛出 argparse.ArgumentTypeError 而非回退为 false——源码注释解释了动机:对 high 误拼成 hgih 若静默降级为“关”,会把用户想“调高”的功能无声地变成“关闭”,且日志里毫无痕迹。
JSON 畸形时的行为按作用域不同,调试时尤其要注意:
- 基线层(
OPENAI_LLM_EXTRA_BODY=not json):选项被丢弃,服务按未设置状态启动。对应 binding_options.py:add_args()中对 env 值解析失败时把env_value重置回argparse.SUPPRESS。 - 角色层(
QUERY_OPENAI_LLM_EXTRA_BODY=not json):原始字符串被保留并透传,失败推迟到请求期表现为提供商侧报错。对应options_dict_for_role()中的except (ValueError, json.JSONDecodeError): base[field_name] = env_raw分支。
2. Binding 与选项覆盖矩阵
并非每个 binding 都有一套提供商选项。下表中 LLM 列缺失的 binding 完全不接受任何生成选项。
| Binding | LLM 选项 | Embedding 选项 | 备注 |
|---|---|---|---|
openai |
OPENAI_LLM_* |
无 | 同时也是 OpenAI 兼容服务器的 binding:vLLM、SGLang、OpenRouter 及同类网关。 |
azure_openai |
OPENAI_LLM_*(同一套选项) |
无 | AZURE_OPENAI_API_VERSION / AZURE_OPENAI_DEPLOYMENT 是独立的过程级变量,不是提供商选项。 |
ollama |
OLLAMA_LLM_* |
OLLAMA_EMBEDDING_* |
|
gemini |
GEMINI_LLM_* |
GEMINI_EMBEDDING_* |
|
bedrock |
BEDROCK_LLM_* |
无 | 旧别名 aws_bedrock 会被归一化为 bedrock。 |
lollms |
见备注 | 无 | 基线层:完全无选项。 lightrag-server --llm-binding lollms --help 不打印任何选项组,基线 binding 以空选项负载接线。角色层把 lollms 映射到 Ollama 选项集,因此会读取 {ROLE}_OLLAMA_LLM_*——但 lollms 驱动只消费 temperature、top_k、top_p、repeat_penalty、repeat_last_n、seed,其余字段一律忽略。 |
jina |
—(纯 embedding binding) | 无 | |
voyageai |
—(纯 embedding binding) | 无 |
lollms 的字段白名单可由源码确认:lightrag/llm/lollms.py 中驱动只从 kwargs 里取这六个字段(带各自的本地默认值),其余字段根本不进入请求体。
3. OpenAI / Azure OpenAI LLM 选项
前缀 OPENAI_LLM_,由 openai 与 azure_openai 两个 binding 共用。对应 dataclass 是 binding_options.py 中的 OpenAILLMOptions。
| 环境变量 | 类型 | 说明 |
|---|---|---|
OPENAI_LLM_TEMPERATURE |
float | 控制随机性(0.0–2.0,越大越有创造性)。 |
OPENAI_LLM_TOP_P |
float | 核采样参数(0.0–1.0,越小越聚焦)。 |
OPENAI_LLM_MAX_COMPLETION_TOKENS |
int | 最大生成 token 数。当前 OpenAI 推理(reasoning)模型的现行参数。 |
OPENAI_LLM_MAX_TOKENS |
int | 最大生成 token 数。已被 OpenAI 弃用(推荐 max_completion_tokens),但对多数 OpenAI 兼容服务器(vLLM、SGLang、多数网关)仍是正确字段。 |
OPENAI_LLM_FREQUENCY_PENALTY |
float | token 频率惩罚(-2.0 至 2.0,正值抑制重复)。 |
OPENAI_LLM_PRESENCE_PENALTY |
float | token 出现惩罚(-2.0 至 2.0,正值鼓励新话题)。 |
OPENAI_LLM_REASONING_EFFORT |
str | 推理模型的 effort 级别。原样透传,因此合法取值属于提供商而非 LightRAG——OpenAI 目前接受 minimal/low/medium/high,其他网关另有自己的取值(如 none)。 |
OPENAI_LLM_STOP |
JSON list | 停止序列,如 '["</s>", "\n\n"]'。 |
OPENAI_LLM_SERVICE_TIER |
str | API 使用的服务层级。 |
OPENAI_LLM_SAFETY_IDENTIFIER |
str | 内容过滤用的安全标识符。 |
OPENAI_LLM_EXTRA_BODY |
JSON dict | 额外并入请求顶层的字段。表格之外一切的逃生舱——vLLM/SGLang 的 chat-template 开关、OpenRouter 的路由与推理控制。 |
实现层面的两点注意:
- 这些选项作为关键字参数并入 Chat Completions 请求,原样转发。LightRAG 不会替你对照目标模型做校验,因此某个端点不支持的参数会直接表现为提供商侧错误。
- 本地 OpenAI 兼容服务器拒绝
reasoning_effort是典型的“该选项应保持角色级而非全局”的理由:用EXTRACT_OPENAI_LLM_REASONING_EFFORT=…代替全局OPENAI_LLM_REASONING_EFFORT。
4. Ollama LLM 选项
前缀 OLLAMA_LLM_。除 think 外,所有字段都进入请求体的 options 负载。字段全集定义在 binding_options.py 的 _OllamaOptionsMixin。
4.1 上下文与输出长度
| 环境变量 | 类型 | 说明 |
|---|---|---|
OLLAMA_LLM_NUM_CTX |
int | 上下文窗口大小(token 数)。必须大于 MAX_TOTAL_TOKENS + 2000;env.example 出厂设为 32768,因为 Ollama 默认值通常不够容纳 LightRAG 的提示词。 |
OLLAMA_LLM_NUM_PREDICT |
int | 最大预测 token 数——输出预算。用它拦住失控的抽取输出。 |
OLLAMA_LLM_NUM_KEEP |
int | 从初始提示中保留的 token 数。 |
OLLAMA_LLM_STOP |
JSON list | 停止序列,如 '["</s>", "\n\n"]'。 |
OLLAMA_LLM_PENALIZE_NEWLINE |
bool | 惩罚换行 token。 |
env.example 对 NUM_PREDICT 的截断语义有明确注释:被它截断的响应仍会被保留并记录在 doc_status.metadata.llm_truncation 中;若在输出任何内容前就被截断,则文档整体失败而非索引一个空图——遇到后者应调大该值或关闭 thinking 模式。
4.2 采样
| 环境变量 | 类型 | 说明 |
|---|---|---|
OLLAMA_LLM_TEMPERATURE |
float | 控制随机性(0.0–2.0,越大越有创造性)。 |
OLLAMA_LLM_TOP_K |
int | Top-k 采样参数(0 = 禁用)。 |
OLLAMA_LLM_TOP_P |
float | Top-p(核)采样参数(0.0–1.0)。 |
OLLAMA_LLM_MIN_P |
float | 最小概率阈值(0.0 = 禁用)。 |
OLLAMA_LLM_TYPICAL_P |
float | 典型概率质量(1.0 = 禁用)。 |
OLLAMA_LLM_TFS_Z |
float | 尾自由采样参数(1.0 = 禁用)。 |
OLLAMA_LLM_SEED |
int | 生成随机种子(-1 为随机)。 |
4.3 重复控制与 Mirostat
| 环境变量 | 类型 | 说明 |
|---|---|---|
OLLAMA_LLM_REPEAT_PENALTY |
float | 重复惩罚(1.0 = 不惩罚)。 |
OLLAMA_LLM_REPEAT_LAST_N |
int | 重复惩罚考虑的回看 token 数。 |
OLLAMA_LLM_PRESENCE_PENALTY |
float | token 出现惩罚(-2.0 至 2.0)。 |
OLLAMA_LLM_FREQUENCY_PENALTY |
float | token 频率惩罚(-2.0 至 2.0)。 |
OLLAMA_LLM_MIROSTAT |
int | Mirostat 采样算法(0 = 禁用,1 = Mirostat 1.0,2 = Mirostat 2.0)。 |
OLLAMA_LLM_MIROSTAT_TAU |
float | Mirostat 目标熵。 |
OLLAMA_LLM_MIROSTAT_ETA |
float | Mirostat 学习率。 |
4.4 Thinking / 推理
| 环境变量 | 类型 | 说明 |
|---|---|---|
OLLAMA_LLM_THINK |
bool 或 low/medium/high |
开启模型的扩展思考 trace。仅 LLM 选项集有此字段,embedding 选项集没有。 |
think 是唯一不走 options 负载的 Ollama 选项——它是请求体的顶层字段。关键细节:
- 不设置则跟随模型自身默认。对不支持 thinking 的模型设
true,Ollama 会拒绝该请求。 - 推理级别(
low/medium/high)额外要求 Ollama 服务端支持级别;任何形态的think在 LightRAG 侧要求ollama>=0.5.4,配置错误会在服务启动时暴露,而不是流水线中途。 - 空值(
OLLAMA_LLM_THINK=)表示false,不是“未设置”。 - 具备 thinking 能力的模型可能把整个生成预算花在隐藏推理上,抽取阶段返回空 entities/relations(issue #3597)。正确修法是
EXTRACT_OLLAMA_LLM_THINK=false(若关键词抽取也受影响再配KEYWORD_OLLAMA_LLM_THINK=false),而不是全局关闭——因为对部分模型而言,关闭 thinking 会可测量地损害抽取质量。这一权衡在 binding_options.py 的think字段注释中被完整记录:默认值True只是文档化,框架从不主动覆写它。
4.5 硬件与内存
这些是 Ollama 服务端运行时旋钮,除非清楚自己在做什么,否则不要设置。
| 环境变量 | 类型 | 说明 |
|---|---|---|
OLLAMA_LLM_NUMA |
bool | 启用 NUMA 优化。 |
OLLAMA_LLM_NUM_BATCH |
int | 处理批次大小。 |
OLLAMA_LLM_NUM_GPU |
int | 使用的 GPU 数(-1 为自动)。 |
OLLAMA_LLM_MAIN_GPU |
int | 主 GPU 索引。 |
OLLAMA_LLM_LOW_VRAM |
bool | 低显存优化。 |
OLLAMA_LLM_NUM_THREAD |
int | CPU 线程数(0 为自动)。 |
OLLAMA_LLM_F16_KV |
bool | KV 缓存使用半精度。 |
OLLAMA_LLM_USE_MMAP |
bool | 模型文件使用内存映射。 |
OLLAMA_LLM_USE_MLOCK |
bool | 将模型锁定在内存中。 |
OLLAMA_LLM_VOCAB_ONLY |
bool | 仅加载词表。 |
OLLAMA_LLM_LOGITS_ALL |
bool | 返回全部 token 的 logits。 |
OLLAMA_LLM_EMBEDDING_ONLY |
bool | 仅用于 embedding。 |
5. Gemini LLM 选项
前缀 GEMINI_LLM_。每个字段一一对应 Google GenAI GenerateContentConfig 的同名参数,定义见 binding_options.py 的 GeminiLLMOptions。
| 环境变量 | 类型 | 说明 |
|---|---|---|
GEMINI_LLM_TEMPERATURE |
float | 控制随机性(0.0–2.0,越大越有创造性)。 |
GEMINI_LLM_TOP_P |
float | 核采样参数(0.0–1.0)。 |
GEMINI_LLM_TOP_K |
int | 限制采样到 top K token(1 表示关闭限制)。 |
GEMINI_LLM_MAX_OUTPUT_TOKENS |
int | 响应中最大生成 token 数。 |
GEMINI_LLM_CANDIDATE_COUNT |
int | 每次请求返回的候选数量。 |
GEMINI_LLM_PRESENCE_PENALTY |
float | token 出现惩罚(-2.0 至 2.0)。 |
GEMINI_LLM_FREQUENCY_PENALTY |
float | token 频率惩罚(-2.0 至 2.0)。 |
GEMINI_LLM_STOP_SEQUENCES |
JSON list | 停止序列,如 '["END"]'。 |
GEMINI_LLM_SEED |
int | 可复现生成的随机种子。 |
GEMINI_LLM_THINKING_CONFIG |
JSON dict | 思考配置,如 '{"thinking_budget": 1024}'、'{"include_thoughts": true}',或关闭思考 '{"thinking_budget": 0, "include_thoughts": false}'。thinking_budget: -1 表示选择 Gemini 的动态预算(由模型自行决定)。 |
GEMINI_LLM_SAFETY_SETTINGS |
JSON dict | Gemini 安全设置覆写。 |
注意:值为 None 或空字符串的条目在构建配置对象之前即被丢弃,因此空设置不会在请求期引发类型错误。
6. Bedrock LLM 选项
前缀 BEDROCK_LLM_,映射到 Converse API。定义见 binding_options.py 的 BedrockLLMOptions。
| 环境变量 | 类型 | 说明 |
|---|---|---|
BEDROCK_LLM_TEMPERATURE |
float | 控制随机性(多数 Bedrock 模型为 0.0–1.0)。 |
BEDROCK_LLM_MAX_TOKENS |
int | 响应中最大生成 token 数 → inferenceConfig.maxTokens。 |
BEDROCK_LLM_TOP_P |
float | 核采样参数(0.0–1.0)→ inferenceConfig.topP。 |
BEDROCK_LLM_STOP_SEQUENCES |
JSON list | 停止序列 → inferenceConfig.stopSequences。 |
BEDROCK_LLM_EXTRA_FIELDS |
JSON dict | 以 additionalModelRequestFields 原样转发的模型专属字段,如 '{"reasoningConfig": {"type": "enabled", "maxReasoningEffort": "low"}}'。它是 Bedrock 侧对应 OPENAI_LLM_EXTRA_BODY 的机制。 |
源码可以确认驱动端的白名单:lightrag/llm/bedrock.py 中仅 temperature/max_tokens→maxTokens/top_p→topP/stop_sequences→stopSequences 四个字段被组装进 inferenceConfig,extra_fields 单独映射为 additionalModelRequestFields。也就是说:四个字段之外的任何东西必须走 BEDROCK_LLM_EXTRA_FIELDS,否则会被驱动静默丢弃(binding_options.py 中该类头部注释也明确提示了这一点)。
Bedrock 认证使用 SigV4 或 AWS_BEARER_TOKEN_BEDROCK,从不用 LLM_BINDING_API_KEY;三种认证模式(bearer token / 显式 SigV4 凭据 / SDK 默认凭据链)在 env.example 中有逐行注释,细节规则见 RoleSpecificLLMConfiguration.md 的 bedrock authentication rules 一节。
7. Ollama Embedding 选项
前缀 OLLAMA_EMBEDDING_。字段集与 §4 完全相同、仅去掉 think——num_ctx、num_predict、num_keep、seed、temperature、top_k、top_p、tfs_z、typical_p、min_p、repeat_last_n、repeat_penalty、presence_penalty、frequency_penalty、mirostat、mirostat_tau、mirostat_eta、numa、num_batch、num_gpu、main_gpu、low_vram、num_thread、f16_kv、logits_all、vocab_only、use_mmap、use_mlock、embedding_only、penalize_newline 与 stop。源码实现即 binding_options.py:OllamaEmbeddingOptions 直接复用 _OllamaOptionsMixin,而 think 只加在 OllamaLLMOptions 上。
实际中,对 embedding 请求只有运行时旋钮有意义:
| 环境变量 | 类型 | 说明 |
|---|---|---|
OLLAMA_EMBEDDING_NUM_CTX |
int | embedding 模型的上下文窗口。Ollama 需要它在 EMBEDDING_TOKEN_LIMIT 之外单独设置;env.example 出厂值 8192。 |
OLLAMA_EMBEDDING_NUM_GPU / _MAIN_GPU / _NUM_THREAD / _NUM_BATCH / _LOW_VRAM / _USE_MMAP / _USE_MLOCK / _NUMA / _F16_KV |
int / bool | 语义与 §4.5 中对应的 OLLAMA_LLM_* 项相同。 |
采样与重复字段只是为了与 LLM 选项集对称而存在,对 embedding 响应无任何效果。
更换 embedding 模型或其有效维度会使所有已存向量失效。参见 LightRAG Server and WebUI 中的 embedding 模型警告。
8. Gemini Embedding 选项
前缀 GEMINI_EMBEDDING_,定义见 binding_options.py。
| 环境变量 | 类型 | 说明 |
|---|---|---|
GEMINI_EMBEDDING_TASK_TYPE |
str | embedding 任务类型。不设置时按上下文自动推导(查询为 RETRIEVAL_QUERY,文档为 RETRIEVAL_DOCUMENT)。支持的值:RETRIEVAL_DOCUMENT、RETRIEVAL_QUERY、SEMANTIC_SIMILARITY、CLASSIFICATION、CLUSTERING、CODE_RETRIEVAL_QUERY、QUESTION_ANSWERING、FACT_VERIFICATION。 |
固定一个 task_type 会禁用非对称 embedding 所依赖的查询/文档区分;机制详见 Asymmetric Embedding Configuration。
9. 参数值的最终去向
| Binding | 目的地 | 被静默丢弃的 |
|---|---|---|
openai、azure_openai |
作为关键字参数并入 Chat Completions 请求 | 无——不支持的字段直达提供商,成为提供商错误。 |
ollama |
请求的 options 负载,外加顶层 think |
无。 |
gemini |
GenerateContentConfig(**options) |
值为 None 或 "" 的条目。 |
bedrock |
inferenceConfig(temperature、maxTokens、topP、stopSequences)外加来自 extra_fields 的 additionalModelRequestFields |
该字段集之外的任何字段。 |
lollms |
请求顶层字段 | 除 temperature、top_k、top_p、repeat_penalty、repeat_last_n、seed 之外的所有字段。 |
10. 提供商选项与 LLM 缓存的关系
LLM 缓存键按一个非机密 identity 分区,其组成是角色、binding、模型与 host;api_key 与提供商选项被刻意排除,使缓存键可以安全持久化。源码依据是 lightrag/utils.py 的 use_llm_func_with_cache():缓存键仅由 prompt(user/system/history 拼接)、response_format 序列化值与 llm_identity_key 三者做 hash 得到,provider options 完全不参与。实际后果:
- 改
LLM_MODEL、LLM_BINDING或LLM_BINDING_HOST会产生新的缓存键,因此会触发新的模型调用; - 改提供商选项——
temperature、think、reasoning_effort、max_tokens等——不会。已缓存的抽取/查询结果仍按旧参数命中返回。
当你需要让调参对已处理内容生效时,必须显式清掉相应缓存(/documents/clear_cache 接口,或实验查询阶段临时设 ENABLE_LLM_CACHE=false)。注意清 LLM 缓存会连抽取缓存一起清掉——而文档删除后的实体/关系重建恰恰依赖抽取缓存,操作前需权衡。
11. 常见任务
11.1 限制输出长度(防止抽取输出无限增长)
给输出设一个上限,让失控的响应在请求超时前被截断。可用的上限估算为 LLM_TIMEOUT * output_tokens_per_second(例如 240s * 50 tok/s,即保持低于 12000)。
# OpenAI 兼容服务器(vLLM/SGLang/多数网关)
OPENAI_LLM_MAX_TOKENS=9000
# OpenAI 推理模型
OPENAI_LLM_MAX_COMPLETION_TOKENS=9000
# Ollama
OLLAMA_LLM_NUM_PREDICT=9000
# Gemini
GEMINI_LLM_MAX_OUTPUT_TOKENS=9000
# Bedrock
BEDROCK_LLM_MAX_TOKENS=9000
11.2 为抽取与关键词生成关闭 thinking
挑选与你提供商匹配的那一行——它们是互斥选项,不是整块粘贴(重复出现的同名变量只会保留最后一个值)。
# Ollama
EXTRACT_OLLAMA_LLM_THINK=false
KEYWORD_OLLAMA_LLM_THINK=false
# Gemini
EXTRACT_GEMINI_LLM_THINKING_CONFIG='{"thinking_budget": 0, "include_thoughts": false}'
# OpenAI 推理模型
EXTRACT_OPENAI_LLM_REASONING_EFFORT=minimal
# OpenRouter(每个角色一条 EXTRA_BODY——以下两种形态二选一)
EXTRACT_OPENAI_LLM_EXTRA_BODY='{"reasoning": {"enabled": false}}'
# vLLM 托管的 Qwen 风格模型
# EXTRACT_OPENAI_LLM_EXTRA_BODY='{"chat_template_kwargs": {"enable_thinking": false}}'
# Bedrock——字段名与合法取值属于目标模型而非 LightRAG,
# 请查该模型的 Converse API 文档。示例形态:
# EXTRACT_BEDROCK_LLM_EXTRA_FIELDS='{"reasoningConfig": {"type": "enabled", "maxReasoningEffort": "low"}}'
env.example 中同样给出了这几条 EXTRA_BODY 形态的原型注释(OpenRouter 的 reasoning.enabled 与 vLLM 部署 Qwen3 的 chat_template_kwargs.enable_thinking),可直接对照取用。
11.3 让某个角色拿不到某个提供商选项
没有“取消继承某个选项”的语法。要么用该角色模型能接受的值覆写该选项,要么从一开始就把选项保持为角色级而非全局。典型场景:本地 OpenAI 兼容端点与官方 API 共用 openai binding——
LLM_BINDING=openai
LLM_MODEL=gpt-5-mini
# 不要在这里全局设置 OPENAI_LLM_REASONING_EFFORT——本地服务器会拒绝它。
QUERY_OPENAI_LLM_REASONING_EFFORT=medium
KEYWORD_OPENAI_LLM_MAX_TOKENS=2048
12. 自行检查选项
--help 输出只列出当前所选 binding 的选项组,所以要检查哪个 binding,就显式传入哪个:
lightrag-server --llm-binding openai --help
lightrag-server --llm-binding ollama --help
lightrag-server --llm-binding gemini --help
lightrag-server --llm-binding bedrock --help
lightrag-server --embedding-binding ollama --help
lightrag-server --embedding-binding gemini --help
一次性以带注释的 .env 块形式打印所有 binding 的选项:
python -m lightrag.llm.binding_options
两种输出都源自 lightrag/llm/binding_options.py,因此永远与当前代码同步(.env 样例由 generate_dot_env_sample() 生成,test 子命令还会演示 Ollama/OpenAI 选项的解析行为)。最后重申 §1.2:生成样例中显示的取值为提供商的典型默认值,不是 LightRAG 实际发送的值——那些行被注释掉正是出于这个原因。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00