配置与绑定选项
此页面内容来自 DeepWiki 重组后的对应页面(来源:3-3.zh.md)
按角色配置大语言模型(LLM)
相关源文件
以下文件为本维基页面的生成提供了上下文:
docs/RoleSpecificLLMConfiguration-zh.mddocs/RoleSpecificLLMConfiguration.mdenv.examplelightrag/api/config.pylightrag/api/lightrag_server.pylightrag/api/utils_api.pylightrag/constants.pylightrag/kg/factory.pylightrag/llm_roles.pylightrag/storage_migrations.pytests/test_api_config_role_max_async.pytests/test_bedrock_llm.pytests/test_doc_status_chunk_preservation.pytests/test_llm_role_runtime.py
LightRAG 支持为检索增强生成(RAG)管线的不同阶段分配不同的大语言模型(LLM)或视觉语言模型(VLM)。这样可以优化成本、延迟和性能——例如,使用高吞吐量、低成本的模型进行实体提取,同时保留强大的推理模型用于最终查询回答。
角色概览
系统定义了四个不同的角色,每个角色对应引擎内的一组特定操作 docs/RoleSpecificLLMConfiguration.md:7-14:
| 角色 | 用途 |
|---|---|
EXTRACT | 从文本片段中提取实体和关系,并在合并过程中进行描述摘要 docs/RoleSpecificLLMConfiguration.md:11-11。 |
KEYWORD | 生成用于多向量检索的高层和低层关键词 docs/RoleSpecificLLMConfiguration.md:12-12。 |
QUERY | 最终响应生成、查询扩展以及兼容 Ollama 的 API 补全 docs/RoleSpecificLLMConfiguration.md:13-13。 |
VLM | 通过视觉语言模型分析多模态内容(图像、表格、公式)docs/RoleSpecificLLMConfiguration.md:14-14。 |
数据流与类架构
配置通过 RoleLLMConfig 对象进行管理,这些对象被传递给 LightRAG 类。在内部,引擎使用 create_role_llm_func 将提供者绑定包装成角色感知的执行单元。
配置层级图
下图展示了环境变量和代码实体如何映射到内部的 RoleLLMConfig 状态。
来源:lightrag/llm_roles.py:1-40、lightrag/lightrag.py:100-150、docs/RoleSpecificLLMConfiguration.md:46-76
实现细节
角色定义与规范
角色被定义为包含角色名称和文档的 RoleSpec 对象。全局 ROLES 列表作为所有有效管线阶段的注册表 lightrag/llm_roles.py:34-40。
配置容器:RoleLLMConfig
RoleLLMConfig 类是一个数据容器,用于存储特定角色的覆盖配置 lightrag/llm_roles.py:13-31:
model:该角色的具体模型名称。binding:提供者绑定(例如openai、ollama)。host:端点 URL。max_async:该特定角色的并发限制。kwargs:提供者特定选项的字典(例如temperature、top_p)。
运行时角色切换
LightRAG 类初始化一个字典 _role_llm_states 来跟踪每个角色的状态 lightrag/lightrag.py:180-200。当管线组件需要调用大语言模型(LLM)时,它会使用该角色的有效配置。
执行流程:create_role_llm_func
系统使用工厂模式将配置转换为可执行函数。
来源:lightrag/lightrag.py:250-300、lightrag/llm/binding_options.py:10-50
继承规则
系统遵循严格的继承层级,以最小化配置冗余 docs/RoleSpecificLLMConfiguration.md:103-137:
- 提供者内继承:如果
{ROLE}_LLM_BINDING与基础LLM_BINDING匹配,则该角色继承基础的主机、API 密钥和超时设置。它仅覆盖model或max_async等特定字段docs/RoleSpecificLLMConfiguration.md:105-127。 - 跨提供者配置:如果绑定不同,则必须完整指定角色特定配置(模型、API 密钥和端点)。它不会从基础 LLM 继承提供者特定选项
docs/RoleSpecificLLMConfiguration.md:129-153。 - 并发(MAX_ASYNC):如果未设置
{ROLE}_MAX_ASYNC_LLM,则默认使用全局MAX_ASYNC值lightrag/api/config.py:30-36。
提供者行为矩阵
| 提供者 | 主机覆盖 | API 密钥覆盖 | 认证来源 |
|---|---|---|---|
openai | QUERY_LLM_BINDING_HOST | QUERY_LLM_BINDING_API_KEY | Bearer 令牌 |
bedrock | EXTRACT_LLM_BINDING_HOST | 不支持 | 角色级 SigV4 docs/RoleSpecificLLMConfiguration.md:155-180 |
gemini | VLM_LLM_BINDING_HOST | VLM_LLM_BINDING_API_KEY | API 密钥或 Vertex AI docs/RoleSpecificLLMConfiguration.md:191-191 |
ollama | EXTRACT_LLM_BINDING_HOST | EXTRACT_LLM_BINDING_API_KEY | 可选的 Bearer |
来源:docs/RoleSpecificLLMConfiguration.md:183-191、lightrag/api/config.py:71-86
服务端配置
在 lightrag-server 中,配置通过 parse_args 从环境变量解析 lightrag/api/config.py:5-20。服务器使用 LLMConfigCache 预计算不同提供者的选项字典,确保角色特定的覆盖配置正确合并到提供者特定的 Options 类(例如 OpenAILLMOptions)中 lightrag/api/lightrag_server.py:131-150。
来源:lightrag/api/lightrag_server.py、lightrag/api/config.py、lightrag/llm_roles.py、docs/RoleSpecificLLMConfiguration.md。