Langchain4j 整合MongoDB 實現會話持久化存儲詳解

目錄

一、前言

二、大模型會話記憶介紹

2.1 AI 大模型會話記憶是什么

2.2 大模型會話記憶常用實現方案

2.3 LangChain4j 會話記憶介紹

三、大模型常用會話存儲數據庫介紹

3.1 常用的會話存儲數據庫

3.2 MongoDB 簡介

3.2.1 MongoDB 是什么

3.3 為什么選擇MongoDB 作為會話存儲數據庫

四、環境準備

4.1 搭建 MongoDB

4.1.1 獲取鏡像

4.1.2 啟動容器

4.1.3 連接與使用mongodb

4.2 springboot 整合MongoDB

4.2.1 添加mongodb 依賴

4.2.2 添加配置文件

4.2.3 添加一個實體類

4.2.4 添加測試接口

4.2.5 效果測試

五、Langchain4j 整合MongoDB會話存儲案例演示

5.1 ChatMemoryStore 說明

5.2 添加配置文件

5.3 自定義CahtMemory的配置類

5.4 自定義ChatMemoryProvider

5.5 添加自定義 Assistant

5.6 增加測試接口

5.7 效果測試

五、寫在文末


一、前言

與大模型對話時,細心的伙伴們會發現,前面跟大模型聊的一句話,后面再基于這句話繼續問問題的時候,仍然可以得到預期的回答,這就是大模型的記憶能力。什么是記憶?默認情況下向大模型每次發起的提問都是新的,大模型無法把每次對話形成記憶,也無法根據對話上下文給出人性化的答案。比如:第一次提一個問題,大模型給出了一個回答列表,當我再次提問這個回答列表中的一個問題時,它就不知道我在說什么了,因為大模型已經失去了上一次的提問記憶。所以讓智能體(如AI助手、機器人、虛擬角色等)擁有記憶功能不僅能提升交互體驗,還能增強其功能性、適應性和長期價值。

二、大模型會話記憶介紹

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95675.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95675.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95675.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL 常用 OVER() 窗口函數介紹

1. sum() over() 做組內數據累加在 SQL 中想實現不同分組內數據累加,可以通過 sum() over() PARTITION BY ORDER BY 結合實現。這種方式能同時滿足多維度分組且組內累加的需求,示例如下:假設我們有一張 sales 表,表中存儲著…

OpenRouter:一站式 AI 模型調用平臺,免費暢享千問、DeepSeek 等頂級模型

歡迎來到我的博客,代碼的世界里,每一行都是一個故事🎏:你只管努力,剩下的交給時間 🏠 :小破站 OpenRouter:一站式 AI 模型調用平臺,免費暢享千問、DeepSeek 等頂級模型前…

SpringBoot 整合 Kafka 的實戰指南

引言: 本文總字數:約 9800 字預計閱讀時間:40 分鐘 為什么 Kafka 是高吞吐場景的首選? 在當今的分布式系統中,消息隊列已成為不可或缺的基礎設施。面對不同的業務場景,選擇合適的消息隊列至關重要。目前…

OpenCV 實戰篇——如何測算出任一副圖片中的物體的實際尺寸?傳感器尺寸與像元尺寸的關系?

文章目錄1 如何測算出任一副圖片中的物體的實際尺寸2 傳感器尺寸與像元尺寸的關系3 Max Frame Rate最大幀率4 為什么要進行相機標定?相機標定有何意義?5 基于相機模型的單目測距--普通相機1 如何測算出任一副圖片中的物體的實際尺寸 物體尺寸測量的思路是找一個確定尺寸的物…

Java并發鎖相關

鎖相關 ?1. 什么是可重入鎖?Java 中如何實現??? ?答?: 可重入鎖允許一個線程多次獲取同一把鎖(即遞歸調用時無需重新競爭鎖)。 ?關鍵點?:防止死鎖,避免線程因重復請求已持有的鎖而阻塞。…

Pie Menu Editor V1.18.7.exe 怎么安裝?詳細安裝教程(附安裝包)?

??Pie Menu Editor V1.18.7.exe? 是一款用于創建和編輯 ?餅圖菜單(Pie Menu)?? 的工具軟件,通常用于游戲開發、UI設計、3D建模(如 Blender 等)、或自定義軟件操作界面。 一、準備工作 ?下載文件? 下載了 ?Pi…

基于Spark的中文文本情感分析系統研究

引言 1.1 研究背景與意義 隨著互聯網的普及和社交媒體的興起、特別是自媒體時代的來臨,網絡文本數據呈現爆炸式增長。這些文本數據蘊含著豐富的用戶情感信息,如何有效地挖掘和利用這些信息,對于了解輿情動態、改進客戶服務、輔助決策分析具…

Simulink子系統、變體子系統及封裝知識

1.引言 文章三相新能源并網系統序阻抗模型——序阻抗分析器IMAnalyzer介紹了一種用于分析和掃描序阻抗的軟件。其中,在序阻抗掃頻操作過程中,用到了一個擾動注入、測量和運算工具【IMtool】,它外表長這樣: 內部長這樣&#xff1a…

高階組件介紹

高階組件約定俗成以with開頭 import React, { useEffect } from react; import { TouchableOpacity, Image, StyleSheet } from react-native;type IReactComponent React.ClassicComponentClass| React.ComponentClass| React.FunctionComponent| React.ForwardRefExoticComp…

C++ STL系列-02.泛型入門

C STL系列-02.泛型入門C中的泛型編程主要通過模板(template)實現。模板允許我們編寫與類型無關的代碼,是一種將類型作為參數進行編程的方式。在C中,模板分為函數模板和類模板。 1. 函數模板函數模板允許我們定義一個函數&#xff…

高效管理網絡段和端口集合的工具之ipset

目錄 1. 核心命令速查 2. 集合類型 3. 實戰案例:使用 ipset 封禁 IP 案例 1:基礎黑名單封禁(手動添加) 案例 2:自動過期和解封 案例 3:封禁 IP 和端口組合 案例 4:白名單模式 案例 5&am…

實例和對象的區別

對象(Object)是一個概念,它表示“某個類的一個成員”,是“邏輯上的個體”。實例(Instance)是一個現實,指的是在內存中真正分配了空間的對象。實例一定是對象,但對象不一定是實例。例…

Win10 Chrome認不出新Emoji?兩個擴展搞定顯示與輸入

前言 用Win10電腦在Chrome里發消息、刷網頁時,你是否遇到過這樣的尷尬:別人發的、或者頁面顯示的 Emoji,在你屏幕上變成了空白方框,像“文字里缺了一塊拼圖”?其實這不是Chrome的錯,也不用換電腦&#xff0…

Golang中逃逸現象, 變量“何時棧?何時堆?”

目錄 什么是棧 什么是堆 棧 vs 堆(核心區別) GO編譯器的逃逸分析 什么是逃逸分析? 怎么看逃逸分析結果? 典型“會逃逸”的場景 閉包捕獲局部變量 返回或保存帶有“底層存儲”的容器 經由接口/反射/fmt 等導致裝箱或被長…

MySQL入門指南:從安裝到工作原理

什么是MySQL MySQL是一個開源的關系型數據庫管理系統,由瑞典MySQL AB公司開發(目前屬于Oracle公司),被廣泛地應用在大中小型網站中 MySQL是一個小型的開源的關系型數據庫管理系統,與其他大型數據庫管理系統例如&…

dask.dataframe.shuffle.set_index中獲取 divisions 的步驟分析

dask.dataframe.shuffle.set_index 中獲取 divisions 的步驟分析 主要流程概述 在 set_index 函數中,當 divisionsNone 時,系統需要通過分析數據來動態計算分區邊界。這個過程分為以下幾個關鍵步驟: 1. 初始檢查和準備 if divisions is None:…

ai生成ppt工具有哪些?10款主流AI生成PPT工具盤點

隨著人工智能技術的飛速發展,AI生成PPT工具逐漸成為職場人士、學生和創作者提升效率的得力助手。這類工具通過智能算法,能夠快速將文本、數據或創意轉化為結構化、視覺化的演示文稿,大幅節省設計時間。1、AiPPT星級評分:★★★★★…

Qt多線程編程學習

Qt多線程編程學習 1. 項目概述 本項目展示了Qt中多線程編程的基本用法,通過繼承QThread類創建自定義線程,并演示了線程的啟動、執行和銷毀過程。項目包含一個簡單的用戶界面,用戶可以通過按鈕控制線程的啟動和結束。 1.1 項目結構 項目包含以…

加密貨幣武器化:惡意npm包利用以太坊智能合約實現隱蔽通信

ReversingLabs研究人員發現兩個惡意npm包利用以太坊(Ethereum)智能合約隱藏并傳播惡意軟件。這兩個名為colortoolsv2和mimelib2的軟件包于2025年7月被識別,展現了開源安全攻防戰中的新戰術。惡意軟件包偽裝成實用工具攻擊活動始于7月7日發布的…

Spring Boot 全局字段處理最佳實踐

在日常開發中,我們總會遇到一些瑣碎但又無處不在的字段處理需求:? 請求處理: 用戶提交的表單,字符串前后帶了多余的空格,需要手動 trim()。? 響應處理: 返回給前端的 BigDecimal 金額,因為精度問題導致JS處理出錯&am…