总览(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/onyx-dot-app/onyx/1-overview
翻译时间:2026-05-27T08:44:48.390Z
翻译模型:deepseek-chat
原文字符数:12390
项目:Onyx (onyx)
---
概述
相关源文件
以下文件被用作生成此 Wiki 页面的上下文:
CONTRIBUTING.mdREADME.mdREADME.zh-CN.mdbackend/alembic/README.mdbackend/alembic/versions/6a804aeb4830_duplicated_no_harm_user_file_migration.pybackend/alembic/versions/9aadf32dfeb4_add_user_files.pybackend/alembic_tenants/versions/3b45e0018bf1_add_new_available_tenant_table.pybackend/ee/onyx/background/celery/apps/primary.pybackend/ee/onyx/background/celery/tasks/beat_schedule.pybackend/ee/onyx/background/celery/tasks/tenant_provisioning/tasks.pybackend/ee/onyx/server/tenants/schema_management.pybackend/onyx/background/celery/apps/app_base.pybackend/onyx/background/celery/apps/beat.pybackend/onyx/background/celery/apps/heavy.pybackend/onyx/background/celery/apps/light.pybackend/onyx/background/celery/apps/monitoring.pybackend/onyx/background/celery/apps/primary.pybackend/onyx/background/celery/tasks/beat_schedule.pybackend/onyx/background/celery/tasks/shared/tasks.pybackend/onyx/background/celery/tasks/vespa/tasks.pybackend/onyx/configs/app_configs.pybackend/onyx/configs/constants.pybackend/onyx/connectors/README.mdbackend/onyx/db/tag.pybackend/onyx/document_index/factory.pybackend/onyx/redis/redis_pool.pybackend/onyx/server/features/build/db/sandbox.pybackend/scripts/dev_run_background_jobs.pybackend/supervisord.confbackend/tests/external_dependency_unit/db/test_tag_race_condition.pybackend/tests/external_dependency_unit/redis/test_tenant_redis.pybackend/tests/integration/multitenant_tests/tenants/test_tenant_provisioning_rollback.pybackend/tests/integration/tests/indexing/file_connector/test_files/.onyx_metadata.jsonbackend/tests/unit/ee/onyx/server/tenants/test_schema_management.pybackend/tests/unit/onyx/background/celery/tasks/tenant_provisioning/__init__.pybackend/tests/unit/onyx/background/celery/tasks/tenant_provisioning/test_check_available_tenants.pydeployment/README.mddeployment/docker_compose/README.md
本文档提供 Onyx 系统架构、核心组件和部署模型的高层概述。Onyx 是一个基于 AI 的知识管理和聊天平台,它结合了文档索引、语义搜索和大语言模型(LLM)集成,能够对已连接的数据源进行企业级问答。
有关特定子系统的详细信息,请参考以下内容:
---
什么是 Onyx
Onyx 是一个开源 AI 平台,作为大语言模型(LLM)的应用层 README.md:28-31。它提供了功能丰富的界面,用于:
- 连接 60 多种数据源,包括 Slack、Confluence、Google Drive、GitHub 和 SharePoint,通过基于索引的连接器或 MCP 实现
README.md:31-33。 - 索引和向量化文档,使用嵌入向量模型实现高级检索增强生成(RAG)
README.md:47-48。 - 提供 AI 聊天界面,支持网络搜索、代码执行、文件创建和深度研究模式
README.md:49-57。 - 支持多租户部署,通过基于模式的隔离机制适用于企业级和云环境
README.md:92-96。 - 实现权限感知搜索,通过同步源系统的访问控制确保数据安全访问
README.md:97。
来源: README.md:28-118,backend/onyx/configs/app_configs.py:126-150
---
系统架构总览
以下图表展示了主要服务及其关系,突出了应用程序代码与数据基础设施之间的交互。
系统交互图
graph TB
subgraph "客户端层"
Browser["浏览器客户端"]
end
subgraph "代理层"
Nginx["nginx<br/>(反向代理)"]
end
subgraph "应用层"
WebServer["web_server<br/>(Next.js 独立模式)"]
ApiServer["api_server<br/>(FastAPI / uvicorn)"]
Background["background<br/>(supervisord)"]
end
subgraph "模型服务器"
InferenceServer["inference_model_server<br/>(INDEXING_ONLY=False)"]
IndexingServer["indexing_model_server<br/>(INDEXING_ONLY=True)"]
end
subgraph "数据存储"
Postgres["relational_db<br/>(PostgreSQL)"]
VespaIndex["index<br/>(Vespa / OpenSearch)"]
RedisCache["cache<br/>(Redis)"]
MinioStorage["minio<br/>(S3 兼容)"]
end
subgraph "后台工作者"
CeleryWorkers["Celery 工作者池<br/>(docfetching, docprocessing, light, heavy)"]
CeleryBeat["Celery Beat<br/>(DynamicTenantScheduler)"]
end
Browser -->|HTTPS| Nginx
Nginx -->|"端口 3000"| WebServer
Nginx -->|"端口 8080"| ApiServer
WebServer -->|"INTERNAL_URL"| ApiServer
ApiServer --> InferenceServer
ApiServer --> Postgres
ApiServer --> VespaIndex
ApiServer --> RedisCache
ApiServer --> MinioStorage
Background --> CeleryWorkers
Background --> CeleryBeat
CeleryWorkers --> IndexingServer
CeleryWorkers --> Postgres
CeleryWorkers --> VespaIndex
CeleryWorkers --> RedisCache
CeleryWorkers --> MinioStorage
CeleryBeat -.->|"调度任务"| CeleryWorkers
后台协调图
此图将系统组件映射到管理它们的代码实体,特别展示了 celery 工作者在代码库中是如何定义和隔离的。
graph LR
subgraph "supervisord.conf"
CWP["program:celery_worker_primary"]
CWL["program:celery_worker_light"]
CWH["program:celery_worker_heavy"]
CWB["program:celery_beat"]
end
subgraph "代码实体空间"
CWP -->|"onyx.background.celery.versioned_apps.primary"| PrimaryApp["PrimaryApp"]
CWL -->|"onyx.background.celery.versioned_apps.light"| LightApp["LightApp"]
CWH -->|"onyx.background.celery.versioned_apps.heavy"| HeavyApp["HeavyApp"]
CWB -->|"onyx.background.celery.versioned_apps.beat"| BeatApp["BeatApp"]
BeatApp -->|"DynamicTenantScheduler"| DTS["DynamicTenantScheduler"]
DTS -->|"get_all_tenant_ids"| DB["Postgres 数据库"]
end
subgraph "Redis 状态"
PrimaryApp -->|"OnyxRedisLocks.PRIMARY_WORKER"| RL["Redis 锁"]
end
来源: backend/supervisord.conf:30-125,backend/onyx/background/celery/apps/primary.py:53-172,backend/onyx/background/celery/apps/beat.py:27-161,CONTRIBUTING.md:80-86
---
核心组件
前端:Next.js Web 应用程序
Web 界面是一个 Next.js 应用程序,提供主要的用户和管理员体验。
- 主要用户界面: 用于对话式 AI 的聊天界面和用于系统配置的管理员仪表盘。
- 独立构建: 构建为独立的 Next.js 应用程序,适用于容器化部署。
- 状态管理: 使用 SWR 进行数据获取和缓存。
来源: README.md:30-41,CONTRIBUTING.md:131-143
后端 API:FastAPI 服务器
核心 API 服务器处理业务逻辑、安全性和协调工作。
- 职责: REST API 端点、用于聊天流式的 WebSocket/SSE,以及大语言模型(LLM)编排。
- 数据库访问: 使用
SQLAlchemy进行关系数据管理,使用alembic进行迁移。 - 配置: 通过
onyx.configs.app_configs管理,该模块负责解析环境变量backend/onyx/configs/app_configs.py:22-150。
来源: backend/onyx/configs/app_configs.py:1-150,CONTRIBUTING.md:98-130
文档索引与搜索
Onyx 支持高性能混合搜索(向量 + 关键词)。
- Vespa: 用于检索增强生成(RAG)工作负载的默认主索引。
- OpenSearch: 系统支持的替代索引后端。
- 索引管线: 由后台任务协调,例如
check_for_vespa_sync_taskbackend/onyx/background/celery/tasks/vespa/tasks.py:82-109。
来源: README.md:79-85,backend/onyx/background/celery/tasks/vespa/tasks.py:75-120
后台处理
异步工作负载由 Celery 工作者管理,通过 Redis 进行协调。
- 工作者池: 分为
primary、light、heavy、docprocessing和docfetching,以防止瓶颈backend/supervisord.conf:30-103。 - 任务调度: 由
DynamicTenantScheduler管理,该调度器会动态调整任务生成速率backend/onyx/background/celery/apps/beat.py:27-48。 - 多租户: 使用
TenantRedis提供基于模式的隔离,通过自动为 Redis 键添加tenant_id前缀实现backend/onyx/redis/redis_pool.py:65-91。
来源: backend/supervisord.conf:30-125,backend/onyx/background/celery/apps/beat.py:27-161,backend/onyx/redis/redis_pool.py:65-180
---
部署模式
Onyx 支持两种主要部署模式,以平衡资源使用和功能需求:
| 模式 | 功能 | 资源需求 |
|---|---|---|
| Onyx Standard | 完整检索增强生成(RAG)、后台连接器、向量索引和模型服务器 README.md:79-85。 | 较高(多个容器) |
| Onyx Lite | 聊天用户界面、代理和工具。无需向量数据库或后台索引 README.md:74-78。 | 低(< 1GB 内存) |
部署平台: 支持 Docker、Kubernetes(Helm)和主流云服务提供商 README.md:68-70。
---
技术栈总结
| 层 | 技术 |
|---|---|
| 前端 | Next.js, Tailwind CSS, React, SWR |
| 后端 | FastAPI, SQLAlchemy, Alembic, Celery backend/supervisord.conf:30-125 |
| 数据库 | PostgreSQL(关系型), Vespa/OpenSearch(向量/搜索)README.md:79-85 |
| 缓存/消息代理 | Redis(使用 TenantRedis 实现多租户)backend/onyx/redis/redis_pool.py:65-91 |
| 对象存储 | MinIO(S3 兼容)CONTRIBUTING.md:85 |
来源: README.md:79-85,CONTRIBUTING.md:80-86,backend/onyx/redis/redis_pool.py:65-180