REST API 服务端
REST 接口服务器
相关源文件
本章引用的主要源码文件:
env.examplelightrag/api/config.pylightrag/api/lightrag_server.pylightrag/api/utils_api.pylightrag/constants.py
LightRAG REST API 服务器是一个高性能的 FastAPI 应用程序,旨在通过 HTTP 暴露核心检索增强生成(RAG)引擎的能力。它提供了用于文档管理、知识图谱探索和高级检索的健壮接口,同时通过 Ollama 仿真层保持与外部生态系统的兼容性。
系统架构总览
该服务器作为 LightRAG 核心类的管理层,处理多租户工作空间隔离、认证和请求编排。
来源:lightrag/api/lightrag_server.py:1-56, lightrag/api/lightrag_server.py:1021-1050, lightrag/api/utils_api.py:91-127
关键组件
| 组件 | 代码实体 | 职责 |
|---|---|---|
| 应用工厂 | create_app | 初始化 FastAPI,挂载 WebUI 的静态文件,并附加路由器。 lightrag/api/lightrag_server.py:1021-1050 |
| 全局配置 | _GlobalArgsProxy | 一个延迟加载的代理,管理系统范围的参数以及大语言模型(LLM)/嵌入向量配置。 lightrag/api/lightrag_server.py:284-333 |
| 认证处理器 | auth_handler | 管理 JWT 生成、校验和 OAuth2 密码流程。 lightrag/api/auth.py:25-50 |
| 工作空间管理器 | LIGHTRAG-WORKSPACE | 基于请求头的隔离机制,允许单个服务器实例管理多个逻辑知识图谱。 lightrag/api/lightrag_server.py:1052-1085 |
| Ollama 仿真 | OllamaAPI | 提供如 /api/chat 等端点,允许 Open WebUI 等工具将 LightRAG 用作后端。 lightrag/api/routers/ollama_api.py:18-40 |
服务器配置与启动
服务器通过环境变量(在 .env 中定义)和由 parse_args 解析的命令行参数组合进行配置。一个关键组件是 LLMConfigCache,它会智能地缓存特定于供应商的选项(OpenAI、Ollama、Gemini 等),以确保每个请求的 RAG 引擎快速初始化。
服务器支持通过 Gunicorn/Uvicorn 进行生产部署,并支持可配置的工作进程数量和超时时间。它还实现了一个 lifespan 上下文管理器,用于处理共享存储数据和锁的优雅初始化和终结。
详情请参见 服务器配置与启动。
来源: lightrag/api/lightrag_server.py:131-230, lightrag/api/config.py:1-49, env.example:1-40
查询、图谱和 Ollama API 路由
API 被组织为功能路由器:
- 查询路由: 实现
/query、/query/stream和/query/data端点。这些端点接受QueryRequest模型,并映射到核心引擎的aquery方法。 - 图谱路由: 提供对知识图谱的深度访问,包括子图检索、实体编辑和关系合并。
- Ollama 仿真: 一个专门的路由器,模拟 Ollama API,实现与更广泛的大语言模型(LLM)工具生态系统的无缝集成。
详情请参见 查询、图谱和 Ollama API 路由。
来源: lightrag/api/routers/query_routes.py:1-30, lightrag/api/routers/graph_routes.py:1-30, lightrag/api/routers/ollama_api.py:1-50
认证与安全
LightRAG 实现了多层安全模型:
- 基于 JWT 的认证: 支持 OAuth2 密码流程,并支持可配置的令牌过期时间(
TOKEN_EXPIRE_HOURS)。 - API 密钥访问: 请求可以通过
X-API-Key请求头进行认证。 - 令牌自动续期: 一种滑动窗口机制(
TOKEN_AUTO_RENEW),当用户在令牌即将过期时处于活跃状态,会发出一个X-New-Token请求头。 - 白名单支持: 允许特定路径(如
/health)绕过认证。
详情请参见 认证与安全。
来源: lightrag/api/auth.py:1-60, lightrag/api/utils_api.py:120-175, lightrag/api/config.py:159-169
API 交互流程
下图展示了请求如何从网络流入核心代码实体。
来源:lightrag/api/lightrag_server.py:1021-1050, lightrag/api/utils_api.py:120-135, lightrag/api/routers/query_routes.py:80-110