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

LLMs之KG-RAG:KG-RAG(基于知识图谱的RAG系统)的简介(可以解决多跳问题/同时支持结构化和非结构化数据查询)、经验技巧、案例应用之详细攻略

LLMs之KG-RAG:KG-RAG(基于知识图谱的RAG系统)的简介(可以解决多跳问题/同时支持结构化和非结构化数据查询)、经验技巧、案例应用之详细攻略

背景痛点:传统的基于向量相似度检索的RAG模型回答多环(多步)问题的能力有限,无法同时处理来自多个文档的信息。

解决方案

>> 使用知识图构建结构化的信息存储和表示,每个文档分别进行信息提取,然后通过节点和关系在知识图中连接相关文档,形成一个连通的知识结构。

>> 以知识图为基础,在问题响应阶段生成cypher语言查询来高效检索相关信息。

>> 知识图可以同时存储结构化和非结构化数据,实现结构化和非结构化数据的连接,同时利用向量相似度检索来助力信息检索。

>> 知识图也可以支持链式推理问答模型,指导LLM进行多步骤问题响应。

核心特点

>> 知识图利用节点和关系表示数据,实现不同文档或信息间的关联连接,方便跨文档信息检索

>> 知识图可以高效融合不同类型结构化和非结构化数据。

>> 知识图支持类比思维链式推理问题响应流程。

优势

>> 解决RAG模型响应多环问题的能力不足问题。

>> 提高问题响应效率,减轻在线响应阶段的计算负担。

>> 知识图适用于各种涉及实体关系的应用场景。

>> 协助LLM生成更精准的问题响应。

总之,该文章通过利用知识图来统一存储结构化和非结构化数据,提升RAG模型解决多环问题响应的能力,提高问题响应效率。

目录

KG-RAG的简介

1、RAG的工作原理

向量相似度搜索的实现

多跳问题的挑战

多跳问题的挑战分析

挑战解决策略

2、知识图谱作为高效的信息存储

上下文摘要的执行

利用知识图谱解决组合和总结问题

信息提取管道与知识图谱的结合

使用知识图谱进行多跳问题解决

在查询时利用知识图谱检索信息

3、结合图和文本数据以增强洞察力

结合图和文本数据,通过知识图谱识别实体及其关系,并使用智能搜索工具检索相关信息,如通过Cypher查询或向量相似度搜索,可解决需要综合分析的查询需求

4、在思维连中使用知识图谱

Agent将问题分解为多个子问题→根据每个子问题选择合适的工具,比如问题01采用知识图谱工具来检索→Agent基于问题01的结果重新编写问题02→Agent继续使用各种工具来回答→但会导致响应高延迟

5、使用知识图谱进行RAG应用的原因

RAG应用通过整合多个信息来源构建知识图谱,结合结构化和非结构化数据,实现更精准的答案生成和多跳推理,适用于各种涉及实体关系的应用场景

KG-RAG的相关工具或框架

T1、采用KG-RAG工具

LLMs之RAG:KG-RAG的简介、安装和使用方法、案例应用之详细攻略

T2、自定义实现:采用Tasks检索工具+图Graph查询检索工具(Neo4j图数据库+Cyphe图查询语言)

LLMs之KG-RAG-Agent:基于LangChain框架利用知识图谱(Neo4j构建知识图数据库+Cyphe查询语言)结合RAG技术打造多种工具的Agent进而实现与图知识库对话查询的机器人应用实战案例——导入知识图谱数数据(Neo4j)→基于向量索引和OpenAIEmbeddings构建RetrievalQA并测试相似性搜索→创建一个GraphCypherQAChain的Cyphe图查询式问答系统并并使用知识图谱测试→创建多模态Agent并测试(定义一个工具列表【Tasks/Graph】+创建一个多模态Agent+测试多模态Agent回答问题)

KG-RAG的案例应用

LLMs之KG-RAG-Agent:基于LangChain框架利用知识图谱(Neo4j构建知识图数据库+Cyphe查询语言)结合RAG技术打造多种工具的Agent进而实现与图知识库对话查询的机器人应用实战案例——导入知识图谱数数据(Neo4j)→基于向量索引和OpenAIEmbeddings构建RetrievalQA并测试相似性搜索→创建一个GraphCypherQAChain的Cyphe图查询式问答系统并并使用知识图谱测试→创建多模态Agent并测试(定义一个工具列表【Tasks/Graph】+创建一个多模态Agent+测试多模态Agent回答问题)


KG-RAG的简介

检索增强生成(RAG)应用在集成来自外部来源的数据到LLMs中,回答简单问题方面表现出色。但是,它们在回答涉及将相关信息连接起来的多部分问题时往往遇到困难。这是因为RAG应用需要设计一个数据库,以一种使得查找回答这些类型问题所需的所有片段变得容易的方式存储数据。
知识图谱(KG)非常适合处理复杂的、多部分问题,因为它们将数据存储为节点网络及其之间的关系。这种连接的数据结构使得RAG应用能够高效地从一条信息导航到另一条信息,访问所有相关信息。
使用知识图谱构建RAG应用可提高查询效率,特别是当处理连接的数据时,您可以将任何类型的数据(结构化和非结构化)导入图中,而无需重新设计架构。

参考地址:Knowledge Graphs & LLMs: Multi-Hop Question Answering

1、RAG的工作原理

检索增强生成(RAG)是一种通过从外部数据库检索相关信息并将其合并到生成的输出中来增强LLMs响应的技术。RAG过程很简单。当用户提问时,智能搜索工具在提供的数据库中寻找相关信息。

向量相似度搜索的实现

您可能使用过诸如“与您的PDF聊天”之类的工具,在提供的文档中搜索信息。这些工具大多使用向量相似度搜索来识别包含与用户问题相似数据的文本块。实现非常简单,如下图所示。

PDF(或其他文档类型)首先被拆分成多个文本块。您可以根据文本块的大小或它们之间是否应有任何重叠来使用不同的策略。然后,RAG应用使用文本嵌入模型来生成文本块的向量表示。这是在查询时执行向量相似度搜索所需的所有预处理。最后,在查询时,RAG将用户输入编码为向量,并使用余弦等相似性算法来比较用户输入与嵌入文本块之间的距离。

通常,RAG返回三个最相似的文档,以为LLMs提供上下文,从而增强其生成准确答案的能力。当向量搜索能够识别相关的文本块时,这种方法效果相当不错。

多跳问题的挑战

然而,当LLM需要从多个文档或甚至多个文本块中获取信息来生成答案时,简单的向量相似度搜索可能不足够。例如,考虑以下问题:
前OpenAI员工中有没有人创办了自己的公司?

这个问题是多部分的,因为它包含两个问题:
>> 谁是前OpenAI的员工?
>> 他们中有没有人创办了自己的公司?

回答这类问题是一个多跳问题回答任务,一个问题可以被分解为多个子问题,并且获得准确答案需要检索大量文档。

多跳问题的挑战分析

简单地将文档分块并将其嵌入到数据库中,然后使用简单的向量相似度搜索无法满足多跳问题。原因如下:
>> 在前N个文档中重复的信息:提供的文档不能保证包含回答问题所需的所有信息。例如,前三个相似的文档可能都提到Shariq曾在OpenAI工作过,可能创办了一家公司,而忽略了所有其他曾成为创始人的前员工。
>> 缺少参考信息:根据文本块的大小,某些文本块可能不包含完整的上下文或对文本中提到的实体的引用。重叠文本块可以部分缓解缺少参考信息的问题。还有一些例子,参考信息指向另一篇文档,因此您需要一个共指解析或预处理技术。
>> 难以定义理想的检索文档数N:某些问题需要更多的文档才能使LLM准确,而在其他情况下,大量文档只会增加噪音(和成本)。

在某些情况下,相似性搜索将返回重复的信息,而其他相关信息则因检索信息的低K值或嵌入距离而被忽略。

挑战解决策略

由于检索信息的低K值或嵌入距离,可能会忽略相关信息。因为检索信息的低K值或嵌入距离。显然,简单的向量相似度搜索对多跳问题来说不够。但是,我们可以采用多种策略来回答需要从各种文档中获取信息的多跳问题。

2、知识图谱作为高效的信息存储

如果您密切关注了LLM领域,您可能已经看到了一些将信息压缩以使其在查询时更易于访问的技术。例如,您可以使用LLM提供文档摘要,然后嵌入和存储摘要而不是实际文档。使用此方法,您可以消除许多噪音,获得更好的结果,并减少对提示标记空间的担忧。

上下文摘要的执行

您还可以在读取过程或查询时执行上下文摘要。查询时的上下文压缩更加有指导性,因为它选择与提供的问题相关的上下文。但是,查询期间工作负载越重,用户延迟可能越糟。我们建议尽可能将工作负载移至摄入时间,以提高延迟并避免其他运行时问题。

利用知识图谱解决组合和总结问题

将多个文档组合和总结为单个记录的方法在文献中尚未涉及。这可能是因为存在太多的文档组合需要合并和总结,使得在摄入时间处理所有文档组合的成本过高。知识图谱是解决这个问题的有效方法。

同样的方法也可以用于总结对话历史,以避免遇到令牌限制问题。

我没有看到任何关于将多个文档组合和总结为单个记录的文章。我们可能有太多的文档组合可以合并和总结,使得在摄入时间处理所有文档组合的成本太高。知识图谱解决了这个问题。

信息提取管道与知识图谱的结合

信息提取管道是从非结构化文本中提取结构化信息的过程,与知识图谱结合的优势在于可以单独处理每个文档,并在构建或丰富知识图谱时将来自不同记录的信息连接起来。

信息提取管道已经存在一段时间了。它是从非结构化文本中提取结构化信息的过程,通常以实体和关系的形式。将其与知识图谱结合的美妙之处在于您可以单独处理每个文档。当知识图谱被构建或丰富时,来自不同记录的信息被连接起来。

使用知识图谱进行多跳问题解决

许多新的LLM方法解决多跳问题的方法主要集中在在查询时解决任务。然而,通过预处理数据并将其连接到知识图谱,可以解决许多多跳问题。可以使用LLMs或自定义文本领域模型执行信息提取管道。

知识图谱使用节点和关系来表示数据。在这个例子中,第一个文档提供了Dario和Daniela曾在OpenAI工作的信息,而第二个文档提供了有关他们的Anthropic创业公司的信息。每个记录都被单独处理,但是知识图谱表示连接了数据,使得容易回答跨多个文档的问题。

在查询时利用知识图谱检索信息

在查询时,要从知识图谱检索信息,需要构建适当的Cypher语句。LLMs擅长将自然语言转换为Cypher图查询语言,这使得在查询过程中利用知识图谱成为可能。

大多数较新的LLM方法解决多跳问题的方法主要集中在在查询时解决任务。事实上,许多多跳问题回答问题可以通过读取数据前的预处理并将其连接到知识图谱来解决。您可以使用LLMs或自定义文本领域模型执行信息提取管道。

在查询时从知识图谱检索信息,我们必须构建适当的Cypher语句。幸运的是,LLMs非常擅长将自然语言转换为Cypher图查询语言

智能搜索使用LLM生成适当的Cypher语句从知识图谱检索信息。然后,将信息传递给另一个LLM调用,该调用使用原始问题和提供的信息生成答案。在实践中,您可以使用不同的LLMs来生成Cypher语句和答案,或者您可以在单个LLM上使用各种提示

3、结合图和文本数据以增强洞察力

结合图和文本数据,通过知识图谱识别实体及其关系,并使用智能搜索工具检索相关信息,如通过Cypher查询或向量相似度搜索,可解决需要综合分析的查询需求

有时,您需要结合图和文本数据来查找相关信息。例如,考虑这个问题:
关于Prosper Robotics的创始人的最新消息是什么?

在这个例子中,您希望LLM使用知识图谱结构识别Prosper Robotics的创始人,然后检索最近提到他们的文章。

在知识图谱中,您可以从Prosper Robotics节点开始,遍历到其创始人,然后检索最近提到他们的文章。知识图谱表示了关于实体及其关系的结构化信息,以及关于节点属性的非结构化文本。您还可以使用命名实体识别等自然语言技术将非结构化信息与知识图谱中相关实体连接起来,如MENTIONS关系所示。

当知识图谱包含结构化和非结构化数据时,智能搜索工具可以使用Cypher查询或向量相似度搜索来检索相关信息。在某些情况下,您还可以结合使用两者。例如,您可以从Cypher查询开始,以识别相关文档,然后在这些文档中查找特定信息。

4、思维连中使用知识图谱

Agent将问题分解为多个子问题→根据每个子问题选择合适的工具,比如问题01采用知识图谱工具来检索→Agent基于问题01的结果重新编写问题02→Agent继续使用各种工具来回答→但会导致响应高延迟

LLMs周围另一个引人注目的发展是链式思维问答,特别是带有LLM代理的链式思维问答。

LLM代理可以将问题分解为多个步骤,定义计划,并从提供的任何工具中提取答案。通常,代理工具包括代理可以查询以检索额外信息的API或知识库。

让我们再次考虑相同的问题:
关于Prosper Robotics的创始人的最新消息是什么?

假设您没有文章与其提及的实体之间的明确连接,或者文章和实体位于不同的数据库中。在这种情况下,使用链式思维流的LLM代理将非常有帮助。首先,代理会将问题分解为子问题:
>> Prosper Robotics的创始人是谁?
>> 关于创始人的最新消息是什么?

现在,代理可以决定使用哪种工具。假设它基于知识图谱,这意味着它可以检索结构化信息,如Prosper Robotics的创始人的姓名。代理发现Prosper Robotics的创始人是Shariq Hashme。现在,代理可以使用来自第一个问题的信息重新编写第二个问题
>> 关于Shariq Hashme的最新消息是什么?

代理可以使用一系列工具来生成答案,包括知识图谱、向量数据库、API等。对结构化信息的访问使得LLM应用能够执行需要聚合、过滤或排序的分析工作流程。考虑以下问题:
>> 哪家公司的独立创始人估值最高?
>> 谁创立了最多的公司?

简单的向量相似度搜索在回答这些分析性问题时存在困难,因为它搜索非结构化文本数据,使得难以对数据进行排序或聚合

虽然链式思维展示了LLMs的推理能力,但它并不是最用户友好的技术,因为由于多次LLM调用,响应延迟可能很高。但是,我们仍然对了解更多关于将知识图谱集成到链式思维流中以解决许多用例问题感到非常兴奋。

5、使用知识图谱进行RAG应用的原因

RAG应用通过整合多个信息来源构建知识图谱,结合结构化和非结构化数据,实现更精准的答案生成和多跳推理,适用于各种涉及实体关系的应用场景

RAG应用通常需要从多个来源检索信息以生成准确的答案。虽然文本摘要可能具有挑战性,但将信息以图形格式表示具有几个优点。

通过分别处理每个文档并在知识图谱中连接它们,我们可以构建信息的结构化表示。这种方法使得通过互相关联的文档进行更轻松的遍历和导航,从而实现多跳推理以回答复杂的查询。此外,在摄入阶段构建知识图谱可以减少查询时的工作负载,从而提高延迟。

RAG应用将越来越多地使用结构化和非结构化数据以生成更准确的答案。知识图谱可以轻松吸收各种类型的数据。这种灵活性使其适用于广泛的用例和LLM应用程序,特别是涉及实体之间关系的应用程序(考虑欺诈检测、供应链、主数据管理等)。

KG-RAG的相关工具或框架

T1、采用KG-RAG工具

LLMs之RAG:KG-RAG的简介、安装和使用方法、案例应用之详细攻略

LLMs之RAG:KG-RAG的简介、安装和使用方法、案例应用之详细攻略-CSDN博客

T2、自定义实现:采用Tasks检索工具+图Graph查询检索工具(Neo4j图数据库+Cyphe图查询语言)

LLMs之KG-RAG-Agent:基于LangChain框架利用知识图谱(Neo4j构建知识图数据库+Cyphe查询语言)结合RAG技术打造多种工具的Agent进而实现与图知识库对话查询的机器人应用实战案例——导入知识图谱数数据(Neo4j)→基于向量索引和OpenAIEmbeddings构建RetrievalQA并测试相似性搜索→创建一个GraphCypherQAChain的Cyphe图查询式问答系统并并使用知识图谱测试→创建多模态Agent并测试(定义一个工具列表【Tasks/Graph】+创建一个多模态Agent+测试多模态Agent回答问题)

https://yunyaniu.blog.csdn.net/article/details/137618054

KG-RAG的案例应用

持续更新中……

LLMs之KG-RAG-Agent:基于LangChain框架利用知识图谱(Neo4j构建知识图数据库+Cyphe查询语言)结合RAG技术打造多种工具的Agent进而实现与图知识库对话查询的机器人应用实战案例——导入知识图谱数数据(Neo4j)→基于向量索引和OpenAIEmbeddings构建RetrievalQA并测试相似性搜索→创建一个GraphCypherQAChain的Cyphe图查询式问答系统并并使用知识图谱测试→创建多模态Agent并测试(定义一个工具列表【Tasks/Graph】+创建一个多模态Agent+测试多模态Agent回答问题)

https://yunyaniu.blog.csdn.net/article/details/137618054

相关文章:

LLMs之KG-RAG:KG-RAG(基于知识图谱的RAG系统)的简介(可以解决多跳问题/同时支持结构化和非结构化数据查询)、经验技巧、案例应用之详细攻略

LLMs之KG-RAG:KG-RAG(基于知识图谱的RAG系统)的简介(可以解决多跳问题/同时支持结构化和非结构化数据查询)、经验技巧、案例应用之详细攻略 背景痛点:传统的基于向量相似度检索的RAG模型回答多环(多步)问题的能力有限,无法同时处理来自多个文…...

综合模型及应用(图论学习总结部分内容)

文章目录 前言六、综合模型及应用(以题目总结为主)分层图思想(包括拆点建图) e g 1 : 通信线路 eg1:通信线路 eg1:通信线路​​​[A-Telephone Lines](https://ac.nowcoder.com/acm/contest/1055/A)(蓝书例题) e g 2 : 小雨坐地铁 eg2:小雨坐地铁 eg2:小雨坐地铁​ [1012-小雨坐…...

2025考研专业课、英语、数学、政治视频大全,整理全了!

考研季又到了,备考的小伙伴们,你们准备好了吗? 时间管理 考研是一场与时间的赛跑,合理安排时间,让复习更高效! - 制定详细的学习计划,每天、每周、每月都有明确目标 - ‍♂️ 保持一定的学习…...

设计模式之策略模式(一)

背景: 下单时有很多情况,有的是用户下单,有的是卡密下单,有的是下游下单,有的是需要唤起支付,有的不需要支付,这样就需要写很多下单接口,下面使用策略模式优化这种情况 代码结构 com.example.order ├── controller │ └── OrderController.java ├── service │ …...

常见网络攻击及解决方案

网络安全是开发中常常会遇到的情况,为什么会遇到网络攻击,网络攻击是如何进行的,如何抵御网络攻击,都是我们需要思考的问题。 为什么会遇到网络攻击? 以下是一些主要的因素: 技术漏洞:软件或操…...

【挑战30天首通《谷粒商城》】-【第一天】【10 番外篇】 解决docker 仓库无法访问 + MobaXterm连接VirtualBox虚拟机

文章目录 课程介绍 1、解决docker 仓库无法访问 2、 MobaXterm连接VirtualBox虚拟机 Stage 1:下载MobaXterm选择适合你的版本 Stage 2:vagrant ssh 连接,开启ssh访问 Stage 2-1:su获取root账号权限,输入密码(默认vagra…...

【C++】每日一题 17 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 可以使用回溯法来解决这个问题。首先定义一个映射关系将数字与字母对应起来…...

vue预览PDF文件的几种方法

1.使用iframe标签预览PDF文件 1.1页面结构 html <iframe:src"fileUrl"id"iframeBox"ref"iframeRef"frameborder"0"style"width: 100%; height: 800px"></iframe>1.2 js代码 export default {data() {return {…...

深度学习入门到放弃系列 - 阿里云人工智能平台PAI部署开源大模型chatglm3

通过深度学习入门到放弃系列 - 魔搭社区完成开源大模型部署调用 &#xff0c;大概掌握了开源模型的部署调用&#xff0c;但是魔搭社区有一个弊端&#xff0c;关闭实例后数据基本上就丢了&#xff0c;本地的电脑无法满足大模型的配置&#xff0c;就需要去租用一些高性价比的GPU机…...

GPT-4o,AI实时视频通话丝滑如人类,Plus功能免费可用

不开玩笑&#xff0c;电影《她》真的来了。 OpenAI最新旗舰大模型GPT-4o&#xff0c;不仅免费可用&#xff0c;能力更是横跨听、看、说&#xff0c;丝滑流畅毫无延迟&#xff0c;就像在打一个视频电话。 现场直播的效果更是炸裂&#xff1a; 它能感受到你的呼吸节奏&#xf…...

【优选算法】——Leetcode——202—— 快乐数

目录 1.题目 2. 题⽬分析: 3.简单证明&#xff1a; 4. 解法&#xff08;快慢指针&#xff09;&#xff1a; 算法思路&#xff1a; 补充知识&#xff1a;如何求⼀个数n每个位置上的数字的平⽅和。 总结概括 5.代码实现 1.C语言 2.C 1.题目 202. 快乐数 编写一个算法来…...

华大基因CEPO-尹烨说学习与生活

怎么去面对生活和事业中的不确定性&#xff1f; 尹烨说&#xff0c;人类能够对抗不确定性的唯一的办法是&#xff0c;去让自己充电。 主持人问他&#xff0c;“和你同年的也有很多人&#xff0c;他们也可能也在学习&#xff0c;你怎么就能够脱颖而出呢&#xff1f;” 他说&am…...

C#中json数据序列化和反序列化的最简单方法(C#对象和字符串的相互转换)

文章目录 将C#对象转换为json字符串Newtonsoft模块的安装用Newtonsoft将对象转换为json字符串 将json字符串转换为C#对象 将C#对象转换为json字符串 本介绍将基于C#中的第三方库Newtonsoft进行&#xff0c;因此将分为Newtonsoft模块的安装和使用两部分。该模块的优势在于只需要…...

logback 日志脱敏

工具类 CustomLogbackPatternLayoutEncoder.java import ch.qos.logback.classic.encoder.PatternLayoutEncoder;public class CustomLogbackPatternLayoutEncoder extends PatternLayoutEncoder {/*** 正则替换规则*/private LogbackReplaces replaces;/*** 使用自定义 MyLog…...

element-ui的表单中,输入框、级联选择器的长度设置

使用<el-col>控制输入框的长度 <el-form-item label"姓名" label-width"80px"><el-col :span"15"><el-input v-model"form.name" autocomplete"off"></el-input></el-col></el-form…...

深入了解 npm:Node.js 包管理工具详解

文章目录 一、npm 基本概念1.1 什么是 npm&#xff1f;1.2 package.json 文件 二、npm 常用命令2.1 初始化项目2.2 安装依赖2.2.1 安装单个包2.2.2 全局安装包2.2.3 安装开发依赖 2.3 移除依赖2.4 更新依赖2.5 查看已安装的包2.6 发布包 三、npm 高级用法3.1 使用 npm scripts3…...

记一次跨域问题

线上跨域问题&#xff0c;在自己配置确认没问题下&#xff0c;要及时找运维看看是不是nginx配置问题。 两个方面&#xff1a; 项目代码 nginx配置 SpringBoot 解决跨域问题的 5 种方案&#xff01; SpringBoot解决CORS跨域问题 SpringBoot-实现CORS跨域原理及解决方案...

第9章 负载均衡集群日常维护

一个设计良好的高可用负载均衡集群&#xff0c;交付使用以后并不能一劳永逸。欲使其高效、稳定、持续对外服务&#xff0c;日常维护必不可少。 对于高可用负载均衡集群来说&#xff0c;有两种类型的维护形式&#xff1a;常规性维护与突发性维护。突发性维护一般指故障处理&…...

鸿蒙内核源码分析(消息封装篇) | 剖析LiteIpc(上)进程通讯内容

基本概念 LiteIPC是OpenHarmony LiteOS-A内核提供的一种新型IPC&#xff08;Inter-Process Communication&#xff0c;即进程间通信&#xff09;机制&#xff0c;为轻量级进程间通信组件&#xff0c;为面向服务的系统服务框架提供进程间通信能力&#xff0c;分为内核实现和用户…...

Charger之三动态电源路径管理(DPPM)

-----本文简介----- 主要内容包括&#xff1a; 领资料&#xff1a;点下方↓名片关注回复&#xff1a;粉丝群 硬件之路学习笔记公众号 Charger的动态电源路径管理&#xff08;DPPM&#xff09; 前篇内容&#xff1a;①电池管理IC&#xff08;Charger&#xff09;了解一下&…...

spring boot使用HttpServletResponse实现sse后端流式输出消息

1.以前只是看过SSE的相关文章&#xff0c;没有具体实践&#xff0c;这次接入AI大模型使用到了流式输出&#xff0c;涉及到给前端流式返回&#xff0c;所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...

Linux 内存管理调试分析:ftrace、perf、crash 的系统化使用

Linux 内存管理调试分析&#xff1a;ftrace、perf、crash 的系统化使用 Linux 内核内存管理是构成整个内核性能和系统稳定性的基础&#xff0c;但这一子系统结构复杂&#xff0c;常常有设置失败、性能展示不良、OOM 杀进程等问题。要分析这些问题&#xff0c;需要一套工具化、…...

VUE3 ref 和 useTemplateRef

使用ref来绑定和获取 页面 <headerNav ref"headerNavRef"></headerNav><div click"showRef" ref"buttonRef">refbutton</div>使用ref方法const后面的命名需要跟页面的ref值一样 const buttonRef ref(buttonRef) cons…...

【向量库】Weaviate 搜索与索引技术:从基础概念到性能优化

文章目录 零、概述一、搜索技术分类1. 向量搜索&#xff1a;捕捉语义的智能检索2. 关键字搜索&#xff1a;精确匹配的传统方案3. 混合搜索&#xff1a;语义与精确的双重保障 二、向量检索技术分类1. HNSW索引&#xff1a;大规模数据的高效引擎2. Flat索引&#xff1a;小规模数据…...

JS的传统写法 vs 简写形式

一、条件判断与逻辑操作 三元运算符简化条件判断 // 传统写法 let result; if (someCondition) {result yes; } else {result no; }// 简写方式 const result someCondition ? yes : no;短路求值 // 传统写法 if (condition) {doSomething(); }// 简写方式 condition &…...

论文笔记:Large Language Models for Next Point-of-Interest Recommendation

SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字&#xff0c;这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息&#xff0c;缺乏对上下文信息提供的语义概念的理解 ——>使用…...

成工fpga(知识星球号)——精品来袭

&#xff08;如需要相关的工程文件请关注知识星球&#xff1a;成工fpga&#xff0c;https://t.zsxq.com/DMeqH&#xff0c;关注即送200GB学习资料&#xff0c;链接已置顶&#xff01;&#xff09; 《孩子都能学会的FPGA》系列是成工完成的第一个系列&#xff0c;也有一年多的时…...

SpringBoot离线应用的5种实现方式

在当今高度依赖网络的环境中&#xff0c;离线应用的价值日益凸显。无论是在网络不稳定的区域运行的现场系统&#xff0c;还是需要在断网环境下使用的企业内部应用&#xff0c;具备离线工作能力已成为许多应用的必备特性。 本文将介绍基于SpringBoot实现离线应用的5种不同方式。…...

php apache构建 Web 服务器

虚拟机配置流程winsever2016配置Apache、Mysql、php_windows server 2016配置web服务器-CSDN博客 PHP 和 Apache 通过 ​​模块化协作​​ 共同构建 Web 服务器&#xff0c;以下是它们的交互机制和工作流程&#xff1a; ​​一、核心组件分工​​ 组件角色​​Apache​​Web …...

Python学习(7) ----- Python起源

&#x1f40d;《Python 的诞生》&#xff1a;一段圣诞假期的奇妙冒险 &#x1f4cd;时间&#xff1a;1989 年圣诞节 在荷兰阿姆斯特丹的一个寒冷冬夜&#xff0c;灯光昏黄、窗外飘着雪。一个程序员 Guido van Rossum 正窝在家里度假——没有会议、没有项目、没有 bug&#xf…...