• 【LLM】搭建RAG


    参考文章
    LangChain之Memory

    搭建RAG

    LLM 接入 LangChain

    构建检索问答链

    部署知识库助手

    思考

    Langchain memory分类

    在LangChain中,Memory指的是大语言模型(LLM)的短期记忆。为什么是短期记忆?那是因为LLM训练好之后(获得了一些长期记忆),它的参数便不会因为用户的输入而发生改变。当用户与训练好的LLM进行对话时,LLM会暂时记住用户的输入和它已经生成的输出,以便预测之后的输出,而模型输出完毕后,它便会“遗忘”之前用户的输入和它的输出。因此,之前的这些信息只能称作为LLM的短期记忆。

    LangChain提供了如下几种短期记忆管理的方式:BufferMemory、BufferWindowMemory、ConversionMemory、VectorStore-backed Memory等

    1.BufferMemory,它是直接将之前的对话,完全存储下来。这样在每一轮新的对话中,都会将原来的所有对话传递给LLM。

    2.BufferWindowMemory,它是将最近的K组对话存储下来,这样在每一轮新的对话中将这K组对话传递给LLM。

    3.VectorStore-backed Memory,它是将所有之前的对话通过向量的方式存储到VectorDB(向量数据库)中,在每一轮新的对话中,会根据用户的输入信息,匹配向量数据库中最相似的K组对话。

    4.ConversionMemory,它是将对话进行时对对话信息进行摘要,并将当前摘要存储在内存中。然后在新一轮对话中,可以将此摘要作为短期记忆传递给LLM。这种方式对于较长的对话非常有用,因为它是相当于压缩了历史的对话信息,能够将做够多的短期记忆发送给LLM。

    总结

    本节主要是实操内容,将前面三节所学的知识库、model api、langchain组合成一个RAG系统。简单入门了Streamlit框架,尝试发布了自己的第一个RAG应用。
    本次学习中发现Langchain居然有memory功能,上一节学习语义知识库时候想到了一个方案:将用户历史聊天记录处理成向量录入向量知识库中,在新的一轮对话中,用户输入新信息会先匹配向量数据库中最相似的K组对话。这个idea就是LangChain已经实现的VectorStore-backed Memory功能!!!

  • 相关阅读:
    记一次 ClickHouse 性能测试
    gradle-3-(configure篇)
    2022 年牛客多校第九场补题记录
    【C++篇】AVL树
    前端首屏渲染时间的极致优化
    Java--Spring事务
    常见的8个JMeter压测问题
    Kolmogorov-Smirnov正态性检验
    背包问题讨论
    java-php-python-ssm新冠病毒感染者档案信息管理系统计算机毕业设计
  • 原文地址:https://blog.csdn.net/weixin_42914989/article/details/138173984