概述
这是书生·浦语2.0大模型之茴香豆搭建个人智能助手的实践,内容包括了:
- RAG(what、how)
- 茴香豆(介绍、特点、架构、构建步骤)
- 茴香豆实践演示
为什么要RAG
在知识更新比较快,语料难以搜集等情况下,使用RAG框架相对微调而言,能够快速的将新的知识融入到AI智能应用体系中。
通常在新增知识的情况下,大模型也无法回答,就会出现所谓的AI幻觉的问题。
通过RAG技术,能够建外部的知识作为prompt,输入到大模型中,再有大模型生成结果,反馈到用户,提供更为准确的回答、降低使用成本、实现可追溯的推理过程。
RAG技术
RAG(Retrieval Augmented Generation)是一种结合了检索(Retrieval)和生成(Generation)的技术,旨在通过利用外部知识库来增强大型语言模型(LLMs)的性能。它通过检索与用户输入相关的信息片段,并结合这些信息来生成更准确、更丰富的回答。
RAG的工作原理可以分成两段:
- 将外部知识存储的过程
- 使用这些外部知识的过程
在外部知识入库的时候,会将知识进行①切片②向量化③存入向量数据库
在使用外部知识的过程,按照①问题向量化②搜索向量数据库,得出top-N③将问题和搜索到的知识作为prompt输入到LLM中④LLM生成回答
这里面是会用到向量数据库,embedding模型,检索算法、prompt等技术、工具、模型。
具体的RAG的发展和优化,将作为另外的文章来发布,或者也可以参考其他成熟的文献资料。
RAG和微调比较
茴香豆
茴香豆是一款基于LLMs的领域知识助手,它通过应用RAG技术,能够理解和高效准确的回应与特定知识领域的复杂查询;自研的工作流引擎,能够提供及时准确的技术支持和自动化回答。
茴香豆的整体架构,包括了周围的几个内容:
- 外部知识体系:可以接入包括PDF、word、txt等数据源
- 应用前端:可以对接包括微信、飞书等用户端,为端提供智能助手
- LLMs:能够对接各类大模型,如书生·浦语、通义千问等等
搭建茴香豆
可以参考教程,https://www.bilibili.com/video/BV1QA4m1F7t4/
中间也是出现一些问题,包括duckduckgo的python组件在安装的过程缺少,需要自行安装:
pip install duckduckgo_search
在运行替换config.ini文件时,没替换正确,导致配置文件中主键重复的问题
可以打开config.ini文件,删除替换前的那行即可。
在能够成功运行后,系统自动提取问题,进行回答,有如下几个场景:
茴香豆WEB demo
茴香豆目前也提供了web的demo
https://openxlab.org.cn/apps/detail/tpoisonooo/huixiangdou-web
需要先创建知识库,然后上传外部知识,索引成功后,就可以进行提问了。
以上是茴香豆的相关内容,更多的可以参考教程,进行相应的实践。
目前同类产品有fastgpt,已经迭代到4.X版本,从全流程而言,比目前的茴香豆成熟一些,读者也可以自行参考。