当前位置: 首页 > news >正文

RAG经验论文《FACTS About Building Retrieval Augmented Generation-based Chatbots》笔记

《FACTS About Building Retrieval Augmented Generation-based Chatbots》是2024年7月英伟达的团队发表的基于RAG的聊天机器人构建的文章。

这篇论文在待读列表很长时间了,一直没有读,看题目以为FACTS是总结的一些事实经验,阅读过才发现FACTS是论文定义的RAG-based chatbots的五个维度:freshness (F), architectures(A), cost economics of LLMs ©, testing (T), security (S)的缩写。

论文说在英伟达内部用RAG和LLM构建三个chatbot,如论文表1所示。基于这些chatbot构建经验总结了一套方法论。

WeChatWorkScreenshot_1bf27dc6-5e87-4a96-addf-8593ed4dfa88

这两年RAG很火,但是构建好一个基于RAG的聊天机器人并不是件易事,要考虑RAG流程的工程化、微调LLM、prompt engineering、保证召回知识的相关性和准确性、文件访问控制、生成精确的回复并包括参考资料以及保护个人敏感信息等等。因此论文总结了如论文图1和图4所示的15个RAG流程中的控制点(吐槽一下论文中所有的图片都不够清晰)。

WeChatWorkScreenshot_f1c8dca0-c689-4e46-ba88-df89ab7a4676

WeChatWorkScreenshot_df3e2325-9290-4239-8857-59f0fd689f43

为了避免在公司内部重复地开发一些构建chatbot需要的功能如安全、护栏等,开发了如论文图7所示可插拔架构的模块化平台NVbot。平台支持domain-specific, enterprise-wide, copilot三种不同的chatbot变体。

WeChatWorkScreenshot_6eb677ed-10da-4b80-b69c-10c611d2203b

一些论文提到的细节:

  • 为了提高检索相关度:进行了Metadata增强、查询改写、使用grid-search方法来寻找合适chunk大小、测试不同的chunk rerank策略等;使用混合搜索(Lexical search+向量搜索)。
  • 对于一些复杂问题,比如“compare the revenue of NVIDIA from Q1 through Q4 of FY2024 and provide an analytical commentary on the key contributing factors that led to the changes in revenues during this time”,要使用agent或multi-agent架构才能回答出来,论文使用了如图2所示的将一个问题拆成多个问题的agent方式。

fa

  • 微调Llama3-70B后在保持可接受的延迟下可得到挺不错的答案质量

WeChatWorkScreenshot_8c4682ee-175d-47f8-9dfe-5e38b1ce9439

  • Unstructured.io等专门从PDF中提取结构化内容的工具有助于解析和分块非结构文化。如果文档的结构固定比如SEC相关的文档,使用section-level的分割,用section title和subheading来分割并将它们加入到chunk的上下文有助于提升检索相关性。
  • 使用RAGOps/LLMOps监控工具来监控RAG流程,使用如Ragas等评估框架。
  • 用内部LLM Gateway来统一管理使用的商用LLM API,可以简化LLM使用、订阅和数据跟踪的安全审计。
  • 包含安全测试、prompt修改测试、反馈回路等用来测试chatbot的手段。
  • chatbots的数据访问有Access Control Lists (ACLs),用Nemo Guardrail对输入和输出进行处理。

总结:这篇论文介绍了基于RAG的chatbot的五个维度,论文按照这五个维度列举了一些经验,可以对照看看有哪些自己在开发过程中没有考虑过的点,不过总体来讲论文在详细实现上讨论的不够多。

http://www.lryc.cn/news/486605.html

相关文章:

  • 【配置后的基本使用】CMake基础知识
  • ollama+springboot ai+vue+elementUI整合
  • 【项目开发】理解SSL延迟:为何HTTPS比HTTP慢?
  • 2.STM32之通信接口《精讲》之USART通信
  • Bootstrap和jQuery开发案例
  • Qt 之 qwt和QCustomplot对比
  • 【STM32】MPU6050简介
  • Oracle 单机及 RAC 环境 归档模式及路径修改
  • 抽象java入门1.5.3.1——类的进阶
  • python——模块 迭代器 正则
  • QT仿QQ聊天项目,第三节,实现聊天界面
  • Linux-何为CentOS
  • C++中的 std::optional
  • 猫狗识别之BUG汇总
  • 【论文复现】自动化细胞核分割与特征分析
  • 排序算法 -快速排序
  • K8S 查看pod节点的磁盘和内存使用情况
  • 华为HCIP——MSTP/RSTP与STP的兼容性
  • AI 大模型如何重塑软件开发流程:现状与未来展望
  • 3步实现贪吃蛇
  • 华东师范大学数学分析第五版PDF习题答案上册及下册
  • MySQL之联合查询
  • [C/C++] 定位新表达式 placement new
  • 【MySQL】MySQL的笛卡尔积现象是什么?简单说说
  • 《InsCode AI IDE:编程新时代的引领者》
  • 微搭低代码私有化部署搭建教程
  • 【在Linux世界中追寻伟大的One Piece】多路转接epoll(续)
  • 【不写for循环】玩玩行列
  • 【Nginx】反向代理Https时相关参数:
  • 第 17 章 - Go语言 上下文( Context )