LLM+RAG+知识库企业落地实践总结(上)

942 阅读3分钟

基于langchain的rag案例(机器人、客服助理、知识库问答、文档问答)已经很多了,例如:

  • 基于LangChain+LLM的本地知识库问答
  • LangChain + ChatGPT 实战应用:AI销售客服
  • 徒手使用LangChain搭建一个ChatPDF
  • 基于LangChain+GLM搭建知识本地库
  • 基于LangChain + LLama2 打造智能小助手
  • 用LangChain和Llama 2打造心灵疗愈机器人

这里就聊点实际的:企业生产落地的LLM+RAG+知识库需要解决那些问题?

RAG = 各类文档预处理 + Query理解+文档召回 + LLM + 全链路评测

插播一下:大家认为LLM+RAG+知识库产品是适合ToC还是ToB场景?如果产品由ToB转向ToC,大家认为有钱途吗?😐

【一】文档预处理

问题描述:

Query1:星源材质成立于哪一年?

Query2:星源材质是怎么样的公司?

如果使用传统的技术标点符号+最大长度切分方法,将文档切分成如下两个片段,那么上面的两个query,RAG系统无法准确、全面回答,因为:缺少关键主体信息、分点内容被切分到不同段落。

image.png

参考方案:

整体方案:片段 = 全文关键信息 + 段落关键信息 + 段落内文本片段

推荐几个常见格式处理工具:

1、docx文档推荐开源库docx,可以解析文档的结构:页数、页眉、页脚、段落、章节、图片、表格都能抽取

2、pdf格式推荐开源库pdfplumber、pdfminer、Camelot,不像docx那么好用,毕竟比按纯文本格式处理香

3、txt格式这个不好处理,采用语义切分优化

【二】Query理解

问题描述:

TA们以为的用户Query1:知识库里面有多少文章?

TA们以为的用户Query2:深圳出差住宿标准是多少?

真正的用户Query:住宿

企业生产环境,用户真正的Query往往是不规范、随意性大,关键词式的提问居多,语义完整且表达规范的Query不多,因为大多数用户还是习惯搜索式提问,不想输入太多内容,以为AI就是万能的,规范式提问习惯还没养成。

只有一个关键词“住宿”,它的含义有很多种可能:“住宿是啥”、“住宿标准”、“住宿报销”,即使是人看到了,也很难准确把握用户含义,更别说是机器。

参考方案:

1、Query理解:意图识别,Query改写,Query补全,具体方法可以用BERT来做,类似的案例和博客有很多,比如:"大话搜索query理解”;当然也可以基于LLM训练一个LoRA来解决;

2、类似“知识库里有多少文章”等功能性问答可以考虑Function Call来解决。

【三】文档召回

问题描述:

Query1:公司年假是怎么规定的?

Query2:A股市场行情如何

如果召回的文档是这样的:

Query1召回文档:

xxx公司考勤管理办法2024版

xxx公司考勤管理办法2023版

xxx公司考勤管理办法2022版

Query2召回文档:

A股收评分析20240105

A股收评分析20240104

A股收评分析20240103

A股收评分析20240102

把上面数据喂给LLM,它就变得emo了

参考方案:

方案1:就是召回阶段做好预处理,就是召回策略做一些过滤了,让进入到LLM的数据尽量不出现歧义

方案2:sft阶段加一些类似数据😐

------------------------------------美丽分割线-----------------------------

欢迎留言交流,也可关注公众号交流:PaperAgent