写点什么

人工智能中的 RAG 技术在测试领域的探索

作者:测试人
  • 2025-04-02
    北京
  • 本文字数:3040 字

    阅读完需:约 10 分钟


RAG 是什么?

RAG,全称 Retrieval Augmented Generation,翻译过来就是检索增强生成,随着大模型技术的应用,我们听到这个词的频率越来越高,可以说是当下最火的一种应用方案。


简单来说,就是增强大模型的知识领域,从而生成更准确和信息丰富的文本。


相信大家或多或少的都接触过 GPT 或者类似的诸如文心一言、通义千问等等 LLM(大语言模型,下文将以此简称)的使用,能力强大,但是依然有明显的无法满足部分实际业务的场景:


知识局限:LLM 的知识来源仅限于它的训练数据,而这些训练数据都是基于网络上已公开的数据且不具有实时性,当我们的知识库是属于某个非公开的专业领域时(例如我司各个业务线的产品需求设计,技术设计等),LLM 就不再具备。


模型幻觉:当我们使用 LLM 时,偶尔也会发现它的回答完全不对,但是仍然在输出,也就是一本正经的胡说八道,这个时候很可能就是出现了 LLM 的幻觉问题;也就是问题涉及某一专业领域,但是 LLM 本身不具备,但是 LLM 的输出原理是基于数学概率的,有的时候仔细观察会发现 LLM 回答时候会一个字一个字的往外吐,也就是基于上下文在计算接下来回答最有可能是什么,是哪个字,所以即便不具备此领域知识,仍然可以计算得到 LLM 本身认为概率最大的回答。


因此为了解决上述问题,我们就需要引入 RAG 技术

RAG 的组成

从 RAG 的名称(检索增强生成)也可以很清晰的知道,其核心组成就是检索+生成;可以检索到我们想知道的相关信息,然后依靠 LLM 生成我们想知道的答案。而想要更快速准确的检索到相关信息,我们就还需要索引。


索引


索引的主要工作,就是将我们的本地私有知识库进行向量化存储,利用向量数据库的高效存储和检索能力,召回目标知识,供 LLM 分析使用。


索引的过程一般大体上有如下几步:


1、本地数据加载:数据可能有多种形式,Json、txt、Markdown、PDF 等


2、数据切片:本地的数据可能一份很大,对于检索的准确度和 LLM 对 token 的限制都有影响,所以我们需要将数据分割成若干个小块;


过程中切片的大小,重叠的多少,以及以何种方式断句分割都对后续的检索效果有一定的影响。因为文本只有语义关联的,一个句子如果还没有说完,中间直接截断,那么就会造成上下文语义不清晰的情况。


3、向量存储:这一步,利用使用 VectorStore 和 Embeddings 模型来完成将切片数据进行存储和索引,以供后续的检索使用


检索与生成


1、检索:通过检索器对切片分割的数据进行检索,其中可能涉及多种检索方式的融合,例如相似性,可按照相似度排分进行召回 top-k 个结果


2、生成:LLM 使用包含问题和检索到的数据的 Prompt 生成答案


RAG 的应用与思考

应用:

1、问答系统

现代问答系统需要处理各种各样的问题,从简单的事实查询到复杂的推理问题。传统生成模型在处理这些问题时,可能会因为缺乏足够的上下文信息而产生不准确的回答。RAG 通过检索相关文档,为生成模型提供了丰富的背景知识,从而生成更准确和详细的回答。


示例:


●医疗问答系统:医生或患者可以通过问答系统获取医疗建议和信息。RAG 可以通过检索医学文献和研究报告,提供科学依据和详细解释。


●法律问答系统:律师或普通用户可以查询法律问题,RAG 可以通过检索法律文本和案例,提供专业的法律解答。


●需求问答系统:公司目前业务线繁多,迭代快,功能杂,靠人工记住所有的需求细节不现实,而获取需求的直接方式往往不是查看需求文档,可能是咨询测试工程师,这期间的时间与精力的消耗是在不经意间的。而通过 RAG,可以让相关的产品、研发、销售,甚至测试工程师自己优先像 AI 提问,降低中间沟通成本。


2、内容生成

在内容生成应用中,如新闻写作、报告生成和产品描述,RAG 可以通过检索相关资料,生成内容丰富且信息准确的文本。这不仅提高了生成内容的质量,还节省了大量的人工编辑时间。


示例:


●新闻写作:记者可以使用 RAG 生成新闻稿,通过检索相关背景资料和历史事件,生成详细且具有新闻价值的报道。


●产品描述:电商平台可以使用 RAG 生成产品描述,通过检索产品评论和用户反馈,生成详细且吸引人的产品介绍。


●用例生成:用例的编写具备一定程度上的标准格式,例如固定的用例描述、前置条件、测试步骤、预期结果等,测试工程师可以使用 RAG 补充自己的业务需求描述以及用例生成维度(冒烟用例、边界值、异常值等),生成覆盖尽可能全面的测试用例


3、客户支持

RAG 可以帮助客服机器人提供更专业和详细的回答,提高客户服务质量。通过检索相关的支持文档和解决方案,RAG 能够快速且准确地回答客户的问题。


示例:


●技术支持:IT 公司可以使用 RAG 为客户提供技术支持,检索相关技术文档和解决方案,解决客户的技术问题。


●金融服务:银行和金融机构可以使用 RAG 回答客户的金融问题,通过检索相关法规和金融产品信息,提供准确的建议。


●智能客服:目前我司也已经有了多个智能 AI 客服的 RAG 项目在进行中,可以减轻人力负担,24 小时提供及时准确的客服服务。


思考:

1、使用形式

如上所述,目前主流的 RAG 大多都是以 chatbot 的形式,chatbot 的形式固然是发挥了交互上以自然语言聊天沟通的优势,不过也缺少了在特定技术领域的操作便捷性。


以测试用例编写为例,在公司内部,测试用例的实际编写时,有相当一部分都是基于 XMind 编写后再上传至平台保存的。


如果有使用过 Copilot 的一定有所感触,直接在 IDE 上进行 chat,获取你想知道的相关技术问题,chat 的过程还可以联想到项目中的代码中。而代码的编写时可以自动联想补全,这种形式很方便很符合开发检索的需求



受此启发,那么我们就想,如果我能把 IDE 换成 XMind,一边用 XMind 写用例,一边在写的过程中可以根据当前用例需要的需求背景和功能模块描述帮我自动补全修改甚至检查 XMind 上的用例,完成后保存即可上传至平台存档,岂不美哉?


于是乎,这将会是下个阶段的探索目标,希望能拥有我们测试人自己的“Copilot”。

2、能力拓展

在做 AI 领域的调研探索时,相信很多人和我一样经常会有这样的想法,我能不能就直接告诉他帮我干一件什么事,然后 AI 直接帮我给做了。


还是拿测试领域为例,测试除了测试用例,还有个最频繁打交道的就是数据,例如我有了一堆数据,我需要以某种规则或格式整理出来,然后填入到某个平台中供使用;


或者根据测试数据生成了一些自动化用例,自动去触发执行。


我们单从 RAG 的角度来看,是无法完成的,RAG 仅仅是加强版的搜索;我们可以简单以一个人为例子,RAG 可能就属于一个人的大脑,大脑有很强的思考逻辑能力,但是大脑本身不具备行动能力,想要画画,得控制手去握住画笔进行创作。


那么下个阶段,我们就需要拓展 AI 的行动能力,给大脑赋予身体(agent)和工具(tools),让 AI 能做到人与人之间的对话指挥一样,你来说,我来做。

结论

通过上文的分享,我们了解到 RAG(检索增强生成)技术在解决大语言模型(LLM)局限性方面的巨大潜力。RAG 通过结合检索和生成,不仅扩展了 LLM 的知识范围,还有效解决了模型幻觉问题,生成更准确和信息丰富的内容。


RAG 在问答系统、内容生成和客户支持等领域展现了广泛的应用前景,显著提升了用户体验并降低了人力成本。然而,目前 RAG 的应用仍主要以 chatbot 形式为主,缺乏在特定技术领域的操作便捷性。未来,我们需要将 RAG 与实际业务工具结合,提升其在专业领域的实用性。


此外,RAG 本质上仍是一个搜索和生成的过程,缺乏实际执行任务的能力。下一步,我们需要探索如何赋予 AI 执行能力,以实现更复杂和多样的任务需求。


总之,RAG 技术为我们提供了一个强大的工具,但在这方面的研究可谓九牛一毛,上述 RAG 的环节中,每一环都涉及很多细节优化,每个点的处理都关系到最后的问答效果;


路漫漫其修远兮,可能有理解和说明有误的地方,欢迎各界大佬指教。

用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
人工智能中的RAG技术在测试领域的探索_人工智能_测试人_InfoQ写作社区