Transcription
所以,现在生成式人工智能模型已经有了一些时间来成长和成熟——哇!——并且上下文窗口变得非常大,有人说我们不再需要 RAG 了。但即使上下文窗口是无限的,在处理代理式和生成式人工智能系统时,RAG 在成本效益和响应准确性方面仍然极其重要。首先,RAG 代表检索增强生成。它本质上是一种在运行时将信息注入模型的方法,而模型本身并没有这些信息。这对于需要使用领域特定知识,或者说,受保护信息或互联网上通常无法获取的知识的情况尤其有用,这意味着各种模型无法说,将这些数据提取并抓取到模型本身中。现在让我们考虑一下无限上下文窗口的可能影响。假设你可以在模型中注入任意数量的数据,然后模型可以处理这些数据为你执行某些操作。嗯,首先,如果你使用的是基于互联网的模型提供商,你很可能是按 token 付费的。而且,如果你在每个任务中注入大量数据,你也要为这些数据付费,更不用说处理这些信息所需额外的时间了。最后,是的,大型语言模型在根据传递给它们的数据提供准确响应方面越来越好,但与模型在获得它们所需的确切信息时所能做到的相比,仍然相形见绌。而这正是 OpenRAG 发挥作用的地方。那么,OpenRAG 是什么?OpenRAG 是一个开源平台,包含紧密集成的工具,可以轻松搭建一个有效的代理式 RAG 系统。现在,一个完整的 RAG 系统需要三样东西:你需要高质量的数据摄取,你需要优秀的混合搜索以实现快速检索,还需要一个编排层将所有这些连接起来。现在 OpenRAG 由三个平台组成:Docling、OpenSearch 和 Langflow。每个平台都提供了拼图的重要部分,协同工作以提供一个完整、预配置的代理式 RAG 解决方案。现在 Docling 负责智能文档摄取。例如,如果你摄取了一个 PDF 文件,嗯,你可能有一些表格,这里有一个图片,也许还有一些文本之类的东西。你需要一个能够识别这些组件并以针对 LLM 和代理进行优化的方式提取它们的东西。否则,你可能会得到大量垃圾数据,从而降低代理在使用 RAG 数据时的准确性和效率。接下来是 OpenSearch。OpenSearch 堪称业界领先的开源搜索平台。一旦文档通过 Docling 处理完毕,它们就会被发送到 OpenSearch,并以向量表示的形式存储,并针对快速搜索检索进行优化。最后是 Langflow,它提供了 OpenRAG 中所有内容构建所依赖的代理式和 RAG 基础。所以,你可以将 Langflow 视为连接几十个模型和向量存储提供商的布线和执行 AI 工作流引擎。OpenRAG 将所有这些已连接、预配置并准备好摄取的搜索内数据结合在一起。现在,安装完成后,OpenRAG 允许你立即开始摄取知识,并提供一个简单的界面来配置工作流并与你的数据进行聊天。现在 RAG 部分已经设置好并准备就绪。你可以将大量文档类型摄取到你的 OpenRAG 知识库中,然后让代理根据你的对话即时摄取 URL。所以这些数据会自动通过 Docling 和 OpenSearch 进行处理。现在,一旦你的系统中有了知识,你就可以开始在这里的聊天中提问了。你可以直接针对你的知识库提问,然后构建利用它的应用程序。你可以搜索整个知识库,也可以使用过滤器来搜索特定文档组。灵活性完全由你掌控。好的,太棒了。你已经建立了一个 RAG 系统,但现在你想进行更改,也许是更改你的模型提供商、嵌入模型,或者更深入地了解 OpenRAG 如何管理你的数据。这正是 Langflow 发挥作用的地方。所以 Langflow 允许你直接在代理流本身中进行这些类型的自定义更改。你可以直接通过其工作室 UI 来完成。让我们看一个例子。假设我有一个外部数据源,我想在 OpenRAG 中利用它,同时我也想更改我的模型提供商。现在,让我们来绘制出这个基本流程。从 OpenRAG 输入,我将输入我的输入,输出我的输出,对吧?好的。我将有一个代理,它将负责处理我的搜索。作为其中的一部分,当我们连接这些组件时,嗯,我将有一个 OpenSearch 组件作为这个代理的工具。现在,假设我想引入一组新数据。我想引入一个外部数据集,它不仅仅局限于我直接导入 OpenRAG 的知识库。嗯,这正是 Langflow 的灵活性和控制力真正闪耀的地方,因为现在我可以直接引入我的外部数据源,无论它是什么。我也可以将其作为工具引入。现在,同一个 OpenRAG 代理就可以访问这些数据了。但现在这里有一个非常重要的事情是,你需要确保这个工具的名称和描述是唯一的,并且,嗯,具有描述性,对吧?因为这是代理将用来区分它们的信息。这样它才知道去哪个数据源。所以现在我可以采用这块外部数据,将其引入到我现有的 OpenSearch 数据之上,现在,当我执行搜索并询问其他问题时,我可以获得基于我拉入 OpenRAG 平台的新信息。现在,也许我想改变数据在到达 OpenSearch 之前是如何被处理的。同样的处理方式。我只需从 OpenRAG 的设置中打开流程,然后修改 Langflow 工作流以进行调整。所有这些都会立即反映在 OpenRAG 中。最后,如果你想构建一个利用你的 OpenRAG 知识的应用程序,你可以使用 OpenRAG UI 作为参考进行修改,或者直接使用 Langflow API 构建完全自定义的东西。OpenRAG 的设计宗旨是让你在几分钟内快速搭建一个 RAG 平台,但同时也允许你操纵过程的每一个部分,如果你想深入并进行自定义更改。它是完全开源的,并且比从头开始更容易搭建一个有效的 RAG 系统。OpenRAG 的设计宗旨是让你在几分钟内快速搭建一个 RAG 平台,但同时也允许你操纵过程的每一个部分,如果你想深入并进行自定义更改。它是完全开源的,并且比从头开始更容易搭建一个有效的 RAG 系统。