📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

What is OpenRAG? Unlocking the Future of RAG in Generative AI

IBM Technology7:58

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 系统。