LLM 与嵌入提供方
大语言模型(LLM)与嵌入向量提供商
相关源文件
以下文件为本维基页面的生成提供了上下文:
lightrag/llm/anthropic.pylightrag/llm/azure_openai.pylightrag/llm/bedrock.pylightrag/llm/gemini.pylightrag/llm/hf.pylightrag/llm/jina.pylightrag/llm/llama_index_impl.pylightrag/llm/lmdeploy.pylightrag/llm/lollms.pylightrag/llm/nvidia_openai.pylightrag/llm/ollama.pylightrag/llm/openai.py
LightRAG 在 lightrag/llm/ 目录下实现了一个模块化的提供商绑定层,将核心检索增强生成(RAG)逻辑与具体的模型实现解耦。该层处理了不同 API 契约(OpenAI、Anthropic、Gemini 等)、本地推理引擎(Ollama、HuggingFace、LMDeploy)以及嵌入向量相关细节(如维度缩减和非对称前缀)的复杂性。
架构总览
提供商层按功能划分为补全(Completion)和嵌入向量(Embedding)两个绑定模块。它使用 tenacity 实现健壮的重试逻辑,并通过 pipmaster 实现按需依赖管理,确保核心库保持轻量。
提供商到代码实体的映射
下图展示了自然语言层面的提供商概念如何映射到代码库中具体的实现文件和类。
提供商绑定映射图
来源: lightrag/llm/openai.py:12-25、lightrag/llm/ollama.py:8-24、lightrag/llm/anthropic.py:15-29、lightrag/llm/gemini.py:33-43
补全绑定
LightRAG 支持多种大语言模型(LLM)提供商用于文本生成。系统主要面向兼容 OpenAI 的 API,但也为 Amazon Bedrock 或 Google Gemini 等非标准接口提供了专门的适配器。
主要特性包括:
- 统一接口: 大多数绑定遵循
[provider]_complete_if_cache模式,使核心引擎可以通过一致的异步签名与不同模型交互lightrag/llm/openai.py:211-230、lightrag/llm/ollama.py:90-108。 - 可观测性: OpenAI 客户端集成了 Langfuse,提供大语言模型追踪和调试能力
lightrag/llm/openai.py:43-65。 - 重试逻辑: 针对
RateLimitError、APIConnectionError和APITimeoutError自动进行指数退避重试lightrag/llm/openai.py:211-225、lightrag/llm/anthropic.py:45-51。
有关具体提供商实现和配置的详细信息,请参阅 大语言模型补全绑定。
嵌入向量绑定与非对称支持
嵌入向量函数通过一个专门的装饰器进行管理,该装饰器会附加向量存储后端所需的元数据。
- 元数据注入:
wrap_embedding_func_with_attrs装饰器会将embedding_dim和max_token_size等关键属性注入到嵌入向量函数中lightrag/llm/jina.py:61-66、lightrag/llm/hf.py:171-176。 - 非对称嵌入: 支持"查询"与"文档"两种上下文,允许 Jina 或 VoyageAI 等提供商使用不同的前缀或任务来优化检索
lightrag/llm/jina.py:100-109、lightrag/llm/hf.py:181-193。 - 效率: 支持通过 Base64 编码进行网络传输,以减少嵌入向量传输的延迟
lightrag/llm/openai.py:92-99。
有关维度处理和非对称配置的详细信息,请参阅 嵌入向量绑定与非对称嵌入。
角色特定的大语言模型配置
LightRAG 允许对检索增强生成(RAG)管线中执行特定任务的模型进行精细控制。这是通过"角色"(Roles)机制实现的。
大语言模型角色分配流程
- 专业化: 用户可以将高推理能力的模型(如 GPT-4o)分配给
EXTRACT角色用于知识图谱构建,同时使用更快、更便宜的模型(如 GPT-4o-mini)进行KEYWORD提取。 - 视觉语言模型(VLM)支持: 通过
VLM角色提供专用的视觉能力绑定,用于处理图像和表格lightrag/llm/ollama.py:165-170、lightrag/llm/anthropic.py:124-141。
有关运行时配置和切换角色的详细信息,请参阅 角色特定的大语言模型配置。
来源: lightrag/llm/openai.py:122-146、lightrag/llm/jina.py:61-66、lightrag/llm/ollama.py:109-138、lightrag/llm/anthropic.py:63-70