当前位置:   article > 正文

高级RAG特性之一 - 查询压缩_retrievalaugmentor

retrievalaugmentor

一、背景

不管是在RAG还是AI对话的场景,为了能让AI更好的理解当前问题,往往会把历史对话跟当前问题一并发送。

携带历史记录的好处很明显,就是可以让AI充分理解上下文,回答更准确。

缺点也很明显:

  • 请求内容大,消耗token多;
  • 可能有很多跟当次请求无关的内容,影响AI对问题的理解速度;

二、例子

  1. USER:详细描述孙悟空的生平及主要事迹
  2. AI:孙悟空是。。。。(很长的内容)
  3. USER:他是哪一年出生的?

AI回复的内容很长,如果在用户提问“他是哪一年出生的?”这个问题时,把历史记录跟问题一并发送给AI,除了可能会超出AI接口的最大请求token数,还会影响AI的回复速度。但是如果把历史记录去掉,不跟随用户问题一起发送,则AI会无法理解用户问题中的“他”指的是什么。

三、解决方法

将历史记录与用户问题提炼压缩,将长文本内容压缩成直指问题核心的AI可以理解的短文本。

整个过程其实就是将历史记录与用户提问交给AI,让AI来提炼压缩。此时执行压缩工作的AI可以选用支持长文本的AI,不一定是真正回答问题的AI。

最终发送给AI的问题可能是:

USER:孙悟空是哪一年出生的?

整体流程如下:

四、代码实现

langchain4j的示例:

  1. ChatLanguageModel chatLanguageModel = OpenAiChatModel.builder()
  2. .apiKey(OPENAI_API_KEY)
  3. .build();
  4. // We will create a CompressingQueryTransformer, which is responsible for compressing
  5. // the user's query and the preceding conversation into a single, stand-alone query.
  6. // This should significantly improve the quality of the retrieval process.
  7. QueryTransformer queryTransformer = new CompressingQueryTransformer(chatLanguageModel);
  8. ContentRetriever contentRetriever = EmbeddingStoreContentRetriever.builder()
  9. .embeddingStore(embeddingStore)
  10. .embeddingModel(embeddingModel)
  11. .maxResults(2)
  12. .minScore(0.6)
  13. .build();
  14. // The RetrievalAugmentor serves as the entry point into the RAG flow in LangChain4j.
  15. // It can be configured to customize the RAG behavior according to your requirements.
  16. // In subsequent examples, we will explore more customizations.
  17. RetrievalAugmentor retrievalAugmentor = DefaultRetrievalAugmentor.builder()
  18. .queryTransformer(queryTransformer)
  19. .contentRetriever(contentRetriever)
  20. .build();
  21. AiServices.builder(Assistant.class)
  22. .chatLanguageModel(chatLanguageModel)
  23. .retrievalAugmentor(retrievalAugmentor)
  24. .chatMemory(MessageWindowChatMemory.withMaxMessages(10))
  25. .build();

更多实践代码可以到GitHub - langchain4j-aideepin上查看

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/944652
推荐阅读
相关标签
  

闽ICP备14008679号