javanli / blog

blog
0 stars 0 forks source link

基于知识库的大模型问答方案调研 24年3月 #60

Open javanli opened 7 months ago

javanli commented 7 months ago

背景

过去的一年里,chatgpt引领的大语言模型热度很高,它颠覆了传统的自然语言处理,提供了一个通向AGI的可能性。 chatgpt非常智能,能够像人一样回答各行各业的问题,并有一定程度的逻辑推理能力。 但美中不足的是,目前的大模型,上下文是有限的,无法处理过长的内容。 但很多时候尤其是ToB的场景,往往要基于一定体量的背景内容进行处理,我们不得不另辟蹊径。

简述

常规解决方案有两种,一种是通过微调方法如Fine-tuning,用知识库的信息进一步训练模型。这种方式往往比较困难,因为知识库的规模往往不足以完成大模型的微调。这种方法更适合生产行业专精的大模型。 另一种是在知识库检索需要的内容作为上下文贴给大模型,这种方式被称为RAG(Retrieval-Augmented Generation)。本文主要介绍RAG的常规方案。

RAG是什么

RAG是一种用于构建基于知识库的问答系统的技术,它的全称是"Retrieval-Augmented Generation"。RAG技术结合了检索式和生成式方法,旨在提高问答系统的性能和效率。

具体来说,RAG技术使用一个大型语言模型(如GPT)作为生成式模块,同时结合一个检索式模块,该模块用于从一个事先构建好的知识库中检索相关信息。生成式模块负责根据检索到的信息生成答案,从而实现对复杂问题的回答。

RAG技术的优势在于能够利用知识库中的结构化和非结构化信息,从而提高问答系统的准确性和效率。通过结合检索和生成的方法,RAG技术在处理各种类型的问题时表现出色,尤其在需要综合多个信息源进行推理的情况下效果显著。

总体而言,RAG技术代表了问答系统领域的最新进展,为构建更智能、更高效的基于知识库的问答系统提供了新的思路和方法。

技术方案

  1. 向量生成
    1. 使用API生成,如OpenAI的text-embedding-3-small模型生成向量
    2. 开源模型本地生成,可以参考这个表Massive Text Embedding Benchmark (MTEB) Leaderboard
  2. 向量存储&搜索
    1. pgvector
    2. sqlite-vss
    3. 浏览器内的向量数据库如victor,vexvault,vector-storage
  3. 大模型问答
    1. 使用API,如OpenAI, moonshot等
    2. 开源模型本地生成,参考以下排行榜
      1. SuperCLUE开源模型排行榜
      2. open_llm_leaderboard