此存储库提供了由 Dataworkz RAG Builder 支持的示例 QnA 应用程序,该应用程序演示了 RAG 在多个数据集上的强大功能。在本节中,我们将向您展示如何在本地计算机上运行示例 QnA 应用程序。跳转此处了解有关 Dataworkz RAG Builder 的更多信息
使用git clone https://github.com/dataworkz-dev/dataworkz-qna-app.git
克隆存储库 dataworkz-qna-app 。
如果需要,请为您的平台安装 node.js(Node 版本 > 16.0.0)。
该项目中包含示例的默认 API 密钥。您可以忽略步骤 # 4 和 # 5,除非您打算创建自己的帐户以进行进一步开发。
您将需要 Dataworkz API 密钥才能访问 Dataworkz RAG QnA 服务。以下是生成 API 密钥的步骤。注意: API 密钥名称在所有用户中必须是唯一的,因此请相应地选择一个名称。
将生成的 API 密钥放入token.txt
文件中。您可以在src/assets/token.txt
找到该文件。
运行npm install
以安装依赖项。
运行npm run start
以运行托管示例 QnA 应用程序的本地 Web 服务器。要访问该应用程序,请打开浏览器并导航至http://localhost:4200
请在问题中报告示例 QnA 应用程序的任何问题
Dataworkz 简化了企业的 RAG 应用程序开发。 Dataworkz 提供 RAG 即服务,以便您可以使用专有数据、利用公共 LLM API 或私人托管的开源基础模型来构建 GenAI 应用程序。
Dataworkz 的 RAG 构建器简化了 GenAI 应用程序的构建,消除了与交钥匙解决方案拼接在一起相关的复杂性。可组合的 AI 堆栈提供了选择向量数据库、嵌入模型、分块策略和 LLM 模型的能力。您可以灵活地使用公共 LLM API(包括 AWS Bedrock 和 OpenAI)或在 VPC 中托管开源模型。
对于高级 RAG 应用程序,Dataworkz 提供了将词汇和语义搜索与元数据过滤相结合的能力,从而使 RAG 应用程序能够处理大量非结构化、半结构化或结构化数据。
Dataworkz 连接到不同的业务数据源 - SaaS 服务、关系数据库、NoSQL 数据库、存储在云对象存储中的文件,并提供无代码转换,使任何格式的专有数据为 LLM 应用程序做好准备。组合来自多个源的数据时,您还可以配置用于构建用于生成 LLM 响应的上下文的输入源的优先顺序。连接器的完整列表可在此处找到。
RAG 构建器为任何开发人员提供 API,将 GenAI 应用程序嵌入到他们现有的工作流程中,并具有完全的灵活性来定制外观和感觉。此存储库中的示例应用程序利用此 API 来实现其功能。我们有一节介绍此应用程序中的 API 集成以及如何在您自己的应用程序中使用它。
幻觉的出现给企业内广泛采用 Gen AI 带来了显着的障碍。 Dataworkz 使 GenAI 能够参考其起源,从而增强可追溯性。阅读 Dataworkz 博客,了解 Dataworkz 如何评估 LLM 的反应。
在本节中,我们提供了一些关于如何构建示例应用程序以及使用哪些 API 来支持各个部分的开发人员说明。您可以尝试将 API 和问答系统集成到您自己的应用程序中。您可以生成 API 密钥(如果已经生成,则可以使用相同的密钥)并连接到此服务。
Dataworkz 正在与战略合作伙伴合作,展示我们的技术如何集成在一起。此示例 QnA 应用程序连接到 https://ragapps.dataworkz.com 作为后端 RAG Partner Playground 服务。该合作伙伴游乐场服务演示了 Dataworkz 和 MongoDB Atlas Vector Search 如何协同工作,为 Uber 等上市公司的 10,000 份公开文件创建 QnA 系统。
示例 QnA 系统演示了如何使用 Dataworkz RAG Builder API 列出 QnA 系统并针对此数据集进行丰富的查询。
请参阅 API 密钥生成部分,了解如何获取 API 密钥以及如何使用它调用 Dataworkz QnA API。在示例 QnA 应用程序中,API 令牌使用SWSS <api-key>
形式在Authentication
标头中传递。
Dataworkz RAG Builder 支持配置多个独立的 QnA 系统。 QnA 系统用作问答系统的域,可用于分离多个项目、源组、大型语言模型、版本或项目中不同的不相关子域等。一个应用程序可能有一个或多个QnA 系统。当提出问题时,系统会针对特定的 QnA 系统提出问题。
QnA 示例应用程序首先列出所有 QnA 系统(作为卡片),供用户选择她感兴趣的系统。应用程序开发人员可以选择列出系统以供用户选择,或者如果从上下文中可以明确选择,则可以设置它在代码中。
以下是列出所有可用 QnA 系统的 API - https://ragapps.dataworkz.com/api/qna/v1/systems。后续 API 中将需要选择的 QnA systemId。
使用此 API 检索有关每个 QnA 系统的信息 - https://ragapps.dataworkz.com/api/qna/v1/systems/{systemId}。这在示例 QnA 应用程序中用于填充各个 QnA 系统卡。
问题由 Dataworkz RAG Builder 中配置的法学硕士回答。为系统配置的 LLM 可以来自 OpenAI、私有托管模型(如 Llama-2)和 Google 的 Vertex AI(示例应用程序可以支持其中的一个或多个)。此 API 提供了 QnA 系统配置的 LLMProvider 列表 - https://ragapps.dataworkz.com/api/qna/v1/systems/{systemId}/llm-providers
示例 QnA 应用程序使用它来填充 LLMProviders 下拉列表,以允许用户选择他们想要用来回答问题的 LLM。您应该存储您想要用来提问的 LLMProvider 的 ID。可以向此 API 调用返回的llmProviderId
标识的特定 LLM 提供商提出问题。
向 Dataworkz QnA 系统提问的 API 是 https://ragapps.dataworkz.com/api/qna/v1/systems/{systemId}/answer
此 API 需要您所针对的 QnA 系统的systemId
以及要使用的 LLM 的llmProviderId
。示例 QnA 应用程序利用此 API 来支持“知识搜索”页面。此 API 的响应包括 LLM 的响应以及支持答案的权威来源的链接。
示例 QnA 应用程序提供了 QnA 系统中先前提出的问题的列表。这是用户查看以前回答的问题的一种便捷方法。使用以下 API - https://ragapps.dataworkz.com/api/qna/v1/systems/{systemId)/questionshistory
Dataworkz 提供了以前回答过的问题的列表以及附加分数和对答案质量的分析。在这里阅读更多相关内容。示例 QnA 应用程序使用此 API 提供每个已回答问题的详细信息 - https://ragapps.dataworkz.com/api/qna/v1/systems/{systemId}/questions/{questionId}