Onyx开源AI平台:从RAG原理到企业级部署的完整指南
1. 项目概述Onyx一个能让你真正“拥有”AI能力的开源平台如果你和我一样在过去几年里深度体验过各种AI工具从早期的ChatGPT网页版到后来层出不穷的各类套壳应用再到尝试自建一些基于开源模型的服务你可能会发现一个共同的痛点我们总是在“租用”AI能力而不是“拥有”它。租用意味着受制于人——API费用、服务稳定性、数据隐私、功能边界每一项都可能成为项目推进中的绊脚石。而今天要深入拆解的Onyx正是为了解决这个核心痛点而生的。它不是另一个简单的聊天界面而是一个雄心勃勃的、开源的“AI应用层”平台目标是把构建复杂AI应用所需的一切基础设施打包成一个你可以完全掌控、自由部署的完整系统。简单来说Onyx想成为AI时代的“WordPress”或“Nextcloud”。它为你提供了一个功能齐备的底座让你无需从零开始搭建向量数据库、设计Agent工作流、集成各种外部工具就能快速拥有一个属于自己或团队的、功能强大的AI工作台。它的核心价值在于“开箱即用”与“深度可定制”的结合。你可以通过一行命令在本地或自己的服务器上启动一个功能媲美许多商业产品的AI平台并且由于其开源属性MIT协议你可以深入代码层面进行任何你想要的修改。这个项目适合谁我认为有三类人特别值得关注开发者与技术团队希望将AI能力深度集成到自己的产品或内部工作流中需要高度的可控性、数据隐私和定制化功能。AI应用的重度用户与研究者不满足于通用聊天机器人需要基于私有知识库进行深度问答RAG、执行复杂多步任务Agent、或进行联网深度研究。有自建AI服务需求的企业关注成本控制、数据安全、审计合规并需要团队协作、权限管理等企业级功能。Onyx的野心不小它试图覆盖从简单的对话交互到复杂的AI智能体编排的整个光谱。接下来我们就一层层剥开它的外壳看看它到底是如何实现这些目标的以及在实践中部署和使用时会遇到哪些“坑”又有哪些技巧可以让你事半功倍。2. 核心架构与设计哲学为什么是“应用层”在深入功能细节之前理解Onyx的定位——“LLM的应用层”——至关重要。这决定了它的架构设计和功能边界。我们可以把当前基于大语言模型LLM的应用开发栈粗略分为三层模型层提供基础AI能力的引擎如OpenAI的GPT系列、Anthropic的Claude、开源的Llama/Mistral以及各类嵌入模型。这一层关注的是模型的推理能力、上下文长度和成本。基础设施层为AI应用提供支撑的“水电煤”包括向量数据库如Pinecone, Weaviate、计算框架如LangChain, LlamaIndex、编排工具如LangGraph等。这一层解决了如何连接、存储、检索和流程化调用AI能力的问题。应用层最终用户直接交互的界面和功能集合。它需要将基础设施层的能力封装成直观、稳定、可用的产品功能比如一个美观的聊天界面、一个可视化的知识库管理后台、一个可配置的智能体工作台。Onyx的发力点就在这第三层。它的设计哲学不是重复造轮子去替代优秀的底层基础设施而是做一个优秀的“集成商”和“封装者”。它默认集成了诸如Qdrant向量数据库、PostgreSQL关系型数据库、Redis缓存、MinIO对象存储等成熟组件并基于它们之上构建了直接面向最终用户的功能模块。这样做的好处是显而易见的开发者无需再花费大量精力去选型、搭建和调试这些底层服务可以直接站在一个功能完备的平台上专注于业务逻辑和用户体验。2.1 技术栈选型解析Next.js Python的黄金组合Onyx的技术栈选择体现了其面向现代Web应用和AI后端的需求。前端采用了Next.js这是一个基于React的元框架。选择Next.js而非纯React我猜测团队主要基于以下几点考量全栈能力Next.js支持服务端渲染SSR、静态站点生成SSG以及API路由非常适合Onyx这种前后端交互密集、且对首屏加载速度和SEO对于文档页面有要求的应用。API路由功能使得在Next.js应用中直接处理一些后端逻辑变得非常方便。开发体验与生态Next.js提供了开箱即用的路由、打包、优化等配置极大地提升了开发效率。其庞大的社区和丰富的插件生态也能加速功能开发。类型安全结合TypeScript能为大型前端项目提供良好的类型安全和开发体验。后端核心则选择了Python。这几乎是AI领域的事实标准原因无需赘述丰富的机器学习库如Transformers, Sentence-Transformers、成熟的异步框架如FastAPI, 虽然Onyx可能用了其他框架、以及庞大的AI开发生态。Python后端负责处理最核心的AI逻辑与LLM API的通信、RAG的检索与生成流程、Agent的推理与行动调度、代码执行等。这种前后端分离的架构Next.js作为前端主框架和部分BFFPython作为AI能力后端是当前复杂Web应用的常见且合理的选择。它允许前端和后端团队使用各自领域最擅长的技术并通过清晰的API契约进行协作。2.2 功能模块化设计像乐高一样拼装AI能力浏览Onyx的功能列表你会发现它不是一个单一功能的应用而是一个功能模块的集合。这种模块化设计是其“平台”属性的体现。每个核心功能如聊天Chat、检索增强生成RAG、智能体Agents、深度研究Deep Research、代码执行等在架构上很可能是相对独立的服务或模块。它们通过内部的事件总线、消息队列或API网关进行通信。这种设计带来了极高的灵活性可插拔你可以根据需求启用或禁用某些功能。例如如果你不需要代码执行出于安全考虑可以在部署时关闭相关服务减少攻击面。可扩展新的功能模块可以相对独立地开发和集成进来。Onyx对MCPModel Context Protocol的支持就是很好的例子它提供了一种标准化的方式来扩展外部工具和数据的连接能力。易于维护单个模块的更新和故障不会轻易导致整个系统崩溃。在实际部署中这种模块化会体现在Docker Compose或Kubernetes的部署文件里你会看到多个容器服务分别对应前端、后端API、工作队列、向量索引服务、模型推理服务等。3. 核心功能深度剖析与实操要点了解了Onyx的“世界观”和“骨架”我们再来深入其“五脏六腑”看看每个核心功能是如何实现的以及在实践中需要注意什么。3.1 Agentic RAG不仅仅是向量搜索RAG检索增强生成几乎是当前私有知识AI问答的标配。但Onyx将其称为“Agentic RAG”这暗示了它的实现不止于简单的“检索-拼接-生成”三步走。传统RAG的常见痛点检索不精准单纯基于向量相似度检索可能返回语义相关但并非问题直接答案的文档片段。上下文不足检索到的片段可能缺乏回答问题所需的完整背景信息。无法处理复杂查询对于需要多步推理、综合多个文档信息的问题简单RAG无能为力。Onyx的“Agentic”思路可能如何解决 根据其文档提及的“混合索引”和“AI Agents for information retrieval”我们可以推测其流程可能更加智能混合索引很可能同时使用了向量索引用于语义搜索和关键词索引如Elasticsearch或PostgreSQL的全文搜索。对于某些明确包含关键实体如产品名、错误代码的查询关键词检索可能更准更快。系统会智能地融合两种检索方式的结果。Agent介入检索在检索前后引入一个轻量级的“规划Agent”或“路由Agent”。这个Agent的任务是理解用户意图将原始查询重写、扩展或分解成更利于检索的子问题。例如用户问“公司去年的Q3财报表现如何”Agent可能将其分解为“找出公司2023年Q3财报PDF”和“从该PDF中提取营收、利润等关键指标”。决策检索策略决定使用哪种索引是否需要发起网络搜索如果知识库不全是否需要执行代码来计算数据。结果后处理对检索到的多个文档片段进行去重、排序、相关性过滤甚至进行初步的摘要再交给生成模型。实操心得配置RAG的“黄金参数”在Onyx中配置知识库连接器Connector时你会遇到一些关键参数它们直接影响RAG效果分块大小Chunk Size与重叠Overlap这是RAG的基石。对于普通文档512-1024字符的分块大小配合10-20%的重叠是一个不错的起点。对于代码或结构化文本可能需要更小的分块和特定的分割符。嵌入模型Embedding ModelOnyx支持多种模型。对于英文内容text-embedding-3-small性价比极高。对于中文或多语言可以考虑BAAI/bge-m3或intfloat/multilingual-e5-large。关键点确保你用于生成向量索引的嵌入模型与Onyx服务中配置的检索模型是同一个否则语义空间不匹配检索效果会大打折扣。Top-K检索数量每次检索返回多少个片段。不是越多越好太多无关信息会干扰LLM。通常3-7个是合理范围。你可以在Onyx的高级设置中调整此参数并根据回答的“胡言乱语”程度来微调。3.2 深度研究Deep Research多步推理的实战“深度研究”是Onyx的一个亮点功能它登上了相关评测榜单的榜首。这本质上是一个多智能体Multi-Agent协作的工作流。它模拟了一个研究员的行为不是一次性给出答案而是规划、搜索、分析、综合、再报告。一个典型的深度研究流程可能如下规划Agent接收用户的研究主题如“分析2024年量子计算在药物发现领域的最新进展及其主要挑战”。它会制定一个研究大纲分解出需要搜索的关键词、需要查阅的网站类型学术论文、行业报告、新闻、需要对比分析的角度。搜索/收集Agent根据规划利用集成的网络搜索能力Serper, Brave Search等和网络爬虫Firecrawl并行地收集多来源信息。它可能同时打开多个标签页浏览相关文章。分析Agent对收集到的原始信息进行初步处理。例如总结每篇文章的核心观点提取关键数据和引用评估信息来源的可信度。综合与撰写Agent将所有分析后的信息进行整合按照逻辑结构如进展概述、技术盘点、挑战分析、未来展望撰写成一份结构化的研究报告。它会确保引用来源并可能生成图表摘要。审核Agent可选检查报告的事实准确性、逻辑连贯性和格式进行最终润色。这个功能对硬件的要求较高因为它涉及多次的LLM调用和可能并行的网络请求。在部署时你需要确保网络通畅能够稳定访问外部搜索引擎和网站。LLM配额充足一次深度研究可能消耗数万甚至数十万tokens。使用GPT-4等高级模型时成本需留意。设置超时与回退在Onyx的Agent配置中应为每个步骤设置合理的超时时间并配置备用的、成本更低的模型如从GPT-4回退到Claude 3 Haiku以防止单个步骤卡死或成本失控。3.3 自定义智能体与动作打造你的AI员工这是Onyx最具可玩性的部分。你可以创建拥有特定指令、知识和技能集的AI智能体。指令Instructions这是智能体的“人格”和核心行为准则。你可以像给一个新人写岗位说明书一样详细。例如创建一个“代码审查助手”智能体指令可以包括“你是一个资深Python后端工程师专注于代码安全性和性能。请以简洁、直接的方式指出代码中的问题优先指出安全漏洞和性能瓶颈并给出具体的修改建议和代码示例。对于风格问题除非严重影响可读性否则略过。”知识Knowledge可以为智能体绑定特定的知识库。这样这个智能体就“专精”于某个领域。比如为你的人力资源智能体绑定公司员工手册、福利政策文档为技术支持智能体绑定产品API文档和常见故障排查指南。动作Actions这是智能体与外部世界交互的手脚。Onyx通过MCPModel Context Protocol提供了强大的扩展能力。MCP是一种新兴的协议旨在标准化AI模型与工具、数据源之间的连接。这意味着开箱即用的连接Onyx可能内置了通过MCP连接数据库、日历、邮件、Jira、Slack等常见服务的动作。自定义扩展你可以为内部系统编写MCP服务器。例如连接公司的订单管理系统让智能体可以“查询用户最新订单状态”。这只需要你按照MCP协议实现几个标准的API端点如tools/list,tools/call。注意事项智能体指令编写的艺术编写有效的智能体指令是门学问我踩过不少坑明确边界一定要在指令中说明“什么不能做”。例如“你不能执行任何涉及删除数据库或修改系统文件的代码操作。”设定输出格式如果你需要结构化的输出如JSON、表格在指令中明确要求。例如“请将分析结果以Markdown表格形式呈现包含‘问题类型’、‘位置’、‘严重程度’、‘建议’四列。”使用示例在复杂任务中提供一两个输入输出的示例Few-shot Learning能极大地提升智能体理解意图的准确性。迭代优化不要指望一次写完美。根据智能体实际的表现不断调整和细化你的指令。Onyx应该会保存聊天历史这是你优化指令的最佳素材。3.4 代码执行与沙箱安全代码执行功能让Onyx智能体不仅能说还能“做”。它可以运行Python等代码来分析你上传的数据文件、生成图表、处理文本甚至修改项目文件。但这无疑是最高风险的功能。Onyx声称在“沙箱”中执行代码这是一个关键的安全设计。沙箱意味着代码在一个隔离的、资源受限的环境中被运行无法直接访问宿主机的文件系统、网络或敏感资源。在启用此功能前你必须清楚并确认以下几点沙箱的实现机制Onyx使用的是Docker容器沙箱还是其他技术如gVisor, Firecracker不同的技术安全隔离级别不同。你需要查阅其安全文档。资源限制沙箱的CPU、内存、运行时间限制是多少防止恶意或错误代码耗尽服务器资源。网络隔离沙箱内的代码能否访问外网如果可以是白名单制还是全开放这决定了智能体能否进行pip install或访问外部API。文件系统访问智能体可以读写哪些目录通常应该是一个临时的、每次会话独立的/tmp空间。绝对不能让它可以任意读写宿主机的持久化存储。给你的强烈建议在生产环境或存有敏感数据的环境中除非有绝对必要且经过严格的安全评估否则默认关闭代码执行功能。如果必须开启将其限制在特定的、受信任的智能体上并启用所有可能的安全审计和日志记录。4. 部署模式详解从轻量尝鲜到企业级部署Onyx提供了两种部署模式Lite和Standard。这个设计非常贴心覆盖了从个人用户试水到企业级应用的不同场景。4.1 Onyx Lite轻量级聊天与智能体平台你可以把Onyx Lite理解为一个功能增强版的ChatGPT UI。它包含了最核心的聊天界面、基础的智能体创建和管理功能以及通过MCP连接外部工具的能力。它去掉了最重量级的组件向量索引/知识库RAG系统以及相关的后台工作队列和模型推理服务。适合场景快速体验想用一行命令快速拉起服务看看Onyx的界面和基础对话、智能体功能如何。纯对话与工具调用你的使用场景不需要基于私有文档的问答只需要一个漂亮的界面来与各种LLM对话或者让智能体帮你操作一些外部系统如通过MCP查日历、发邮件。资源受限环境在内存小于1GB的VPS、树莓派或本地开发机上运行。部署命令基于其安装脚本# 这通常会启动一个最小化的Docker Compose集合可能只包含前端、后端API和数据库 curl -fsSL https://onyx.app/install_onyx.sh | bash -s -- --mode lite部署后你需要做的就是打开浏览器进入管理界面配置你的LLM API密钥如OpenAI, Anthropic然后就可以开始聊天了。4.2 Standard Onyx全功能企业级平台Standard模式才是Onyx的完全体。它包含了所有功能模块架构也复杂得多。除了Lite模式包含的服务外通常还会增加以下容器服务组件功能描述常用开源替代方案向量数据库(如Qdrant)存储文档嵌入向量支持高性能相似性搜索。Weaviate, Milvus, PGVector工作队列(如Celery Redis)处理异步任务例如从连接器同步知识库文档、重新生成索引等耗时操作。Dramatiq, RQ对象存储(如MinIO)存储用户上传的文件、生成的图片等二进制大对象。本地文件系统不推荐生产环境、AWS S3兼容服务模型推理服务(可选)如果使用自托管开源模型如通过Ollama需要运行相应的模型服务。Ollama, vLLM, Text Generation Inference缓存(Redis)缓存会话、频繁访问的LLM响应等提升响应速度。KeyDB, Dragonfly部署考量与实操步骤 部署Standard模式更像是一次小型的系统部署。以下是基于Docker Compose的典型思路环境准备一台至少拥有4核CPU、8GB内存、50GB磁盘的服务器这是最低要求实际根据用户量和数据量需要大幅增加。安装好Docker和Docker Compose。一个域名可选但生产环境推荐并配置好SSL证书可以通过Let‘s Encrypt自动获取。获取部署配置git clone https://github.com/onyx-dot-app/onyx.git cd onyx/deploy/docker-compose # 假设配置在这个目录你需要仔细研究目录下的docker-compose.yml和.env.example文件。关键配置修改复制环境变量文件cp .env.example .env编辑.env文件这是核心步骤。你需要配置LLM_PROVIDER和对应的API密钥如OPENAI_API_KEY。数据库密码POSTGRES_PASSWORD,REDIS_PASSWORD。外部服务的访问密钥如网络搜索的SERPER_API_KEY。部署的域名和协议NEXT_PUBLIC_APP_URLhttps://your-onyx.domain.com。检查数据持久化确保docker-compose.yml中数据库、向量库、对象存储等服务的卷volumes映射到了宿主机的持久化目录否则容器重启后数据会丢失。启动服务docker-compose up -d首次启动会拉取大量镜像并初始化数据库需要耐心等待几分钟。通过docker-compose logs -f可以查看启动日志。初始化与访问 服务启动后访问你配置的域名或服务器IP应该会进入一个初始化页面让你创建第一个管理员账户。避坑指南Standard模式部署常见问题端口冲突检查默认的80、443、5432PostgreSQL、6379Redis等端口是否被占用。在docker-compose.yml中修改映射端口。内存不足向量索引和LLM推理非常吃内存。如果服务启动失败或经常被杀死查看日志中是否有OOM内存溢出错误。考虑升级服务器配置或调整Docker容器的内存限制。网络问题如果使用了自托管模型Ollama确保Onyx的后端服务能通过网络访问到Ollama的API端点通常是http://host.docker.internal:11434在Docker Compose中可以使用服务名。数据备份务必定期备份PostgreSQL数据库和Qdrant/Weaviate的数据卷。这是你的核心资产。5. 企业级功能与生产环境考量对于团队和企业用户Onyx提供了一系列开箱即用的企业功能这些是社区版CE和企业版EE的主要区别所在。即使你使用社区版了解这些概念也有助于你规划自己的使用方式。5.1 用户体系与单点登录Onyx支持基于组织的用户管理。这意味着你可以创建团队邀请成员并管理他们的权限。SSO集成这是企业级应用的标配。Onyx支持OIDC、SAML和Google OAuth。这意味着你的员工可以使用公司的统一账号如通过Azure AD, Okta直接登录Onyx无需额外创建密码也方便离职时统一收回权限。SCIM这是一个更高级的功能用于从身份提供商如Okta自动同步用户和组信息到Onyx。当公司在IDP中新增或删除一个员工时Onyx中的账户会自动创建或禁用实现了用户生命周期的自动化管理。配置SSO的实操要点在Onyx管理后台找到“认证”或“SSO”设置页面。选择你的SSO类型如OIDC。你需要从公司的身份提供商IdP获取以下信息Client ID,Client Secret,Issuer URL(或Authorization URL,Token URL)。将这些信息填入Onyx并通常需要设置一个“回调URL”Callback URL格式类似https://your-onyx.domain.com/api/auth/callback/oidc这个URL需要提前在IdP的后台注册为有效的重定向URI。测试连接。成功后登录页面会出现“通过公司账号登录”的按钮。5.2 基于角色的访问控制RBAC是确保企业数据安全的核心。Onyx允许你定义角色如管理员、开发者、只读用户并为角色分配细粒度的权限。权限示例能否创建/编辑/删除智能体能否访问特定的知识库连接器能否执行代码动作能否查看其他用户的聊天历史能否使用费用高昂的模型如GPT-4实践建议遵循最小权限原则。大多数普通用户可能只需要“使用现有智能体聊天”和“访问公共知识库”的权限。只有特定人员才需要创建智能体或连接敏感数据源的权限。5.3 审计、分析与成本控制查询历史所有对话记录都会被保存除非用户主动删除。这对于合规审计、问题排查和训练数据收集至关重要。管理员可以查看全局历史团队负责人可以查看本团队的历史。使用分析仪表板会展示使用量趋势图可以按团队、用户、模型进行筛选。这能帮你回答关键问题哪个团队用的最多GPT-4和Claude的用量比例如何峰值使用时间是什么时候这些数据是优化资源配置和控制成本的基础。自定义代码钩子这是一个非常强大的企业级功能。它允许你在关键流程中注入自定义的Python代码。例如PII过滤在用户查询或AI回答被存入数据库前运行一个自定义函数来检测并脱敏手机号、邮箱等个人信息。敏感词拦截在查询发送给LLM之前检查是否包含公司禁止讨论的敏感话题如果包含则直接返回预设回复不消耗API费用。成本计算与审批在调用昂贵模型前计算本次请求的预估token消耗和成本如果超过阈值可以触发一个飞书或钉钉审批流程。6. 常见问题与故障排查实录在实际部署和使用Onyx的过程中你一定会遇到各种问题。以下是我和社区中遇到的一些典型问题及解决思路。6.1 部署与启动问题问题现象可能原因排查步骤与解决方案docker-compose up后服务不断重启或健康检查失败。1. 依赖服务未就绪。2. 环境变量配置错误。3. 资源不足内存/磁盘。1. 使用docker-compose logs [服务名]查看具体错误日志。2. 检查.env文件中的密码、API密钥、URL格式是否正确。3. 使用docker stats查看容器资源占用确认是否有容器因OOM被杀死。能访问首页但登录或执行操作时出现“内部服务器错误”。后端API服务异常或数据库连接/迁移失败。1. 查看后端容器的日志 (docker-compose logs backend)。2. 检查数据库容器是否正常运行并查看其日志。3. 尝试进入后端容器手动运行数据库迁移命令如果项目提供了如alembic upgrade head。上传文件到知识库时一直显示“处理中”。工作队列如Celery服务未运行或任务执行失败。1. 检查工作队列容器可能是worker或celery是否运行。2. 查看工作队列容器的日志看是否有处理该文件的错误信息。3. 确认文件格式和大小是否在支持范围内。6.2 RAG功能相关问题现象可能原因排查步骤与解决方案基于知识库的问答效果差答非所问或“幻觉”严重。1. 文档索引质量差。2. 检索参数不合适。3. LLM指令或Prompt不佳。1.检查分块在知识库连接器设置中尝试调整分块大小和重叠度。对于结构复杂的文档如带标题的PDF可以尝试启用“按标题分块”选项。2.检查检索在聊天界面有时可以开启“显示检索到的来源”的调试选项看看AI到底检索到了哪些文本片段。如果片段不相关说明向量检索没起作用检查嵌入模型是否匹配。3.优化Prompt在智能体或聊天模型的系统指令中明确要求“严格根据提供的上下文信息回答如果上下文没有相关信息请直接说不知道”。同步知识库如连接Notion、Confluence后新内容搜索不到。1. 同步任务还在队列中。2. 同步过程出错。3. 增量同步未生效。1. 查看工作队列日志确认同步任务是否成功完成。2. 检查连接器的配置如API令牌、页面权限是否正确。3. 尝试手动触发一次“完全重新同步”Full Re-sync而不是增量同步。6.3 模型与性能问题问题现象可能原因排查步骤与解决方案对话响应速度非常慢。1. LLM API响应慢如GPT-4。2. 网络延迟高。3. 自托管模型资源不足。4. RAG检索耗时过长。1. 切换到响应更快的模型如Claude 3 Haiku, GPT-3.5-Turbo测试。2. 如果使用自托管模型Ollama进入服务器查看GPU/CPU和内存使用率。3. 对于RAG场景尝试减少top_k检索数量或使用更快的嵌入模型如text-embedding-3-small。4. 启用Redis缓存LLM响应。提示“Rate limit exceeded”或“Insufficient quota”。使用的云LLM API达到速率限制或额度耗尽。1. 在Onyx的模型设置中为该API密钥配置更低的“每分钟请求数”限制。2. 添加备用的API密钥或切换到备用模型提供商。3. 对于OpenAI考虑申请提升速率限制。6.4 一个关于“网络搜索”的独家技巧Onyx集成了多种网络搜索提供商。实测下来Serper的性价比和稳定性对于一般用途来说非常不错。但如果你需要搜索中文内容或者对结果的新鲜度、权威性有更高要求可以考虑以下配置混合使用在Onyx的配置中可以设置多个搜索提供商。你可以将Serper作为主用将Google Programmable Search Engine作为备用。当Serper没有返回满意结果时自动尝试Google。使用自有爬虫对于企业内部wiki或特定网站网络搜索API可能无法抓取受robots.txt限制。这时Onyx内置的爬虫或集成的Firecrawl就派上用场了。你可以配置一个“网站连接器”直接让Onyx去爬取和索引这些网站的内容构建成内部知识库这样搜索效果和可控性都比公开网络搜索好得多。优化搜索Query在创建用于“深度研究”或“联网搜索”的智能体时可以在其指令中加入如何构建搜索关键词的指导。例如“当你需要搜索信息时请将复杂问题拆解成2-3个简短、明确的关键词组合进行搜索而不是直接搜索整个长句。”Onyx作为一个快速发展的开源项目其真正的力量不仅在于它当前提供的功能更在于它为你提供了一个高度可定制和扩展的基石。你可以基于它快速构建内部AI助手、客户支持机器人、智能文档分析系统等等。