检索阶段面临的一个挑战是,通常你无法预知你的文档存储系统在处理数据时会面临哪些具体的query。这意味着,对于一个query来说,最相关的信息可能被埋没在包含大量无关文本的文档中。如果你将整个文档传递给LLM,可能会导致更昂贵的调用开销,以及响应质量的下降。这其实与上一节介绍的一样,都是信息被稀释的问题。
上下文压缩(Contextual compression)技术尝试解决这一问题,想法非常简单:不是理解原样返回检索到的文档,而是使用给定的query对上下文进行压缩,这样只会返回有关的内容。此处的“压缩”不仅指压缩单个文档的内容,也指过滤整个文档集合。
在Langchain中使用上下文压缩需要两个步骤:
构建一个基础检索器,就是我们在使用RAG技术构建企业级文档问答系统之基础流程中介绍的那种retriever
将基础检索器和大语言模型,使用Document Compressor构建相应的对象
如上面所介绍的,上下文压缩的工作原理如下图所示:
从下表可以看出,三种上下文压缩的方式,最终的问答效果都不够理想,毕竟压缩多少还是会造成信息损失的,其实有一种折中的方式是,将压缩后的文档,和原始文档一起进行检索,就像卷积神经网络Inception中,将1×1、3×3、5×5卷积后的结果拼接起来一样,这样对原始文档不同视角(粒度)的信息都会保留,这种方式其实已经有论文进行了研究,后面会介绍。
这其中尤其明显的是EmbeddingsFilter,由于涉及到卡阈值,这个值设置过小会使得过滤失效,设置过大可能导致所有检索到的片段都被过滤掉。
3 核心代码
本文完整代码已开源,地址在:https://github.com/Steven-Luo/MasteringRAG/blob/main/retrieval/10_contextual_compression.ipynb
Langchain中的上下文压缩,相关的方法有4种,下面首先介绍基础检索器,然后分别介绍4种的构造方法。
添加一个方法,便于打印检索结果:
(docs): ( .join( [+((d,))++d.page_contenti,d(docs)] ) )
基础检索器:
HuggingFaceBgeEmbeddings
Chroma
InMemoryStore
model_path=
device=torch.cuda.is_available()
()
(model_path):
embeddings=HuggingFaceBgeEmbeddings(
model_name=model_path,
model_kwargs={:device},
encode_kwargs={:},
query_instruction=
)
embeddings
(embeddings,docs,db_name):
persist_directory=os.path.join(expr_dir,,db_name)
shutil.rmtree(persist_directory,ignore_errors=)
vector_db=Chroma.from_documents(
splitted_docs,
embedding=embeddings,
persist_directory=persist_directory
)
vector_db
embeddings=get_embeddings(model_path)
vector_db=get_vector_db(embeddings,splitted_docs,)
base_retriever=vector_db.as_retriever(search_kwargs={:})使用基础检索器:
pretty_print_docs(base_retriever.invoke())
结果:
Document1: 全球经济金融展望报告 中国银行研究院22024年 图1:全球GDP增速(%) 资料来源:IMF,中国银行研究院 分区域看,全球经济复苏不均衡,各国存在较大差异。发达经济体增速明 显放缓,预计2023年增速较2022年下降1个百分点。其中,欧元区和英国经 济增速大幅下降,美国表现好于其他发达经济体。2023年三季度,欧元区和英 国GDP环比增速均由之前的正增长转为负增长,分别下降0.1%和0.03%;美 国GDP环比增长折年率为4.9%,比二季度增速高2.8个百分点。新兴经济体增 速与2022年大致持平,预计2023年增速比2022年下降0.1个百分点。其中, 东南亚等出口型经济体增长承压,拉美、非洲等大宗商品出口国增速放缓,中 东欧国家经济增速加快(图2)。 ---------------------------------------------------------------------------------------------------- Document2: 全球经济金融展望报告 中国银行研究院92024年 综合上述因素,“复苏+分化”将成为2024年全球经济主线逻辑,预计全 年经济增速在2.5%左右,增速比2023年低0.2个百分点。 (二)重点国别/地区经济形势研判 1.美国经济增速将回落,高利率对经济的滞后影响将逐步显现 2023年前三季度美国经济未受加息明显冲击,出现超预期增长。一、二季 度GDP环比增长折年率分别为2.2%和2.1%,处于潜在增速附近,三季度大幅 提高至4.9%,为2022年以来最好季度表现(图8)。其中,私人消费和政府财 政支出是支撑美国经济增长的重要驱动力,前三季度上述两分项对美国经济增 长的贡献率分别为64.4%和23.5%。后疫情时代消费者在服务领域的压抑需求 得到释放。服务支出成为消费者支出领域中最稳定和增幅最大的板块,前三季 度服务消费贡献了私人消费增长的58.7%。这主要得益于美国就业市场的稳健, 1-10月非农就业人数均值远高于历史水平,失业率平均值为3.6%,低于2022 年同期和国会预算办公室估算的非周期性失业率水平。美国劳动者实际收入保 持增长,个人实际可支配收入月同比增速均值达4.2%,家庭财务状况良好,家 庭财富对个人支出的正面效应高于历史水平。财政支出对经济增长的带动作用 上升。2023年美国政府推进实施《通胀削减法案》《芯片与科学法案》,加大 对清洁能源、半导体等产业的财政支持力度,前三季度政府支出平均每季度拉 动GDP环比增长折年率0.7个百分点,而2022年该数值为-0.1。私人投资触底 反弹,对经济的提振作用逐渐增强。受美国积极的产业政策和产业链回流等因 素影响,制造业投资在二季度之前保持稳定增长,很大程度上对冲了利率抬升 对美国房地产投资的负面影响,弱化了加息对私人投资的冲击。三季度虽然制 造业投资开始转弱,但房地产投资的快速恢复又再度稳定了私人投资形势。前 三季度私人投资对美国GDP环比增长折年率的季度拉动率均值为0.2%,高于 上年同期的-0.8%。净出口对美国经济的拖累效应减弱。2023年美元维持强势 表现,前三季度货物进口支出下降6.0%,而全球需求疲软导致美国货物出口规 ---------------------------------------------------------------------------------------------------- Document3: 全球经济金融展望报告 中国银行研究院72024年 (图7)。10月,世贸组织将2023年全球货物贸易增速预测值下调0.9个百分 点至0.8%,2023年国际贸易增长或为近几年最低水平。但近期东亚、东南亚等 主要经济体出口下行趋势收窄,贸易呈现企稳迹象。9-10月,越南出口结束连 续10个月的负增长态势,同比分别增长5.0%和6.7%。10月,韩国出口同比增 长5.1%,是自2022年10月以来首次正增长。 图7:全球货物贸易量指数和货物贸易价格指数(2010年=100) 资料来源:荷兰经济分析局,中国银行研究院 展望2024年,预计全球经济复苏将依旧疲软,且分化可能加剧。 一是发达经济体面临的“遏通胀和稳增长”两难问题更加突出,货币政策 走势将分化。疫后服务业复苏加快、劳动力市场紧平衡、地缘冲突加剧等因素 导致发达经济体核心通胀黏性较强,通胀回落速度较慢。2023年10月,IMF 将2024年全球通胀预测值由7月的5.2%上调至5.8%,并预测到2025年前大 多数国家的通胀率都将高于央行目标。通胀反复风险使当前各主要央行对通胀 走势保持警惕,预计在一段时间内政策利率将继续维持在高位。但随着经济下 行压力加大,主要经济体央行货币政策走势将逐渐分化。截至11月中旬,在 Macrobond跟踪的79家央行中,近1/5正处于降息周期。预计美联储大概率在 2024年上半年停止加息,日本央行在通胀压力下可能于2024年年初退出负利
LLMChainExtractor构造方法如下:
ChatOllama ContextualCompressionRetriever LLMChainExtractor llm=ChatOllama(base_url=,model=) extractor_compressor=LLMChainExtractor.from_llm(llm) extractor_compression_retriever=ContextualCompressionRetriever( base_compressor=extractor_compressor,base_retriever=base_retriever )
使用:
pretty_print_docs(extractor_compression_retriever.invoke())
结果:
Document1: 全球经济增长的特点如下: -全球经济复苏不均衡,各国存在较大差异。 -发达经济体增速明显放缓,预计2023年增速较2022年下降1个百分点。其中,欧元区和英国经济增速大幅下降;美国表现好于其他发达经济体。 -欧元区和英国在2023年三季度的GDP环比增速均由之前的正增长转为负增长。 -美国GDP环比增长折年率为4.9%,比二季度增速高2.8个百分点。 -新兴经济体增速与2022年大致持平,预计2023年增速比2022年下降0.1个百分点。其中,东南亚等出口型经济体增长承压;拉美、非洲等大宗商品出口国增速放缓;中东欧国家经济增速加快。 以上是根据给定的上下文提取出的相关信息,用于回答关于2023年全球经济增长特点的问题。 ---------------------------------------------------------------------------------------------------- Document2: 复苏+分化将成为2024年全球经济主线逻辑,预计全年经济增速在2.5%左右。美国经济增速将回落,高利率对经济的滞后影响将逐步显现。后疫情时代消费者在服务领域的压抑需求得到释放,服务支出成为消费者支出领域中最稳定和增幅最大的板块。美国就业市场稳健,非农就业人数均值远高于历史水平,失业率平均值为3.6%,个人实际可支配收入月同比增速均值达4.2%。财政支出对经济增长的带动作用上升。制造业投资在二季度之前保持稳定增长,很大程度上对冲了利率抬升对美国房地产投资的负面影响。净出口对美国经济的拖累效应减弱,2023年美元维持强势表现,前三季度货物进口支出下降6.0%,而全球需求疲软导致美国货物出口规模减少。 ---------------------------------------------------------------------------------------------------- Document3: 近期东亚、东南亚等主要经济体出口下行趋势收窄,贸易呈现企稳迹象。9-10月,越南出口结束连续10个月的负增长态势,同比分别增长5.0%和6.7%。10月,韩国出口同比增长5.1%,是自2022年10月以来首次正增长。 2024年预计全球经济复苏将依旧疲软,且分化可能加剧。发达经济体面临的“遏通胀和稳增长”两难问题更加突出,货币政策走势将分化。主要经济体央行在经济下行压力下可能会逐渐调整政策利率,其中美联储在2024年上半年停止加息的可能性较大。
可以看出,结果短了很多,对原文内容进行了摘要压缩。
LLMChainFilter这种方法,LLM会将不那么相关的文档片段过滤掉。
构造方法如下:
LLMChainFilter _filter=LLMChainFilter.from_llm(llm) filter_compression_retriever=ContextualCompressionRetriever( base_compressor=_filter,base_retriever=base_retriever )
使用:
pretty_print_docs(filter_compression_retriever.invoke())
结果:
Document: 全球经济金融展望报告 中国银行研究院年 图1全球GDP增速% 资料来源IMF中国银行研究院 分区域看全球经济复苏不均衡各国存在较大差异发达经济体增速明 显放缓预计2023年增速较2022年下降1个百分点其中欧元区和英国经 济增速大幅下降美国表现好于其他发达经济体年三季度欧元区和英 国GDP环比增速均由之前的正增长转为负增长分别下降0.%和0.%美 国GDP环比增长折年率为4.%比二季度增速高2.个百分点新兴经济体增 速与2022年大致持平预计2023年增速比2022年下降0.个百分点其中 东南亚等出口型经济体增长承压拉美非洲等大宗商品出口国增速放缓中 东欧国家经济增速加快图2 ---------------------------------------------------------------------------------------------------- Document: 全球经济金融展望报告 中国银行研究院年 图7月世贸组织将2023年全球货物贸易增速预测值下调0.个百分 点至0.%年国际贸易增长或为近几年最低水平但近期东亚东南亚等 主要经济体出口下行趋势收窄贸易呈现企稳迹象-月越南出口结束连 续10个月的负增长态势同比分别增长5.%和6.%月韩国出口同比增 长5.%是自2022年10月以来首次正增长 图7全球货物贸易量指数和货物贸易价格指数年= 资料来源荷兰经济分析局中国银行研究院 展望2024年预计全球经济复苏将依旧疲软且分化可能加剧 一是发达经济体面临的遏通胀和稳增长两难问题更加突出货币政策 走势将分化疫后服务业复苏加快劳动力市场紧平衡地缘冲突加剧等因素 导致发达经济体核心通胀黏性较强通胀回落速度较慢年10月IMF 将2024年全球通胀预测值由7月的5.%上调至5.%并预测到2025年前大 多数国家的通胀率都将高于央行目标通胀反复风险使当前各主要央行对通胀 走势保持警惕预计在一段时间内政策利率将继续维持在高位但随着经济下 行压力加大主要经济体央行货币政策走势将逐渐分化截至11月中旬在 Macrobond跟踪的79家央行中近1/正处于降息周期预计美联储大概率在 年上半年停止加息日本央行在通胀压力下可能于2024年年初退出负利
LLMListwiseRerankLLMListwiseRerank使用zero-shot的方式对文档进行reranking,它的作用与LLMChainFilter类似,但是更加鲁邦也会耗费更多资源。官方建议使用强大一些的模型,此处为了控制变量,依然使用Ollama中的qwen2-7b。
构造方法:
LLMListwiseRerank OllamaFunctions ollama_func_llm=OllamaFunctions(model=,base_url=,=) _filter=LLMListwiseRerank.from_llm(ollama_func_llm,top_n=) listwise_rerank_compression_retriever=ContextualCompressionRetriever( base_compressor=_filter,base_retriever=base_retriever )
使用:
retrieved_docs=listwise_rerank_compression_retriever.invoke()
结果:
Document: 全球经济金融展望报告 中国银行研究院年 图1全球GDP增速% 资料来源IMF中国银行研究院 分区域看全球经济复苏不均衡各国存在较大差异发达经济体增速明 显放缓预计2023年增速较2022年下降1个百分点其中欧元区和英国经 济增速大幅下降美国表现好于其他发达经济体年三季度欧元区和英 国GDP环比增速均由之前的正增长转为负增长分别下降0.%和0.%美 国GDP环比增长折年率为4.%比二季度增速高2.个百分点新兴经济体增 速与2022年大致持平预计2023年增速比2022年下降0.个百分点其中 东南亚等出口型经济体增长承压拉美非洲等大宗商品出口国增速放缓中 东欧国家经济增速加快图2
EmbeddingFilter这种方式会按照Embedding相似度进行过滤。
构造方法:
EmbeddingsFilter embeddings_filter=EmbeddingsFilter(embeddings=embeddings,similarity_threshold=) embeddings_filter_compression_retriever=ContextualCompressionRetriever( base_compressor=embeddings_filter,base_retriever=base_retriever )
使用:
pretty_print_docs(embeddings_filter_compression_retriever.invoke())
Document1: similarity:0.6317 全球经济金融展望报告 中国银行研究院22024年 图1:全球GDP增速(%) 资料来源:IMF,中国银行研究院 分区域看,全球经济复苏不均衡,各国存在较大差异。发达经济体增速明 显放缓,预计2023年增速较2022年下降1个百分点。其中,欧元区和英国经 济增速大幅下降,美国表现好于其他发达经济体。2023年三季度,欧元区和英 国GDP环比增速均由之前的正增长转为负增长,分别下降0.1%和0.03%;美 国GDP环比增长折年率为4.9%,比二季度增速高2.8个百分点。新兴经济体增 速与2022年大致持平,预计2023年增速比2022年下降0.1个百分点。其中, 东南亚等出口型经济体增长承压,拉美、非洲等大宗商品出口国增速放缓,中 东欧国家经济增速加快(图2)。 ---------------------------------------------------------------------------------------------------- Document2: similarity:0.6217 全球经济金融展望报告 中国银行研究院92024年 综合上述因素,“复苏+分化”将成为2024年全球经济主线逻辑,预计全 年经济增速在2.5%左右,增速比2023年低0.2个百分点。 (二)重点国别/地区经济形势研判 1.美国经济增速将回落,高利率对经济的滞后影响将逐步显现 2023年前三季度美国经济未受加息明显冲击,出现超预期增长。一、二季 度GDP环比增长折年率分别为2.2%和2.1%,处于潜在增速附近,三季度大幅 提高至4.9%,为2022年以来最好季度表现(图8)。其中,私人消费和政府财 政支出是支撑美国经济增长的重要驱动力,前三季度上述两分项对美国经济增 长的贡献率分别为64.4%和23.5%。后疫情时代消费者在服务领域的压抑需求 得到释放。服务支出成为消费者支出领域中最稳定和增幅最大的板块,前三季 度服务消费贡献了私人消费增长的58.7%。这主要得益于美国就业市场的稳健, 1-10月非农就业人数均值远高于历史水平,失业率平均值为3.6%,低于2022 年同期和国会预算办公室估算的非周期性失业率水平。美国劳动者实际收入保 持增长,个人实际可支配收入月同比增速均值达4.2%,家庭财务状况良好,家 庭财富对个人支出的正面效应高于历史水平。财政支出对经济增长的带动作用 上升。2023年美国政府推进实施《通胀削减法案》《芯片与科学法案》,加大 对清洁能源、半导体等产业的财政支持力度,前三季度政府支出平均每季度拉 动GDP环比增长折年率0.7个百分点,而2022年该数值为-0.1。私人投资触底 反弹,对经济的提振作用逐渐增强。受美国积极的产业政策和产业链回流等因 素影响,制造业投资在二季度之前保持稳定增长,很大程度上对冲了利率抬升 对美国房地产投资的负面影响,弱化了加息对私人投资的冲击。三季度虽然制 造业投资开始转弱,但房地产投资的快速恢复又再度稳定了私人投资形势。前 三季度私人投资对美国GDP环比增长折年率的季度拉动率均值为0.2%,高于 上年同期的-0.8%。净出口对美国经济的拖累效应减弱。2023年美元维持强势 表现,前三季度货物进口支出下降6.0%,而全球需求疲软导致美国货物出口规 ---------------------------------------------------------------------------------------------------- Document3: similarity:0.6074 全球经济金融展望报告 中国银行研究院72024年 (图7)。10月,世贸组织将2023年全球货物贸易增速预测值下调0.9个百分 点至0.8%,2023年国际贸易增长或为近几年最低水平。但近期东亚、东南亚等 主要经济体出口下行趋势收窄,贸易呈现企稳迹象。9-10月,越南出口结束连 续10个月的负增长态势,同比分别增长5.0%和6.7%。10月,韩国出口同比增 长5.1%,是自2022年10月以来首次正增长。 图7:全球货物贸易量指数和货物贸易价格指数(2010年=100) 资料来源:荷兰经济分析局,中国银行研究院 展望2024年,预计全球经济复苏将依旧疲软,且分化可能加剧。 一是发达经济体面临的“遏通胀和稳增长”两难问题更加突出,货币政策 走势将分化。疫后服务业复苏加快、劳动力市场紧平衡、地缘冲突加剧等因素 导致发达经济体核心通胀黏性较强,通胀回落速度较慢。2023年10月,IMF 将2024年全球通胀预测值由7月的5.2%上调至5.8%,并预测到2025年前大 多数国家的通胀率都将高于央行目标。通胀反复风险使当前各主要央行对通胀 走势保持警惕,预计在一段时间内政策利率将继续维持在高位。但随着经济下 行压力加大,主要经济体央行货币政策走势将逐渐分化。截至11月中旬,在 Macrobond跟踪的79家央行中,近1/5正处于降息周期。预计美联储大概率在 2024年上半年停止加息,日本央行在通胀压力下可能于2024年年初退出负利
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |