大模型与知识库的结合:
为了方便理解后面的内容,这里先对LangChain-Chatchat框架和实现原理做一个简单的介绍。由于本文非技术向梳理,详细介绍就不展开,感兴趣可参考:https://www.langchain.com.cn/[heading3]1、名词解释[content]RAG:即Retrieval-Augmented Generation,搜索增强生成,简单来说就是大模型+知识库,从广泛的知识库数据中检索相关片段,然后由大模型根据这些内容生成答案。这种方式,一方面可以减大模型的幻觉,提高其在特定任务上的表现,更加贴合实际应用的需求,另一方面可以明显提高搜索文档信息和生成回答的效率和体验,因此称为搜索增强生成。LangChain:是一个可以实现RAG的开源框架,它提供一些基础的组件和工具,如知识库管理、文本处理、模型加载等,允许开发人员将大语言模型(LLM)与外部数据源相结合,快速搭建自己的应用。LangChain-Chatchat:原Langchain-ChatGLM,是在LangChain基础上构建的一个具体应用,使用了LangChain的组件和工具,并结合了其他一些技术和库(如FastAPI、Streamlit等),来构建基于LLM的本地知识库问答系统,其目标是建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
其中,她是陈美嘉,这里是人设中的设定。吵架的经过是知识库中的内容。在我提问了之后,大模型去知识库里找到了相关内容,然后回复了我。这就是一个简单的正确回复的demo示例。然而,我们会发现,有时候她的回答会十分不准确。图二明显回答的牛头不对马嘴。图三是知识库截图,其中是有“一菲为美嘉找了一份助教工作”的内容的。但是回答这个问题时,AI并没有根据正确的知识库内容回答。这,就是基于知识库问答中的一个非常常见的错误场景。在其他情况下,甚至有可能出现报价错误、胡编乱造等等。这在严肃场景中,是不能接受的出错。现在应该能够直观的理解,为什么需要让大模型根据知识库回答的更加准确、更符合我们的要求。在AI领域中,优化AI更准确回答问题的过程,有一个更加专业的术语,叫做RAG。接下来,咱们进入正题,一步一步探索,如何优化回答。二、基础概念如果我们要优化幻觉问题和提高准确性,就务必要了解清楚从“问题输入”--“得到回复”,这个过程中,究竟发生了什么。然后针对每一个环节,逐个调优,以达到效果最佳化。因此,我们先深入其中了解问答全貌。
其中:language:当前文件的代码语言(TypeScript、Python、Rust、Golang等)context:根据知识库返回的上下文信息diff_code:是变更的代码(不使用完整代码主要是考虑LLM max_tokens最大限制)[heading3]评论到变更代码行[content]为了能计算出变更代码行,写了一个函数,通过解析diff来输出变更的行数:这里机器人账号调用Gitlab API进行的评论,会默认被Resolved,这样可以避免CR Copilot评论过多造成每个评论要手动点下Resolved[heading2]一点感想[content]一切皆概率:基于LLM的应用最大特点在于『输出不确定性』,在候选词中选概率最高的进行输出,即使像1+1=?这样看起来有确定性输出的,LLM也是基于概率给出的!开源LLMs+领域知识库+私有化部署是企业级应用的一种实践方式:这里LLMs指多个大模型组合使用;大模型再强大也必须结合内部的知识库才能发挥作用;私有化部署好处是打消各行各业对数据安全的担忧!大模型在Chat聊天的产品形态更多是秀肌肉,让各行各业能被触达到;最终的产品形态需要具体场景具体分析!AI+刚刚开始:CR Copilot只是达人LLMs+研发工程化其中一个应用场景,还有一些应用/工具等达人团队打磨好后再和大家一起分享!