基于多文档的可靠问答:用 AI21 轻松实现

只需几个步骤,即可使用 AI21 的 RAG 引擎和任务特定模型构建基于您自有文档的上下文问答应用

作者:Robbin JangChen Wang
发布于 LLMs
Grounded multi-doc Q&A made simple with AI21

在 AI21,我们正与各行各业的开发者合作,利用我们的任务特定模型和 RAG 引擎为其问答应用提供支持。大多数开发者希望构建能够基于特定知识体系(例如其公司文档)提供答案的应用。这种方法被称为检索增强生成(RAG)。RAG 通过保持答案与上下文相关来减少幻觉。

构建基于 RAG 的问答应用可能很复杂。开发者需要完成多个步骤来整合 RAG 流水线,包括

  1. 连接到您的文档知识库
  2. 将这些文档分段并嵌入到向量存储中
  3. 设置语义搜索功能,以便向向量存储发送查询
  4. 从向量存储中检索相关上下文,并将其传递给 LLM 以生成增强的响应

AI21 的 RAG 引擎和 Contextual Answers 任务特定模型 (TSM) 负责处理这些步骤。RAG 引擎使开发者无需手动设置即可快速部署高性能、可扩展的 RAG 流水线。得益于 Contextual Answers TSM,生成的回答可靠且准确,并且成本远低于领先的基础模型。

🏂
准备好开始了?应用 在这里 ,GitHub 仓库 在这里
A diagram of an example RAG solution package.

对于希望构建生产级 RAG 应用的开发者,本文将指导您创建由 AI21 的 RAG 引擎和 Contextual Answers TSM 提供支持的自有问答应用。该应用的沙盒版本可在此处获取

0:00
/0:17

在本文中,我们将

  1. 介绍任务特定模型 (TSM) 的概念,并评估 AI21 的 Contextual Answers TSM 在基于 RAG 的问答方面与其他模型的对比
  2. 解释我们的 RAG 引擎如何为部署 RAG 流水线提供一个简单而强大的解决方案
  3. 提供循序渐进的说明,帮助您构建和运行由 AI21 提供支持的自有问答应用

什么是 TSM?

AI21 的任务特定模型 (TSM) 是经过专门训练的小型语言模型,旨在在特定用例中表现出色。TSM 专注于常见的用例,例如可靠问答、摘要和文本编辑。

Contextual Answers TSM 为 RAG 问答应用提供了多种优势

  1. 在专业问答中具有更高准确性

Contextual Answers TSM 的幻觉率非常低,尤其是与其他基础模型相比。它非常擅长识别上下文与问题之间的不相关性,并返回“答案不在文档中”,而不是凭空捏造答案。需要的提示工程较少,从而带来更好的用户体验。

A chart illustrating how the Contextual Answers TSM resulted in a 68% rate of “good” answers.
Contextual Answers TSM 的“良好”答案率达到了 68%。

Contextual Answers TSM 的“良好”答案率达到了 68%。

事实上,Contextual Answers TSM 在测试中优于 Claude 2.1,其“良好”答案率高出 12%。“良好”答案定义为事实正确、流畅且全面。

  1. 提高安全性

由于 Contextual Answers TSM 经过训练用于生成可靠的响应,因此它更能抵御提示注入和其他恶意攻击。

  1. 与其他基础模型相比,延迟和成本更低

大规模使用 GPT-4 等基础模型可能非常昂贵。Contextual Answers TSM 的使用和扩展成本显著降低。

A chart showing the cost difference between GPT-4 and Contextual Answers TSM.

什么是 AI21 的 RAG 引擎?

构建 RAG 流水线可能看起来很简单,但同时保持性能并进行扩展却很困难。当开发者使用各种不同的模型和流程时,协调起来具有挑战性。多个方面会影响 RAG 性能,包括

  • 分块和嵌入过程的效率
  • 支持多种文件类型
  • 随着数据量增加而扩展

AI21 的 RAG 引擎提供了一个可通过 API 访问的可扩展一体化解决方案。Contextual Answers TSM 无缝接入 RAG 引擎,构建了端到端流水线。

这篇博客文章中了解更多关于 RAG 引擎的信息。

架构图

An architecture diagram for the application in this tutorial.

在 Streamlit Community Cloud 上

您可以在 Streamlit Community Cloud 上查看该应用的托管版本 此处。请继续阅读,了解如何构建您自己的应用。

构建您自己的由任务特定小型语言模型提供支持的问答应用

此应用允许您上传 PDF 或 .txt 文件,并将上传的文档作为知识库进行提问。

要在本地构建并运行我们应用的您自己的版本,请克隆 GitHub 仓库并使用您的 AI21 凭据。

  1. 请求您的 AI21 Studio 账户:https://studio.ai21.com/login

  2. 找到您的 AI21 API 密钥:https://studio.ai21.com/account/api-key

  3. .streamlit 文件夹中创建 secrets.toml 文件并添加您的凭据,将 <YOUR_API_KEY> 替换为您的 AI21 API 密钥

    [api-keys]
    ai21-api-key = "<YOUR_API_KEY>"
    
  4. 安装 requirements.txt 中列出的所有依赖项,包括 AI21 Labs Python SDK

  5. 通过在您的控制台中输入 streamlit run Welcome.py 来运行 Welcome.py

  6. 运行上述命令后,AI21 Studio Streamlit 应用的欢迎页面应在您的浏览器中打开

  7. 导航到多文档问答页面

应用拆解

  1. 导入 AI21 库并加载凭据

    # import AI21 SDK library
    from ai21 import AI21Client
    
    # initiate AI21 client with your API key
    client = AI21Client(api_key=st.secrets['api-keys']['ai21-api-key'])
    
  2. 将文件上传到带有文档标签的 AI21 文档库(可选)

    # Streamlit file uploader widget
    uploaded_files = st.file_uploader("choose .pdf/.txt file",
       accept_multiple_files=True,
       type=["pdf", "text", "txt"],
       key="a")
    
    # upload the files to AI21 RAG Engine library
    for uploaded_file in uploaded_files:
       client.library.files.create(file_path=uploaded_file, labels=label)
    
  3. 使用 AI21 Contextual Answers 模型对上传的文档进行提问

    # Streamlit text input widget 
    question = st.text_input(label="Question:", value="Your Question")
    
    # send your question to AI21 Contextual Answers LLM and getting back the response
    response = client.library.answer.create(question=question, label=label)
    

总结

我们希望本指南能让您轻松构建一个可靠的、基于上下文的问答应用。通过此应用,用户可以与复杂的知识体系进行交互,以改进客户支持、合同分析、产品优化等工作流程。

对于 Streamlit 用户,AI21 很高兴提供扩展的入门捆绑包,其中包括用于 AI21 Studio 实验场的免费积分以及一次指导性的 1 对 1 会话,用于讨论您的用例并帮助您入门。

如果您有任何问题,请在下方评论区留言,联系 studio@ai21.com,或创建 GitHub Issue

分享此文章

评论

在我们的论坛中继续讨论 →

也在 LLMs 中...

查看更多 →