术语表
词汇表
相关源文件
本章引用的主要源码文件:
CONTRIBUTING.mdREADME.mdREADME.zh-CN.mdbackend/alembic/README.mdbackend/alembic/versions/6a804aeb4830_duplicated_no_harm_user_file_migration.pybackend/alembic/versions/74379b447d4c_add_paste_as_tile_to_user.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/auth/schemas.pybackend/onyx/auth/users.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/chat/chat_state.pybackend/onyx/chat/chat_utils.pybackend/onyx/chat/llm_loop.pybackend/onyx/chat/llm_step.pybackend/onyx/chat/models.pybackend/onyx/chat/process_message.pybackend/onyx/chat/prompt_utils.pybackend/onyx/configs/app_configs.pybackend/onyx/configs/constants.pybackend/onyx/connectors/README.mdbackend/onyx/connectors/factory.pybackend/onyx/context/search/models.pybackend/onyx/context/search/pipeline.pybackend/onyx/db/chat.pybackend/onyx/db/enums.pybackend/onyx/db/models.pybackend/onyx/db/tag.pybackend/onyx/db/user_preferences.pybackend/onyx/deep_research/dr_loop.pybackend/onyx/document_index/factory.pybackend/onyx/prompts/chat_prompts.pybackend/onyx/prompts/deep_research/__init__.pybackend/onyx/prompts/deep_research/dr_tool_prompts.pybackend/onyx/prompts/deep_research/orchestration_layer.pybackend/onyx/prompts/deep_research/research_agent.pybackend/onyx/prompts/prompt_utils.pybackend/onyx/prompts/tool_prompts.pybackend/onyx/redis/redis_pool.pybackend/onyx/server/features/build/db/sandbox.pybackend/onyx/server/manage/get_state.pybackend/onyx/server/manage/models.pybackend/onyx/server/manage/users.pybackend/onyx/server/query_and_chat/chat_backend.pybackend/onyx/server/query_and_chat/models.pybackend/onyx/tools/fake_tools/research_agent.pybackend/onyx/tools/models.pybackend/onyx/tools/tool_implementations/search/search_tool.pybackend/onyx/tools/tool_runner.pybackend/scripts/dev_run_background_jobs.pybackend/supervisord.confbackend/tests/api/test_api.pybackend/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/auth/test_single_tenant_jwt_strategy.pybackend/tests/unit/onyx/background/celery/tasks/tenant_provisioning/__init__.pybackend/tests/unit/onyx/background/celery/tasks/tenant_provisioning/test_check_available_tenants.pybackend/tests/unit/onyx/chat/test_llm_loop.pybackend/tests/unit/onyx/chat/test_llm_step.pybackend/tests/unit/onyx/server/test_upload_files.pydeployment/README.mddeployment/aws_ecs_fargate/cloudformation/services/onyx_nginx_service_template.yamldeployment/aws_ecs_fargate/cloudformation/services/onyx_web_server_service_template.yamldeployment/docker_compose/README.md- [web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx](web/src/app/admin/connectors/[connector]/AddConnectorPage.tsx)
- [web/src/app/admin/connectors/[connector]/pages/Advanced.tsx](web/src/app/admin/connectors/[connector]/pages/Advanced.tsx)
- [web/src/app/admin/connectors/[connector]/pages/ConnectorInput/FileInput.tsx](web/src/app/admin/connectors/[connector]/pages/ConnectorInput/FileInput.tsx)
- [web/src/app/admin/connectors/[connector]/pages/DynamicConnectorCreationForm.tsx](web/src/app/admin/connectors/[connector]/pages/DynamicConnectorCreationForm.tsx)
- [web/src/app/admin/connectors/[connector]/pages/utils/google_site.ts](web/src/app/admin/connectors/[connector]/pages/utils/google_site.ts)
web/src/app/admin/indexing/status/CCPairIndexingStatusTable.tsxweb/src/app/admin/layout.tsxweb/src/components/admin/connectors/AccessTypeForm.tsxweb/src/components/admin/connectors/AccessTypeGroupSelector.tsxweb/src/components/icons/icons.tsxweb/src/hooks/useTokenRefresh.test.tsxweb/src/hooks/useTokenRefresh.tsweb/src/lib/connectors/connectors.tsxweb/src/lib/connectors/credentials.tsweb/src/lib/sources.tsweb/src/lib/types.tsweb/src/providers/UserProvider.tsx
本页面提供了 Onyx 代码库中特定术语、领域概念和架构模式的技术定义。它作为工程师的参考手册,将高层术语映射到代码中的具体实现细节。
核心领域实体
CCPair(连接器-凭证对)
CCPair 代表数据源连接的一个具体实例。它将 Connector("如何"和"何处",例如一个特定的 GitHub 仓库 URL)与 Credential("谁",例如一个个人访问令牌)绑定在一起。大多数索引和剪枝逻辑都在 CCPair 级别上操作。
- 实现:
ConnectorCredentialPairbackend/onyx/db/models.py:541-594。 - 状态跟踪:通过
ConnectorCredentialPairStatusbackend/onyx/db/enums.py:64进行跟踪。 - 默认 ID:系统使用
DEFAULT_CC_PAIR_IDbackend/onyx/configs/constants.py:74定义的默认 ID 进行初始化。
Persona(助手)
Persona 是一个配置对象,定义了 LLM 的行为方式。它包含系统提示词、一组可用工具以及它可以访问的特定文档集或项目。在前端,这些通常被称为助手。
- 实现:
Personabackend/onyx/db/models.py:1010-1110。 - 默认 Persona:系统默认值(ID 0)由
DEFAULT_PERSONA_IDbackend/onyx/configs/constants.py:72定义。
文档集
跨不同连接器的文档的逻辑分组。可以将 Persona 限制为仅搜索特定的文档集。
- 实现:
DocumentSetbackend/onyx/db/models.py:740-762。
用户角色
Onyx 实现了在前端和后端中定义的分层 RBAC 系统。
- 角色:
limited、basic、admin、curator、global_curator、ext_perm_user、slack_userweb/src/lib/types.ts:65-73。 - 后端定义:
UserRolebackend/onyx/auth/schemas.py:47。
聊天与编排术语
LLM 循环
run_llm_loop 是核心编排函数。它管理一个多周期执行过程,在此过程中 LLM 可以生成文本或调用工具。它处理 run_llm_step 和 run_tool_calls 之间的转换。
- 关键函数:
run_llm_loopbackend/onyx/chat/llm_loop.py:39。 - 周期限制:编排通常会限制周期以防止无限循环,特别是在深度研究中,可能涉及多达 6 个周期
backend/onyx/deep_research/dr_loop.py:95。
深度研究模式
一种高级的多阶段编排流程,包括澄清、研究计划生成以及使用 research_agent 等专用工具的研究代理循环。
- 入口点:
run_deep_research_llm_loopbackend/onyx/deep_research/dr_loop.py:83。 - 编排器提示词:
ORCHESTRATOR_PROMPTbackend/onyx/prompts/deep_research/orchestration_layer.py:47。
数据包
流式 API 中的通信单元。数据包表示增量更新,例如 Token、工具调用开始或引用。
- 实现:
Packetbackend/onyx/server/query_and_chat/streaming_models.py:121。
代码实体映射:从聊天请求到 LLM
下图说明了用户请求如何从 API 流经编排层到达 LLM。
标题:消息处理流程
来源:backend/onyx/chat/process_message.py:33、backend/onyx/chat/llm_loop.py:39、backend/onyx/chat/chat_state.py:24、backend/onyx/chat/emitter.py:37。
后台基础设施
Celery 工作节点
Onyx 使用专门的 Celery 队列来分离关注点并管理资源分配:
- docfetching:用于从连接器拉取数据的高延迟网络任务
backend/onyx/configs/constants.py:89。 - docprocessing:用于解析和片段切分的 CPU 密集型任务
backend/onyx/configs/constants.py:88。 - indexing:用于嵌入向量生成和向量数据库写入的重型任务
backend/onyx/configs/constants.py:83。 - monitoring:用于检查后台进程健康状态的任务
backend/onyx/configs/constants.py:92。 - 实现:工作节点类型通过
OnyxCeleryQueuesbackend/onyx/background/celery/tasks/beat_schedule.py:17定义。
Redis 栅栏
一种协调模式,用于确保在分布式系统中,特定任务(例如特定 CCPair 的索引)的同一实例一次只运行一个。
- 实现:
set_fencebackend/onyx/chat/stop_signal_checker.py:35。 - 超时时间:
CELERY_TASK_WAIT_FOR_FENCE_TIMEOUTbackend/onyx/configs/constants.py:156。
技术缩写
| 缩写 | 完整术语 | 定义 | 代码指针 |
|---|---|---|---|
| MT | 多租户 | 允许在一个实例上隔离多个客户的架构。 | MULTI_TENANT shared_configs/configs.py:134 |
| PAT | 个人访问令牌 | 用于程序化 API 访问的用户生成令牌。 | fetch_user_for_pat backend/onyx/db/pat.py:130 |
| OIDC | OpenID Connect | 基于 OAuth 2.0 的认证层。 | AuthType.OIDC backend/onyx/configs/constants.py:107 |
| SWR | Stale-While-Revalidate | 用于前端数据获取的 React 钩子库。 | useSWR 在 web/src/lib/hooks.ts:14 中 |
| MCP | 模型上下文协议 | 用于 LLM 访问外部工具/数据的协议。 | MCPServerStatus backend/onyx/db/enums.py:77 |
连接器与索引概念
索引管线
将原始数据转换为可搜索片段的步骤序列。
- 获取:
Connector通过load_from_state或poll检索数据。 - 解析:从各种格式中提取文本(例如,使用
markitdown)。 - 切分:使用
Chunker将文本拆分为可管理的片段。 - 嵌入:使用
indexing_model_server生成向量。 - 更新插入:存储在
Vespa或OpenSearch中。
- 核心逻辑:
indexing_pipeline.pybackend/onyx/indexing/indexing_pipeline.py。
剪枝
从索引中移除源系统中不再存在的文档的过程。
- 任务:
connector_pruning_generator_taskbackend/onyx/background/celery/tasks/pruning/tasks.py。 - 锁超时时间:
CELERY_PRUNING_LOCK_TIMEOUTbackend/onyx/configs/constants.py:160。
代码实体映射:数据入库
此图将概念上的入库管线映射到后端中的特定类和函数。
标题:文档入库管线
来源:backend/onyx/indexing/indexing_pipeline.py、backend/onyx/document_index/factory.py:84、backend/onyx/db/models.py:118。
数据库模型参考
| 模型名称 | 用途 | 文件路径 |
|---|---|---|
User | 存储用户身份、角色和偏好。 | backend/onyx/db/models.py:255 |
ChatSession | 对话线程的根实体。 | backend/onyx/db/models.py:1183 |
ChatMessage | 会话中的单个消息。 | backend/onyx/db/models.py:1288 |
Document | 已索引项目的元数据和主键。 | backend/onyx/db/models.py:612 |
ToolCall | LLM 请求执行工具的记录。 | backend/onyx/db/models.py:1515 |
Connector | 数据源的配置。 | backend/onyx/db/models.py:476 |
Credential | 连接器的认证详情。 | backend/onyx/db/models.py:433 |
AccessToken | 用于认证的会话令牌存储。 | backend/onyx/db/models.py:365 |
来源:backend/onyx/db/models.py、backend/onyx/configs/constants.py、web/src/lib/types.ts、backend/onyx/chat/llm_loop.py、backend/onyx/deep_research/dr_loop.py。