蓟州农家院如何做网站/石家庄网络营销网站推广

蓟州农家院如何做网站,石家庄网络营销网站推广,西乡做网站,边做边爱mp3在线播放免费观看文章目录 FastGPT 引申:借鉴 FastGPT 基于MySQL ES 实现知识库(含表结构以及核心代码)一、整体思路二、存储结构2.1 MySQL 表结构(1) knowledge_base_dataset(2) knowledge_base_data(3) knowledge_base_index(4) ai_kb_relation 2.2 Elasti…

文章目录

  • FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)
    • 一、整体思路
    • 二、存储结构
      • 2.1 MySQL 表结构
        • (1) knowledge_base_dataset
        • (2) knowledge_base_data
        • (3) knowledge_base_index
        • (4) ai_kb_relation
      • 2.2 Elasticsearch Mapping 结构
        • (1) ES索引
        • (2) 字段说明
    • 三、代码实现
      • 3.1 调用 Embedding 服务
      • 3.2 向量检索(ES KNN 查询)
      • 3.3 RRF 排序(融合向量检索和文本检索结果)
    • 四、总结

FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)

一、整体思路

  • 知识库查询能力:引入 Elasticsearch (ES) 提供向量存储和检索能力。
  • 三层逻辑结构
    • 数据集:使用模块 ID 关联应用。
    • 数据:存储具体的知识内容。
    • 索引:提供高效的查询能力。

二、存储结构

2.1 MySQL 表结构

(1) knowledge_base_dataset

存储数据集基本信息

字段名类型描述
idBIGINT主键
typeINT0:手动数据集
nameVARCHAR数据集名称
es_index_nameVARCHARES 索引名称
extract_qa_promptTEXT抽取 QA 问答对 Prompt
extract_summary_promptTEXT抽取摘要 Prompt
extract_param_promptTEXT抽取参数 Prompt
is_deletedTINYINT逻辑删除标志
(2) knowledge_base_data

存储具体知识数据项

字段名类型描述
idBIGINT主键
dataset_idBIGINT关联 dataset
main_contentTEXT主要内容
auxiliary_dataTEXT辅助数据
is_deletedTINYINT逻辑删除标志
(3) knowledge_base_index

存储索引项

字段名类型描述
idBIGINT主键
data_idBIGINT关联 data 表主键
index_typeINT0-默认,1-用户指定,3-提取问题,4-相关摘要
index_contentTEXT索引内容
(4) ai_kb_relation

存储数据集与应用关联

字段名类型描述
idBIGINT主键
module_idBIGINT关联的模块 ID
dataset_idBIGINT知识库数据集 ID

2.2 Elasticsearch Mapping 结构

(1) ES索引

存储知识数据的向量索引:ai_knowledge

{"mappings": {"properties": {"data_id": {"type": "long","index": true},"index_id": {"type": "long","index": true},"dataset_id": {"type": "long","index": true},"vector_index": {"type": "dense_vector","dims": 1024,"index": true,"similarity": "cosine"},"text_index": {"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_smart"}}}
}
(2) 字段说明
字段名称类型说明
data_idlong关联 knowledge_base_data 主键 ID
index_idlong关联 knowledge_base_index 主键 ID
dataset_idlong关联 knowledge_base_dataset 主键 ID
vector_indexdense_vector1024 维度稠密向量,支持余弦相似度计算
text_indextext采用 ik_max_word 分词器进行索引

三、代码实现

3.1 调用 Embedding 服务

public List<Float> getVector(String text) {ResponseEntity responseEntity = xxxx;if (responseEntity != null && responseEntity.getCode() == 0) {List<List<Double>> vectorList = (List<List<Double>>) responseEntity.getData();if (vectorList != null && !vectorList.isEmpty()) {return vectorList.get(0).stream().map(Double::floatValue).collect(Collectors.toList());}}return null;
}

3.2 向量检索(ES KNN 查询)

public List<Knowledge> searchByVector(List<Float> vector) throws IOException {log.info("Searching knowledge with vector similarity using KNN");try {return client.search(s -> s.index(INDEX_NAME).knn(k -> k.field("vector_index").queryVector(vector).k(DEFAULT_SIZE).numCandidates(100)),Knowledge.class).hits().hits().stream().map(Hit::source).collect(Collectors.toList());} catch (Exception e) {log.error("Error searching knowledge by vector: {}", e.getMessage(), e);throw e;}
}

3.3 RRF 排序(融合向量检索和文本检索结果)

private Map<String, Double> calculateRRFScores(List<Hit<KnowledgeCommon>> vectorHits,List<Hit<KnowledgeCommon>> textHits) {Map<String, Double> rrfScores = new HashMap<>();int rank = 1;for (Hit<KnowledgeCommon> hit : vectorHits) {String id = hit.id();double score = VECTOR_WEIGHT * (1.0 / (rank + RRF_CONSTANT));rrfScores.put(id, rrfScores.getOrDefault(id, 0.0) + score);rank++;}rank = 1;for (Hit<KnowledgeCommon> hit : textHits) {String id = hit.id();double score = TEXT_WEIGHT * (1.0 / (rank + RRF_CONSTANT));rrfScores.put(id, rrfScores.getOrDefault(id, 0.0) + score);rank++;}return rrfScores;
}

四、总结

  • 采用 MySQL 存储基础数据,ES 存储向量及文本索引
  • ES 结合 KNN 和分词搜索进行知识检索
  • 使用 RRF 算法融合向量和文本搜索结果,提高查询质量

此方案支持灵活的知识管理和高效检索,可扩展至更大规模的知识库应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习(十四)pandas库入门手册

目录 一、安装与导入二、核心数据结构2.1 Series 类型&#xff08;一维数组&#xff09;2.2 DataFrame 类型&#xff08;二维数组&#xff09; 三、数据读取与写入3.1 读取 CSV 和 Excel 文件3.2 写入数据 四、数据清洗与处理4.1 处理缺失值4.2 数据筛选4.3 数据排序 五、数据分…

【Python 数据结构 4.单向链表】

目录 一、单向链表的基本概念 1.单向链表的概念 2.单向链表的元素插入 元素插入的步骤 3.单向链表的元素删除 元素删除的步骤 4.单向链表的元素查找 元素查找的步骤 5.单向链表的元素索引 元素索引的步骤 6.单向链表的元素修改 元素修改的步骤 二、Python中的单向链表 ​编辑 三…

第1章:项目概述与环境搭建

第1章&#xff1a;项目概述与环境搭建 学习目标 了解YunChangAction灵感记录应用的整体架构和功能掌握SwiftUI开发环境的配置方法创建项目基础结构并理解文件组织方式实现应用的启动屏幕和基本主题设置 理论知识讲解 灵感记录应用概述 灵感记录应用是一种专门设计用来帮助…

全球首创!微软发布医疗AI助手,终结手写病历时代

今天凌晨&#xff0c;微软发布了医疗界首个用于临床工作流程的AI助手Microsoft Dragon Copilot。 Dragon Copilot是基于语音文本的混合架构&#xff0c;能够将医生的语音或临床口述内容实时转换为文本。例如&#xff0c;医生可以通过语音输入患者的病历信息、医嘱或诊断结果&a…

[自动驾驶-传感器融合] 多激光雷达的外参标定

文章目录 引言外参标定原理ICP匹配示例参考文献 引言 多激光雷达系统通常用于自动驾驶或机器人&#xff0c;每个雷达的位置和姿态不同&#xff0c;需要将它们的数据统一到同一个坐标系下。多激光雷达外参标定的核心目标是通过计算不同雷达坐标系之间的刚性变换关系&#xff08…

Blazor-路由模板(下)

路由约束 类型约束 我们这里使用{id:int}限制路由&#xff0c;id为int类型&#xff0c;并且路由参数 id 对应的 Id 属性也必须是 int 类型。我们试试能否正常访问 page "/demoPage/{id:int}" <h3>demoPage</h3> <h2>路由参数Id&#xff1a;Id&l…

多线程-JUC源码

简介 JUC的核心是AQS&#xff0c;大部分锁都是基于AQS扩展出来的&#xff0c;这里先结合可重入锁和AQS&#xff0c;做一个讲解&#xff0c;其它的锁的实现方式也几乎类似 ReentrantLock和AQS AQS的基本结构 AQS&#xff0c;AbstractQueuedSynchronizer&#xff0c;抽象队列…

通过多线程获取RV1126的AAC码流

目录 一RV1126多线程获取音频编码AAC码流的流程 1.1AI模块的初始化并使能 1.2AENC模块的初始化 ​​​​​​​1.3绑定AI模块和AENC模块 ​​​​​​​1.4多线程获取每一帧AAC码流 ​​​​​​​1.5每个AAC码流添加ADTSHeader头部 ​​​​​​​1.6写入具体每一帧AAC的…

java后端开发day27--常用API(二)正则表达式爬虫

&#xff08;以下内容全部来自上述课程&#xff09; 1.正则表达式&#xff08;regex&#xff09; 可以校验字符串是否满足一定的规则&#xff0c;并用来校验数据格式的合法性。 1.作用 校验字符串是否满足规则在一段文本中查找满足要求的内容 2.内容定义 ps&#xff1a;一…

Pytorch中的主要函数

目录 一、torch.manual_seed(seed)二、torch.cuda.manual_seed(seed)三、torch.rand(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)四、给大家写一个常用的自动选择电脑cuda 或者cpu 的小技巧五、torch.version.cuda&#xff1b;torch.bac…

基于PyTorch的深度学习3——基于autograd的反向传播

反向传播&#xff0c;可以理解为函数关系的反向传播。

设备管理系统功能与.NET+VUE(IVIEW)技术实现

在现代工业和商业环境中&#xff0c;设备管理系统&#xff08;Equipment Management System&#xff0c;简称EMS&#xff09;是确保设备高效运行和维护的关键工具。本文采用多租户设计的设备管理系统&#xff0c;基于.NET后端和VUE前端&#xff08;使用IVIEW UI框架&#xff09…

9-Agent大模型中工作流的使用方法分析

目录 关键词 摘要 速览 配置插件进行新闻内容查找的工作流设置 自动化调用用户输入变量的插件配置教程 配置大模型以整理并简要输出新闻内容 新闻内容总结功能调试与优化 搭建与发布工作流优化布局的流程详解 创建和配置智能体工作流程 调试页面与工作流配置演示 思…

记一次:泛微OA集成Mybatis后 insert/update执行成功,但未真正插入或修改数据

背景&#xff1a;通过Mybatis插入数据或更新数据&#xff0c;显示插入/更新成功&#xff0c;查询数据库&#xff0c;发现并未插入成功、数据也没更新成功。下面是Mapper文件 public interface TestOrmMapper {int insertByTest(Param("requestId") Integer requestI…

【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析

DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…

负载均衡 - 一致性hash算法

构建场景 假如我们有三台缓存服务器编号node0、node1、node2&#xff0c;现在有3000万个key&#xff0c;希望可以将这些个key均匀的缓存到三台机器上&#xff0c;你会想到什么方案呢&#xff1f; 我们可能首先想到的方案&#xff0c;是取模算法hash&#xff08;key&#xff0…

洛谷P1334

题目如下 思路&#xff1a; 每次选择最短的两块木板进行合并&#xff0c;直到只剩下一块木板。使用最小堆&#xff08;优先队列&#xff09;来实现这一过程。使用最小堆&#xff1a; 将所有木板的长度放入最小堆&#xff08;优先队列&#xff09; 每次从堆中取出两块最短的木…

总结(尚硅谷Vue3入门到实战,最新版vue3+TypeScript前端开发教程)

1.Vue简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece 1.1.性能的提升 打包大小减少41%。 初次渲染快55%, 更新渲染快133%。 内存减少54%。 1.2.源码的升级 使用Proxy代替defineProperty实现响应式。 重写虚拟DOM的实现和Tree-Shak…

【深度学习CV】【图像分类】从CNN(卷积神经网络)、ResNet迁移学习到GPU高效训练优化【案例代码】详解

摘要 本文分类使用的是resNet34,什么不用yolo v8&#xff0c;yolo v10系列,虽然他们也可以分类&#xff0c;因为yolo系列模型不纯粹&#xff0c;里面包含了目标检测的架构&#xff0c;所以分类使用的是resNet 本文详细介绍了三种不同的方法来训练卷积神经网络进行 CIFAR-10 图…

OPPO Find N5折叠手机:创新与实用的完美融合,FPC应用展现科技魅力【新立电子】

OPPO Find N5作为2025年新出世的折叠手机&#xff0c;以其卓越的设计、强大的性能以及创新的技术&#xff0c;为消费者带来了全新的使用体验。FPC&#xff08;柔性电路板&#xff09;在其中的运用&#xff0c;也进一步提升了手机的整体性能和用户体验。 OPPO Find N5的最大亮点…