API 返回一条辅助消息,其中可能包含也可能不包含工具调用。我们会检查 response.output
以查看模型是否调用了任何工具。如果调用了,我们会执行这些调用并将结果包含在对话中。例如,如果模型调用了 PineconeSearchDocuments
,我们的代码会在内部运行 query_pinecone_index(index, MODEL, query)
,获取文档答案,并返回包含此信息的工具响应消息。最后,我们将刷新后的对话发送回模型以获取最终响应。
上述流程展示了多工具编排的工作原理;模型会动态选择与查询相关的工具。正如示例所示,对于像“什么是哮喘?”这样的一般性问题,它可以使用网络搜索工具,但对于与“哮喘”更具体的联系的问题,可能需要使用 Pinecone 上下文,并在此基础上进行构建。
我们在代码循环中进行多次工具调用,所有调用完成后,我们调用 API,让模型根据收到的提示构建“最终”答案。总的来说,我们希望收到一个答案,该答案将来自网络知识的外部事实与来自内部知识文档的上下文结合起来,并根据我们的指示进行确认。
您可以参考完整代码。
使用 RAG 的多工具编排功能,可以创建一个功能强大且选项丰富的问答系统。将模型生成与检索工具结合使用,使我们能够充分利用模型的自然语言理解能力和外部数据集的事实准确性。在我们的用例中,我们对一个医学问答的 Pinecone 向量索引进行了地面实况测试,并能够将网络搜索或该索引作为选项调用。通过这种方式,我们的模型能够更加基于实际数据,并能够回答原本无法回答的问题。
在实践中,这种 RAG 流程能够提供更高的答案准确性和相关性,因为该模型可以引用最新的来源,涵盖细分领域知识,并最大限度地减少幻觉。未来的迭代可能会包含更高级的检索模式或生态系统中的其他工具,例如使用知识图谱或 API,但核心部分无需进行任何更改。
问题 1:RAG 与传统 LLM 相比最大的优势是什么?
答:RAG 允许 LLM 访问外部数据源(例如矢量数据库或 Web),从而生成更准确、更及时、更针对特定领域的响应,而这是传统的“闭卷”模型无法实现的。
问题 2:RAG 流程中最常用的工具有哪些?
答:通常,常用工具包括:– 用于语义检索的矢量数据库(例如 Pinecone、FAISS 或 Weaviate)。– 使用 API 进行实时 Web 信息搜索。– 提供知识图谱、SQL 数据库或文档存储查询功能的自定义 API 或函数。
问题 3:RAG 可以用于聊天机器人等实时应用程序吗?
答:可以。RAG 非常适合需要动态、基于事实的答案的应用程序,例如客服机器人、医疗或财务助理。因为这些答案基于可检索的文档或事实。
全部评论
留言在赶来的路上...
发表评论