首页 > 其他分享 >RAG知识库优化之Rerank应用

RAG知识库优化之Rerank应用

时间:2024-04-15 09:00:58浏览次数:20  
标签:RAG Rerank 知识库 base embedding 上下文 retriever

      前面几篇文章介绍了最基本的RAG实现,也了解了RAG的基本原理。最基本的RAG 流程为用户Query问题,RAG应用在向量库查询出Context,然后将Query与 Context喂到LLM,LLM生成满足Query的Response答案。
      从这里可以存在三元组: Query、Context 和 Response,如要想进一步提升RAG的性能还可在Context(上下文)上做文章,目前得到的Context很可能与Query(问题)之间的相关度不高,通过Rerank可以对Context进行评分排序,去掉分数较低相关度较低的数据从而避免其对上下文信息的污染。下图为基本的RAG流程图;

      在未引入Rerank时可以看到从向量库中得到的上下文中包含了大量的问题相关度较低的信息,造成不相干信息对上下文的干扰。下图为未进行重排时的上下文;

Rerank模型

      Rerank模型使用了bge-reranker-base模型和embedding模型不同,Reranker模型使用问题和文档作为输入,直接输出相似度而不是embedding。本文通过向Reranker输入查询和段落来获得相关性分数。Reranker是基于交叉熵损失进行优化的相关性得分不受特定范围的限制,bge-reranker-base适用于中英文的双语场景。如果有更多语言需求可使用最新发布的BGE Re-Ranker v2.0模型。
      Rerank模型可以在不牺牲准确性的情况下加速LLM的查询并可能提高准确率,Rerank通过从上下文中删除分数较低(相关性较低)的数据,Rerank通过重新排序上下文得以实现。下图为引入Rerank后的RAG流程图。

      在引入Rerank后可以看到上下文信息与问题的相关度提高了不少,不相干信息对上下文的干扰基本解决。下图为进行重排后的上下文;

Rerank模型使用

embedding_model_name = 'maidalun1020/bce-embedding-base_v1'
embedding_encode_kwargs = {
              'normalize_embeddings': True
            }
embed_model = HuggingFaceEmbeddings(
  model_name="./bge-base-zh-v1.5",
  encode_kwargs=embedding_encode_kwargs
)

reranker_args = {
             'model_name': '/mnt/d/software/dev/gpt/bge-reranker-base', 
             'top_n': 5
                 }
reranker = BgeRerank(model_name='/mnt/d/software/dev/gpt/bge-reranker-base',top_n=3)

# init documents
db =  Chroma(persist_directory='chroma_DB',embedding_function=embed_model)
retriever =db.as_retriever(search_type="similarity",search_kwargs={"k": 10})

compression_retriever = ContextualCompressionRetriever(
    base_compressor=reranker, base_retriever=retriever
)

qa_chain = RetrievalQA.from_chain_type(llm, retriever=compression_retriever
, chain_type_kwargs={"prompt": PROMPT})

      引入Rerank模型后的retrieval引擎能够去除上下文不相关的污染数据、提供更精准的上下文信息。重排后(Rerank)精准的上下文不仅可减少了token的使用量进而还可能提高LLM推理速度与准确率。

标签:RAG,Rerank,知识库,base,embedding,上下文,retriever
From: https://www.cnblogs.com/softlin/p/18134322

相关文章

  • RAG 工具和框架介绍: Haystack、 LangChain 和 LlamaIndex
     Haystack、LangChain和LlamaIndex,以及这些工具是如何让我们轻松地构建RAG应用程序的? 我们将重点关注以下内容:HaystackLangChainLlamaIndex增强LLM那么,为什么会有这些工具存在呢?如你所知,ChatGPT和其他LLM是在某个时间点之前的一组数据上进行训练的。更重要的是,它......
  • 题解:P10320 勇气(Courage)
    P10320勇气(Courage)推导过程本题是一道数学题,重点是如何推导出正确式子。首先,先特判几个特殊点:当\(n>=2\)且\(x=2\)时,是不存在解的,战斗力无论何时都不会超过\(2^{n}\)。当\(x\)不强化就以大于\(2^{n}\)。当\(x\)第一次强化达到\(x^{2}\)时,大于\(2^{n}\)......
  • RAG应用开发实战(01)-RAG应用框架和解析器
    1开源解析和拆分文档第三方的工具去对文件解析拆分,去将我们的文件内容给提取出来,并将我们的文档内容去拆分成一个小的chunk。常见的PDFwordmarkdown,JSON、HTML。都可以有很好的一些模块去把这些文件去进行一个东西去提取。优势支持丰富的文档类型每种文档多样化选择与......
  • 知识图谱增强的KG-RAG框架
    昨天我们聊到KG在RAG中如何发挥作用,今天我们来看一个具体的例子。我们找到一篇论文:https://arxiv.org/abs/2311.17330,论文的研究人员开发了一种名为知识图谱增强的提示生成(KG-RAG)框架(https://github.com/BaranziniLab/KG_RAG),该框架利用生物医学知识图谱SPOKE与大型语言模型相结......
  • 52 Things: Number 3: Computational and storage power of different form factors
    52Things:Number3:Computationalandstoragepowerofdifferentformfactors52件事:数字3:不同外形尺寸的计算和存储能力Thisisthethirdinaseriesofblogpoststoaddressthelistof '52ThingsEveryPhDStudentShouldKnow' todoCryptography.Thes......
  • 人工智能_大模型030_大模型开发框架003_Semantic Kernel中Native Function嵌套调用_SK
    ###4.2、NativeFunction嵌套调用(选)**注意:**NativeFunction的嵌套调用,本质上就是函数嵌套。官方给的写法是在Kernel的设计思想下的实现,通过Kernel来获取函数并执行,观感上较为晦涩。实际开发中,可以根据个人对SK内核与设计理念的理解,自行选择使用以下写法,或使用普......
  • localStorage使用总结
    一、什么是localStorage、sessionStorage在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同......
  • 大模型 RAG 是什么
    大模型RAG(Retrieval-AugmentedGeneration)是一种结合了检索(Retrieval)与生成(Generation)能力的先进人工智能技术,主要用于增强大型语言模型(LLMs,LargeLanguageModels)在特定任务中的表现,特别是那些需要访问外部知识库或实时信息的任务。RAG模型旨在克服LLMs存储容量有限、难以即......
  • 知识图谱在RAG中的应用探讨
    在这篇文章中,我们来详细探讨知识图谱(KG)在RAG流程中的具体应用场景。缘起关于知识图谱在现在的RAG中能发挥出什么样的作用,之前看了360刘焕勇的一个分享,简单的提了使用知识图谱增强大模型的问答效果的几个方面:在知识整理阶段,用知识图谱将文档内容进行语义化组织;在意图识别阶段......
  • jmeter监控服务器工具jp@gc - PerfMon Metrics Collector(ServerAgent)
    一、在服务器上安装ServerAgentSeverAgent:这个工具,可以和jmeter集成,在jmeter的GUI界面可以看到数据。链接:https://pan.baidu.com/s/1k3xlXk35YfPmS17-2ZFBnA?pwd=5s4n提取码:5s4n复制这段内容后打开百度网盘手机App,操作更方便哦使用unzip命令解压文件......