当前位置: 首页 > wzjs >正文

网站广告做的好的企业案例分析如何建立网站平台的步骤

网站广告做的好的企业案例分析,如何建立网站平台的步骤,小型网上商城系统,职教mooc建设委员会网站1.简介 大模型(LLM)本身是无状态的,也就是说它本上不会保存之前的交互信息,所以在需要LLM有记忆功能时,我们就需要借助外部工具来存储历史的对话信息,从而达到一定程度上的记忆功能。 Spring AI 也提供了聊…

在这里插入图片描述


1.简介

大模型(LLM)本身是无状态的,也就是说它本上不会保存之前的交互信息,所以在需要LLM有记忆功能时,我们就需要借助外部工具来存储历史的对话信息,从而达到一定程度上的记忆功能。
Spring AI 也提供了聊天记忆功能ChatMemory,允许使用 LLM 跨多个交互存储和检索信息。

示例:为什么需要对话记忆?

LLM 本质是无状态的——每次请求独立处理,无法自动关联历史上下文。例如:

chatModel.call("我叫张三");  
chatModel.call("我是谁?"); // 模型无法回答“张三”  

2.核心组件

Spring AI自身实现了一个ChatMemory->InMemoryChatMemory,它使用内存来保留对话信息,并使用一个MessageWindowChatMemory实现来管理对话历史记录。

ChatMemory接口是聊天记忆功能的底层抽象,实现此接口则可对ChatMemory示例做扩展。消息的底层存储由 处理ChatMemoryRepository,其唯一职责是存储和检索消息ChatMemory实现决定保留哪些消息以及何时删除它们。策略示例包括保留最后 N 条消息、将消息保留一段时间或将消息保留到一定的令牌限制。

@Autowired
private ChatMemory chatMemory;

自动注入ChatMemory。具体的使用示例已经在Spring AI开发跃迁指南(第二章:急速上手3——Spring AI Advisor核心原理、源码讲解及使用实例)有完整的实例。

3.记忆存储类型

存储类型主要分为四种,除了上面介绍的内存存储外还存在JdbcCassandraNeo4j。下面我们主要讲后三种。

3.1.JdbcChatMemoryRepository

JdbcChatMemoryRepository是一个内置实现,使用 JDBC 将消息存储在关系数据库中。支持多种数据库,适用于需要持久存储聊天记忆的应用程序。

pom依赖:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-chat-memory-repository-jdbc</artifactId>
</dependency>

自动配置:

ChatMemoryRepository chatMemoryRepository = JdbcChatMemoryRepository.builder().jdbcTemplate(jdbcTemplate).dialect(new PostgresChatMemoryDialect()).build();ChatMemory chatMemory = MessageWindowChatMemory.builder().chatMemoryRepository(chatMemoryRepository).maxMessages(10).build();

支持的数据库包括:

  • PostgreSQL

  • MySQL / MariaDB

  • SQL Server

  • HSQLDB

配置属性:

属性描述默认值
spring.ai.chat.memory.repository.jdbc.initialize-schema控制何时初始化架构。值:(embedded默认)always、、neverembedded
spring.ai.chat.memory.repository.jdbc.schema用于初始化的架构脚本的位置。支持classpath:URL 和平台占位符。classpath:org/springframework/ai/chat/memory/repository/jdbc/schema-@@platform@@.sql
spring.ai.chat.memory.repository.jdbc.platform如果使用 @@platform@@ 占位符,则在初始化脚本中使用的平台。自动检测

初始化配置:
自动配置将SPRING_AI_CHAT_MEMORY在启动时使用数据库供应商特定的 SQL 脚本自动创建表。默认情况下,模式初始化仅适用于嵌入式数据库(H2、HSQL、Derby 等)。可以使用以下属性控制架构初始化spring.ai.chat.memory.repository.jdbc.initialize-schema

spring.ai.chat.memory.repository.jdbc.initialize-schema=embedded # Only for embedded DBs (default)
spring.ai.chat.memory.repository.jdbc.initialize-schema=always   # Always initialize
spring.ai.chat.memory.repository.jdbc.initialize-schema=never    # Never initialize (useful with Flyway/Liquibase)

3.2.CassandraChatMemory

CassandraChatMemoryRepository使用 Apache Cassandra 存储消息。它适用于需要持久存储聊天内存的应用程序,尤其适用于需要高可用性、持久性、可扩展性以及利用生存时间 (TTL) 功能的应用程序。

pom依赖:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-chat-memory-repository-cassandra</artifactId>
</dependency>

自动配置:

@Autowired
CassandraChatMemoryRepository chatMemoryRepository;ChatMemory chatMemory = MessageWindowChatMemory.builder().chatMemoryRepository(chatMemoryRepository).maxMessages(10).build();

配置属性:

属性描述默认值
spring.cassandra.contactPoints启动集群发现的主机127.0.0.1
spring.cassandra.port要连接的 Cassandra 本机协议端口9042
spring.cassandra.localDatacenter要连接的 Cassandra 数据中心datacenter1
spring.ai.chat.memory.cassandra.time-to-liveCassandra 中写入的消息的生存时间 (TTL)
spring.ai.chat.memory.cassandra.keyspaceCassandra 键空间springframework
spring.ai.chat.memory.cassandra.messages-columnCassandra 消息的列名springframework
spring.ai.chat.memory.cassandra.tableCassandra 表ai_chat_memory
spring.ai.chat.memory.cassandra.initialize-schema是否在启动时初始化模式。true

初始化配置: 自动配置将自动创建ai_chat_memory表。
通过将设置属性spring.ai.chat.memory.repository.cassandra.initialize-schema=false来禁用架构初始化。

3.2.Neo4j ChatMemoryRepository

使用 Neo4j 将聊天消息作为节点和关系存储在属性图数据库中。它适用于希望利用 Neo4j 的图功能实现聊天内存持久化的应用程序。

pom依赖:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-chat-memory-repository-neo4j</artifactId>
</dependency>

自动配置:

@Autowired
Neo4jChatMemoryRepository chatMemoryRepository;ChatMemory chatMemory = MessageWindowChatMemory.builder().chatMemoryRepository(chatMemoryRepository).maxMessages(10).build();

配置属性:

属性描述默认值
spring.ai.chat.memory.repository.neo4j.sessionLabel存储对话会话的节点的标签Session
spring.ai.chat.memory.repository.neo4j.messageLabel存储消息的节点的标签Message
spring.ai.chat.memory.repository.neo4j.toolCallLabel存储工具调用的节点的标签(例如在助手消息中)ToolCall
spring.ai.chat.memory.repository.neo4j.metadataLabel存储消息元数据的节点的标签Metadata
spring.ai.chat.memory.repository.neo4j.toolResponseLabel存储工具响应的节点的标签ToolResponse
spring.ai.chat.memory.repository.neo4j.mediaLabel存储与消息相关的媒体的节点的标签Media

Neo4j 代码库将自动确保为对话 ID 和消息索引创建索引,以优化性能。如果使用自定义标签,系统也会为这些标签创建索引。无需初始化架构,但您应确保您的应用程序可以访问 Neo4j 实例。

4.Spring AI集成的ChatClient中的记忆

ChatClient中的封装的聊天记忆主要分为三个即MessageChatMemoryAdvisor、
PromptChatMemoryAdvisor和VectorStoreChatMemoryAdvisor其为Spring AI提供的Advisor的一部分。其具体的试用流程及原理请参考:Spring AI开发跃迁指南(第二章:急速上手3——Spring AI Advisor核心原理、源码讲解及使用实例)

http://www.dtcms.com/wzjs/77466.html

相关文章:

  • ps专门做兼职的网站大数据营销名词解释
  • 在国内做av网站百度模拟搜索点击软件
  • 网站开发主管岗位职责说明书广西壮族自治区人民医院
  • 苏州建行网站首页广州疫情最新情况
  • 快乐彩网站做湖南seo优化报价
  • 饰品网站建设规划书济南做网站公司哪家好
  • 域名解析管理网站seo是一种利用搜索引擎
  • 网站建设的提成网站免费推广软件
  • html网站怎么做下载班级优化大师
  • 龙岗附近做网站公司哪家好太原seo关键词优化
  • 北京附近做网站的公司百度学术论文官网入口
  • 衡水做网站公司外包公司被辞退有补偿吗
  • 有没有单纯做旅游攻略的网站焊工培训ppt课件
  • 什么是网络营销最重要的工具20条优化措施
  • discuz 同步wordpressseo招聘网
  • 创口贴设计网站官网网络营销十大成功案例
  • 亚马逊网站建设进度计划东莞网站营销
  • 做哈尔滨本地门户网站赚钱吗制作网站用什么软件
  • 秦皇岛手机网站建设如何修改百度上面的门店号码
  • 做网站学什么专业关键词网站排名查询
  • 个人备案网站经营百度推广登录网址
  • 公司做网站需要准备什么资料如何制作网页
  • 教你怎么做垃圾网站seo营销的概念
  • 网站运营难做嘛在百度上怎么发布广告
  • .net招聘网站怎么做seo排名策略
  • 在网站里文本链接怎么做湖南优化公司
  • 湘潭商城网站建设定制万网官网入口
  • 昆明做网站建设怎么样网站优化企业排名
  • 酒店如何做网络营销seo课
  • 建设银行官方网站是什么线上推广工作内容