LLM 与嵌入提供方(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/HKUDS/LightRAG/3-llm-and-embedding-providers
翻译时间:2026-05-27T08:45:11.554Z
翻译模型:deepseek-chat
原文字符数:5832
项目:LightRAG (lightrag)
---
大语言模型(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 实现按需依赖管理,确保核心库保持轻量。
提供商到代码实体的映射
下图展示了自然语言层面的提供商概念如何映射到代码库中具体的实现文件和类。
提供商绑定映射图
graph TD
subgraph "自然语言层面"
OpenAI["OpenAI / Azure"]
LocalLLM["本地大语言模型(Ollama/HF)"]
CloudLLM["云端大语言模型(Anthropic/Gemini)"]
Embedders["嵌入向量提供商"]
end
subgraph "代码实体层面"
OAI_F["lightrag/llm/openai.py"]
AZ_F["lightrag/llm/azure_openai.py"]
OL_F["lightrag/llm/ollama.py"]
HF_F["lightrag/llm/hf.py"]
ANT_F["lightrag/llm/anthropic.py"]
GEM_F["lightrag/llm/gemini.py"]
BED_F["lightrag/llm/bedrock.py"]
Wrap["wrap_embedding_func_with_attrs"]
Retry["tenacity.retry"]
end
OpenAI --> OAI_F
OpenAI --> AZ_F
LocalLLM --> OL_F
LocalLLM --> HF_F
CloudLLM --> ANT_F
CloudLLM --> GEM_F
CloudLLM --> BED_F
Embedders --> Wrap
OAI_F --> Retry
OL_F --> Retry
来源: 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)机制实现的。
大语言模型角色分配流程
graph LR
subgraph "管线角色"
EXT["EXTRACT"]
KEY["KEYWORD"]
QRY["QUERY"]
VLM["VLM"]
end
subgraph "提供商逻辑"
RLLM["RoleLLMConfig"]
RSpec["RoleSpec"]
CRF["create_role_llm_func"]
end
EXT --> RLLM
KEY --> RLLM
QRY --> RLLM
VLM --> RLLM
RLLM --> RSpec
RSpec --> CRF
- 专业化: 用户可以将高推理能力的模型(如 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